| Index: webrtc/libjingle/xmpp/xmpppump.cc
|
| diff --git a/webrtc/libjingle/xmpp/xmpppump.cc b/webrtc/libjingle/xmpp/xmpppump.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..abd740639ada0f160726c5f12bbeb021298fefc4
|
| --- /dev/null
|
| +++ b/webrtc/libjingle/xmpp/xmpppump.cc
|
| @@ -0,0 +1,67 @@
|
| +/*
|
| + * Copyright 2004 The WebRTC Project Authors. All rights reserved.
|
| + *
|
| + * Use of this source code is governed by a BSD-style license
|
| + * that can be found in the LICENSE file in the root of the source
|
| + * tree. An additional intellectual property rights grant can be found
|
| + * in the file PATENTS. All contributing project authors may
|
| + * be found in the AUTHORS file in the root of the source tree.
|
| + */
|
| +
|
| +#include "webrtc/libjingle/xmpp/xmpppump.h"
|
| +
|
| +#include "webrtc/libjingle/xmpp/xmppauth.h"
|
| +
|
| +namespace buzz {
|
| +
|
| +XmppPump::XmppPump(XmppPumpNotify * notify) {
|
| + state_ = buzz::XmppEngine::STATE_NONE;
|
| + notify_ = notify;
|
| + client_ = new buzz::XmppClient(this); // NOTE: deleted by TaskRunner
|
| +}
|
| +
|
| +void XmppPump::DoLogin(const buzz::XmppClientSettings & xcs,
|
| + buzz::AsyncSocket* socket,
|
| + buzz::PreXmppAuth* auth) {
|
| + OnStateChange(buzz::XmppEngine::STATE_START);
|
| + if (!AllChildrenDone()) {
|
| + client_->SignalStateChange.connect(this, &XmppPump::OnStateChange);
|
| + client_->Connect(xcs, "", socket, auth);
|
| + client_->Start();
|
| + }
|
| +}
|
| +
|
| +void XmppPump::DoDisconnect() {
|
| + if (!AllChildrenDone())
|
| + client_->Disconnect();
|
| + OnStateChange(buzz::XmppEngine::STATE_CLOSED);
|
| +}
|
| +
|
| +void XmppPump::OnStateChange(buzz::XmppEngine::State state) {
|
| + if (state_ == state)
|
| + return;
|
| + state_ = state;
|
| + if (notify_ != NULL)
|
| + notify_->OnStateChange(state);
|
| +}
|
| +
|
| +void XmppPump::WakeTasks() {
|
| + rtc::Thread::Current()->Post(RTC_FROM_HERE, this);
|
| +}
|
| +
|
| +int64_t XmppPump::CurrentTime() {
|
| + return (int64_t)rtc::TimeMillis();
|
| +}
|
| +
|
| +void XmppPump::OnMessage(rtc::Message *pmsg) {
|
| + RunTasks();
|
| +}
|
| +
|
| +buzz::XmppReturnStatus XmppPump::SendStanza(const buzz::XmlElement *stanza) {
|
| + if (!AllChildrenDone())
|
| + return client_->SendStanza(stanza);
|
| + return buzz::XMPP_RETURN_BADSTATE;
|
| +}
|
| +
|
| +} // namespace buzz
|
| +
|
|
|