Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(405)

Unified Diff: remoting/jingle_glue/jingle_client.h

Issue 3167047: Jingle_glue bugfixes. (Closed)
Patch Set: - Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/jingle_glue/jingle_channel_unittest.cc ('k') | remoting/jingle_glue/jingle_client.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/jingle_glue/jingle_client.h
diff --git a/remoting/jingle_glue/jingle_client.h b/remoting/jingle_glue/jingle_client.h
index bac15d8ffc25f9b43129a905acd394ae79552bc9..9d7b844e96f334218d1cc6e0866f91bd5bac082e 100644
--- a/remoting/jingle_glue/jingle_client.h
+++ b/remoting/jingle_glue/jingle_client.h
@@ -7,6 +7,7 @@
#include <string>
+#include "base/waitable_event.h"
#include "remoting/jingle_glue/jingle_channel.h"
#include "third_party/libjingle/source/talk/xmpp/xmppclient.h"
@@ -36,8 +37,7 @@ class JingleClient : public base::RefCountedThreadSafe<JingleClient>,
public sigslot::has_slots<> {
public:
enum State {
- CREATED, // Initial state.
- INITIALIZED,
+ START, // Initial state.
CONNECTING,
CONNECTED,
CLOSED,
@@ -84,8 +84,10 @@ class JingleClient : public base::RefCountedThreadSafe<JingleClient>,
JingleChannel::Callback* callback);
// Closes XMPP connection and stops the thread. Must be called before the
- // object is destroyed.
+ // object is destroyed. If specified, |closed_task| is executed after the
+ // connection is successfully closed.
void Close();
+ void Close(Task* closed_task);
// Returns JID with resource ID. Empty string is returned if full JID is not
// known yet, i.e. authentication hasn't finished.
@@ -95,7 +97,7 @@ class JingleClient : public base::RefCountedThreadSafe<JingleClient>,
// is transfered to the caller.
virtual IqRequest* CreateIqRequest();
- // Current state of the client.
+ // Current connection state of the client.
State state() { return state_; }
// Returns XmppClient object for the xmpp connection or NULL if not connected.
@@ -106,6 +108,7 @@ class JingleClient : public base::RefCountedThreadSafe<JingleClient>,
private:
friend class HeartbeatSenderTest;
+ friend class JingleClientTest;
void OnConnectionStateChanged(buzz::XmppEngine::State state);
@@ -131,14 +134,24 @@ class JingleClient : public base::RefCountedThreadSafe<JingleClient>,
buzz::PreXmppAuth* CreatePreXmppAuth(
const buzz::XmppClientSettings& settings);
- buzz::XmppClient* client_;
+ // JingleThread used for the connection. Set in the constructor.
JingleThread* thread_;
- State state_;
+
+ // Callback for this object. Callback must not be called if closed_ == true.
Callback* callback_;
+ // The XmppClient and its state and jid.
+ buzz::XmppClient* client_;
+ State state_;
Lock full_jid_lock_;
std::string full_jid_;
+ // Current state of the object.
+ Lock state_lock_; // Must be locked when accessing initialized_ or closed_.
+ bool initialized_;
+ bool closed_;
+ scoped_ptr<Task> closed_task_;
+
scoped_ptr<talk_base::NetworkManager> network_manager_;
scoped_ptr<cricket::BasicPortAllocator> port_allocator_;
scoped_ptr<cricket::SessionManager> session_manager_;
« no previous file with comments | « remoting/jingle_glue/jingle_channel_unittest.cc ('k') | remoting/jingle_glue/jingle_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698