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

Side by Side Diff: third_party/libjingle_xmpp/xmpp/xmppclient.h

Issue 2443903004: Add xmllite and xmpp sources to third_party/ (Closed)
Patch Set: Explicitly use webrtc_overrides/webrtc/base/logging.h Created 3 years, 11 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 unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #ifndef WEBRTC_LIBJINGLE_XMPP_XMPPCLIENT_H_
12 #define WEBRTC_LIBJINGLE_XMPP_XMPPCLIENT_H_
13
14 #include <memory>
15 #include <string>
16
17 #include "third_party/libjingle_xmpp/xmpp/asyncsocket.h"
18 #include "third_party/libjingle_xmpp/xmpp/xmppclientsettings.h"
19 #include "third_party/libjingle_xmpp/xmpp/xmppengine.h"
20 #include "third_party/libjingle_xmpp/xmpp/xmpptask.h"
21 #include "third_party/webrtc/base/sigslot.h"
22 #include "third_party/webrtc/base/task.h"
23
24 namespace buzz {
25
26 class PreXmppAuth;
27 class CaptchaChallenge;
28
29 // Just some non-colliding number. Could have picked "1".
30 #define XMPP_CLIENT_TASK_CODE 0x366c1e47
31
32 /////////////////////////////////////////////////////////////////////
33 //
34 // XMPPCLIENT
35 //
36 /////////////////////////////////////////////////////////////////////
37 //
38 // See Task first. XmppClient is a parent task for XmppTasks.
39 //
40 // XmppClient is a task which is designed to be the parent task for
41 // all tasks that depend on a single Xmpp connection. If you want to,
42 // for example, listen for subscription requests forever, then your
43 // listener should be a task that is a child of the XmppClient that owns
44 // the connection you are using. XmppClient has all the utility methods
45 // that basically drill through to XmppEngine.
46 //
47 // XmppClient is just a wrapper for XmppEngine, and if I were writing it
48 // all over again, I would make XmppClient == XmppEngine. Why?
49 // XmppEngine needs tasks too, for example it has an XmppLoginTask which
50 // should just be the same kind of Task instead of an XmppEngine specific
51 // thing. It would help do certain things like GAIA auth cleaner.
52 //
53 /////////////////////////////////////////////////////////////////////
54
55 class XmppClient : public XmppTaskParentInterface,
56 public XmppClientInterface,
57 public sigslot::has_slots<>
58 {
59 public:
60 explicit XmppClient(rtc::TaskParent * parent);
61 virtual ~XmppClient();
62
63 XmppReturnStatus Connect(const XmppClientSettings & settings,
64 const std::string & lang,
65 AsyncSocket * socket,
66 PreXmppAuth * preauth);
67
68 virtual int ProcessStart();
69 virtual int ProcessResponse();
70 XmppReturnStatus Disconnect();
71
72 sigslot::signal1<XmppEngine::State> SignalStateChange;
73 XmppEngine::Error GetError(int *subcode);
74
75 // When there is a <stream:error> stanza, return the stanza
76 // so that they can be handled.
77 const XmlElement *GetStreamError();
78
79 // When there is an authentication error, we may have captcha info
80 // that the user can use to unlock their account
81 CaptchaChallenge GetCaptchaChallenge();
82
83 // When authentication is successful, this returns the service token
84 // (if we used GAIA authentication)
85 std::string GetAuthMechanism();
86 std::string GetAuthToken();
87
88 XmppReturnStatus SendRaw(const std::string & text);
89
90 XmppEngine* engine();
91
92 sigslot::signal2<const char *, int> SignalLogInput;
93 sigslot::signal2<const char *, int> SignalLogOutput;
94
95 // As XmppTaskParentIntreface
96 virtual XmppClientInterface* GetClient() { return this; }
97
98 // As XmppClientInterface
99 virtual XmppEngine::State GetState() const;
100 virtual const Jid& jid() const;
101 virtual std::string NextId();
102 virtual XmppReturnStatus SendStanza(const XmlElement *stanza);
103 virtual XmppReturnStatus SendStanzaError(const XmlElement * pelOriginal,
104 XmppStanzaError code,
105 const std::string & text);
106 virtual void AddXmppTask(XmppTask *, XmppEngine::HandlerLevel);
107 virtual void RemoveXmppTask(XmppTask *);
108
109 private:
110 friend class XmppTask;
111
112 void OnAuthDone();
113
114 // Internal state management
115 enum {
116 STATE_PRE_XMPP_LOGIN = STATE_NEXT,
117 STATE_START_XMPP_LOGIN = STATE_NEXT + 1,
118 };
119 int Process(int state) {
120 switch (state) {
121 case STATE_PRE_XMPP_LOGIN: return ProcessTokenLogin();
122 case STATE_START_XMPP_LOGIN: return ProcessStartXmppLogin();
123 default: return Task::Process(state);
124 }
125 }
126
127 std::string GetStateName(int state) const {
128 switch (state) {
129 case STATE_PRE_XMPP_LOGIN: return "PRE_XMPP_LOGIN";
130 case STATE_START_XMPP_LOGIN: return "START_XMPP_LOGIN";
131 default: return Task::GetStateName(state);
132 }
133 }
134
135 int ProcessTokenLogin();
136 int ProcessStartXmppLogin();
137 void EnsureClosed();
138
139 class Private;
140 friend class Private;
141 std::unique_ptr<Private> d_;
142
143 bool delivering_signal_;
144 bool valid_;
145 };
146
147 }
148
149 #endif // WEBRTC_LIBJINGLE_XMPP_XMPPCLIENT_H_
OLDNEW
« no previous file with comments | « third_party/libjingle_xmpp/xmpp/util_unittest.cc ('k') | third_party/libjingle_xmpp/xmpp/xmppclient.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698