Remove static JID and std::string objects.
git-svn-id: http://libjingle.googlecode.com/svn/trunk@90 dd674b97-3498-5ee5-1854-bdd07cd0ff33
diff --git a/talk/base/sslidentity.cc b/talk/base/sslidentity.cc
index e8c222f..0cb52f1 100644
--- a/talk/base/sslidentity.cc
+++ b/talk/base/sslidentity.cc
@@ -55,11 +55,11 @@
namespace talk_base {
// From RFC 4572
-const std::string DIGEST_SHA_1 = "sha-1";
-const std::string DIGEST_SHA_224 = "sha-224";
-const std::string DIGEST_SHA_256 = "sha-256";
-const std::string DIGEST_SHA_384 = "sha-384";
-const std::string DIGEST_SHA_512 = "sha-512";
+const char DIGEST_SHA_1[] = "sha-1";
+const char DIGEST_SHA_224[] = "sha-224";
+const char DIGEST_SHA_256[] = "sha-256";
+const char DIGEST_SHA_384[] = "sha-384";
+const char DIGEST_SHA_512[] = "sha-512";
SSLCertificate* SSLCertificate::FromPEMString(const std::string& pem_string,
int* pem_length) {
diff --git a/talk/base/sslidentity.h b/talk/base/sslidentity.h
index a202523..37e3080 100644
--- a/talk/base/sslidentity.h
+++ b/talk/base/sslidentity.h
@@ -35,11 +35,11 @@
namespace talk_base {
// Definitions for the digest algorithms
-extern const std::string DIGEST_SHA_1;
-extern const std::string DIGEST_SHA_224;
-extern const std::string DIGEST_SHA_256;
-extern const std::string DIGEST_SHA_384;
-extern const std::string DIGEST_SHA_512;
+extern const char DIGEST_SHA_1[];
+extern const char DIGEST_SHA_224[];
+extern const char DIGEST_SHA_256[];
+extern const char DIGEST_SHA_384[];
+extern const char DIGEST_SHA_512[];
// Abstract interface overridden by SSL library specific
// implementations.
diff --git a/talk/examples/call/callclient.cc b/talk/examples/call/callclient.cc
index ee4cb0e..ab8de6a 100644
--- a/talk/examples/call/callclient.cc
+++ b/talk/examples/call/callclient.cc
@@ -834,9 +834,8 @@
domain = room_name.substr(room_name.find("@") + 1);
}
- buzz::MucRoomLookupTask* lookup_query_task =
- new buzz::MucRoomLookupTask(
- xmpp_client_, buzz::JID_GOOGLE_MUC_LOOKUP, room, domain);
+ buzz::MucRoomLookupTask* lookup_query_task = new buzz::MucRoomLookupTask(
+ xmpp_client_, buzz::Jid(buzz::STR_GOOGLE_MUC_LOOKUP_JID), room, domain);
lookup_query_task->SignalResult.connect(this,
&CallClient::OnRoomLookupResponse);
lookup_query_task->SignalError.connect(this,
diff --git a/talk/session/tunnel/securetunnelsessionclient.cc b/talk/session/tunnel/securetunnelsessionclient.cc
index 84ec5e0..71f38aa 100644
--- a/talk/session/tunnel/securetunnelsessionclient.cc
+++ b/talk/session/tunnel/securetunnelsessionclient.cc
@@ -44,15 +44,16 @@
// XML elements and namespaces for XMPP stanzas used in content exchanges.
-const std::string NS_SECURE_TUNNEL("http://www.google.com/talk/securetunnel");
-const buzz::QName QN_SECURE_TUNNEL_DESCRIPTION(NS_SECURE_TUNNEL,
- "description");
-const buzz::QName QN_SECURE_TUNNEL_TYPE(NS_SECURE_TUNNEL, "type");
-const buzz::QName QN_SECURE_TUNNEL_CLIENT_CERT(NS_SECURE_TUNNEL,
- "client-cert");
-const buzz::QName QN_SECURE_TUNNEL_SERVER_CERT(NS_SECURE_TUNNEL,
- "server-cert");
-const std::string CN_SECURE_TUNNEL("securetunnel");
+const char NS_SECURE_TUNNEL[] = "http://www.google.com/talk/securetunnel";
+const buzz::StaticQName QN_SECURE_TUNNEL_DESCRIPTION =
+ { NS_SECURE_TUNNEL, "description" };
+const buzz::StaticQName QN_SECURE_TUNNEL_TYPE =
+ { NS_SECURE_TUNNEL, "type" };
+const buzz::StaticQName QN_SECURE_TUNNEL_CLIENT_CERT =
+ { NS_SECURE_TUNNEL, "client-cert" };
+const buzz::StaticQName QN_SECURE_TUNNEL_SERVER_CERT =
+ { NS_SECURE_TUNNEL, "server-cert" };
+const char CN_SECURE_TUNNEL[] = "securetunnel";
// SecureTunnelContentDescription
diff --git a/talk/session/tunnel/tunnelsessionclient.cc b/talk/session/tunnel/tunnelsessionclient.cc
index 13d5c10..05cc757 100644
--- a/talk/session/tunnel/tunnelsessionclient.cc
+++ b/talk/session/tunnel/tunnelsessionclient.cc
@@ -39,10 +39,10 @@
namespace cricket {
-const std::string NS_TUNNEL("http://www.google.com/talk/tunnel");
-const buzz::QName QN_TUNNEL_DESCRIPTION(NS_TUNNEL, "description");
-const buzz::QName QN_TUNNEL_TYPE(NS_TUNNEL, "type");
-const std::string CN_TUNNEL("tunnel");
+const char NS_TUNNEL[] = "http://www.google.com/talk/tunnel";
+const buzz::StaticQName QN_TUNNEL_DESCRIPTION = { NS_TUNNEL, "description" };
+const buzz::StaticQName QN_TUNNEL_TYPE = { NS_TUNNEL, "type" };
+const char CN_TUNNEL[] = "tunnel";
enum {
MSG_CLOCK = 1,
diff --git a/talk/xmpp/constants.cc b/talk/xmpp/constants.cc
index 9f5215e..4cba871 100644
--- a/talk/xmpp/constants.cc
+++ b/talk/xmpp/constants.cc
@@ -40,8 +40,6 @@
// TODO: Remove static objects of complex types, particularly
// Jid and QName.
-const Jid JID_EMPTY(STR_EMPTY);
-
const char NS_CLIENT[] = "jabber:client";
const char NS_SERVER[] = "jabber:server";
const char NS_STREAM[] = "http://etherx.jabber.org/streams";
@@ -102,7 +100,7 @@
const char STR_UNAVAILABLE[] = "unavailable";
-const Jid JID_GOOGLE_MUC_LOOKUP("lookup.groupchat.google.com");
+const char STR_GOOGLE_MUC_LOOKUP_JID[] = "lookup.groupchat.google.com";
const char STR_MUC_ROOMCONFIG_ROOMNAME[] = "muc#roomconfig_roomname";
const char STR_MUC_ROOMCONFIG_FEATURES[] = "muc#roomconfig_features";
const char STR_MUC_ROOM_FEATURE_ENTERPRISE[] = "muc_enterprise";
diff --git a/talk/xmpp/constants.h b/talk/xmpp/constants.h
index 81e7f6e..c321940 100644
--- a/talk/xmpp/constants.h
+++ b/talk/xmpp/constants.h
@@ -34,8 +34,6 @@
namespace buzz {
-extern const Jid JID_EMPTY;
-
extern const char NS_CLIENT[];
extern const char NS_SERVER[];
extern const char NS_STREAM[];
@@ -96,7 +94,7 @@
extern const char STR_UNAVAILABLE[];
-extern const Jid JID_GOOGLE_MUC_LOOKUP;
+extern const char STR_GOOGLE_MUC_LOOKUP_JID[];
extern const char STR_MUC_ROOMCONFIG_ROOMNAME[];
extern const char STR_MUC_ROOMCONFIG_FEATURES[];
extern const char STR_MUC_ROOM_FEATURE_ENTERPRISE[];
diff --git a/talk/xmpp/hangoutpubsubclient.cc b/talk/xmpp/hangoutpubsubclient.cc
index 6cc383c..c678b7e 100644
--- a/talk/xmpp/hangoutpubsubclient.cc
+++ b/talk/xmpp/hangoutpubsubclient.cc
@@ -40,8 +40,8 @@
namespace buzz {
namespace {
-const std::string kPresenting = "s";
-const std::string kNotPresenting = "o";
+const char kPresenting[] = "s";
+const char kNotPresenting[] = "o";
} // namespace
diff --git a/talk/xmpp/jid.cc b/talk/xmpp/jid.cc
index 01a025f..638fd00 100644
--- a/talk/xmpp/jid.cc
+++ b/talk/xmpp/jid.cc
@@ -46,7 +46,7 @@
}
Jid::Jid(const std::string & jid_string) {
- if (jid_string == STR_EMPTY) {
+ if (jid_string.empty()) {
data_ = NULL;
return;
}
@@ -159,13 +159,20 @@
}
bool
+Jid::IsEmpty() const {
+ return data_ == NULL ||
+ (data_->node_name_.empty() && data_->domain_name_.empty() &&
+ data_->resource_name_.empty());
+}
+
+bool
Jid::IsValid() const {
return data_ != NULL && !data_->domain_name_.empty();
}
bool
Jid::IsBare() const {
- if (Compare(JID_EMPTY) == 0) {
+ if (IsEmpty()) {
LOG(LS_VERBOSE) << "Warning: Calling IsBare() on the empty jid";
return true;
}
diff --git a/talk/xmpp/jid.h b/talk/xmpp/jid.h
index 7db4d9e..dd10f97 100644
--- a/talk/xmpp/jid.h
+++ b/talk/xmpp/jid.h
@@ -24,8 +24,9 @@
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef _jid_h_
-#define _jid_h_
+
+#ifndef TALK_XMPP_JID_H_
+#define TALK_XMPP_JID_H_
#include <string>
#include "talk/base/basictypes.h"
@@ -83,6 +84,7 @@
std::string Str() const;
Jid BareJid() const;
+ bool IsEmpty() const;
bool IsValid() const;
bool IsBare() const;
bool IsFull() const;
@@ -125,15 +127,19 @@
class Data {
public:
Data() : refcount_(1) {}
- Data(const std::string & node, const std::string &domain, const std::string & resource) :
- node_name_(node),
- domain_name_(domain),
- resource_name_(resource),
- refcount_(1) {}
+ Data(const std::string & node, const std::string &domain,
+ const std::string & resource)
+ : node_name_(node),
+ domain_name_(domain),
+ resource_name_(resource),
+ refcount_(1) {
+ }
const std::string node_name_;
const std::string domain_name_;
const std::string resource_name_;
+ // TODO: ref-counter is not thread-safe here. Make it
+ // thread-safe or remove this optimization.
void AddRef() { refcount_++; }
void Release() { if (!--refcount_) delete this; }
private:
@@ -145,6 +151,4 @@
}
-
-
-#endif
+#endif // TALK_XMPP_JID_H_
diff --git a/talk/xmpp/xmppengineimpl.cc b/talk/xmpp/xmppengineimpl.cc
index 262c531..dd33956 100644
--- a/talk/xmpp/xmppengineimpl.cc
+++ b/talk/xmpp/xmppengineimpl.cc
@@ -56,13 +56,11 @@
stanzaParseHandler_(this),
stanzaParser_(&stanzaParseHandler_),
engine_entered_(0),
- user_jid_(JID_EMPTY),
password_(),
requested_resource_(STR_EMPTY),
tls_needed_(true),
login_task_(new XmppLoginTask(this)),
next_id_(0),
- bound_jid_(JID_EMPTY),
state_(STATE_START),
encrypted_(false),
error_code_(ERROR_NONE),
diff --git a/talk/xmpp/xmpptask.cc b/talk/xmpp/xmpptask.cc
index 60841d4..be32e55 100644
--- a/talk/xmpp/xmpptask.cc
+++ b/talk/xmpp/xmpptask.cc
@@ -115,7 +115,7 @@
XmlElement* result = new XmlElement(QN_IQ);
if (!type.empty())
result->AddAttr(QN_TYPE, type);
- if (to != JID_EMPTY)
+ if (!to.IsEmpty())
result->AddAttr(QN_TO, to.Str());
if (!id.empty())
result->AddAttr(QN_ID, id);
@@ -151,7 +151,7 @@
return true;
// We address the server as "", check if we are doing so here.
- if (to != JID_EMPTY)
+ if (!to.IsEmpty())
return false;
// It is legal for the server to identify itself with "domain" or