1c91307af2622f6625525f3c1f9c954376df950adChia-chi Yeh/* 20a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * libjingle 30a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * Copyright 2004--2005, Google Inc. 40a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * 50a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * Redistribution and use in source and binary forms, with or without 60a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * modification, are permitted provided that the following conditions are met: 70a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * 80a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * 1. Redistributions of source code must retain the above copyright notice, 90a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * this list of conditions and the following disclaimer. 100a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * 2. Redistributions in binary form must reproduce the above copyright notice, 110a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * this list of conditions and the following disclaimer in the documentation 120a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * and/or other materials provided with the distribution. 130a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * 3. The name of the author may not be used to endorse or promote products 140a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * derived from this software without specific prior written permission. 150a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * 160a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 170a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 180a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 190a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 200a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 210a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 220a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 230a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 240a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 250a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 260a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang */ 270a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 280a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#ifndef TALK_XMPP_XMPPPUMP_H_ 290a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#define TALK_XMPP_XMPPPUMP_H_ 300a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 310a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "talk/base/messagequeue.h" 320a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "talk/base/taskrunner.h" 330a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "talk/base/thread.h" 340a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "talk/base/timeutils.h" 350a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "talk/xmpp/xmppclient.h" 360a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "talk/xmpp/xmppengine.h" 370a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#include "talk/xmpp/xmpptask.h" 380a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 39c91307af2622f6625525f3c1f9c954376df950adChia-chi Yehnamespace buzz { 40c91307af2622f6625525f3c1f9c954376df950adChia-chi Yeh 410a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang// Simple xmpp pump 420a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 430a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangclass XmppPumpNotify { 440a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangpublic: 450a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang virtual ~XmppPumpNotify() {} 460a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang virtual void OnStateChange(buzz::XmppEngine::State state) = 0; 470a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}; 480a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 490a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangclass XmppPump : public talk_base::MessageHandler, public talk_base::TaskRunner { 500a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangpublic: 510a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang XmppPump(buzz::XmppPumpNotify * notify = NULL); 520a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 530a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang buzz::XmppClient *client() { return client_; } 540a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 550a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang void DoLogin(const buzz::XmppClientSettings & xcs, 560a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang buzz::AsyncSocket* socket, 570a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang buzz::PreXmppAuth* auth); 580a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang void DoDisconnect(); 590a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 600a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang void OnStateChange(buzz::XmppEngine::State state); 610a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 620a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang void WakeTasks(); 630a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 640a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang int64 CurrentTime(); 650a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 660a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang void OnMessage(talk_base::Message *pmsg); 670a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 680a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang buzz::XmppReturnStatus SendStanza(const buzz::XmlElement *stanza); 690a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 700a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wangprivate: 710a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang buzz::XmppClient *client_; 720a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang buzz::XmppEngine::State state_; 730a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang buzz::XmppPumpNotify *notify_; 740a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang}; 750a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 760a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang} // namespace buzz 770a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 780a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang#endif // TALK_XMPP_XMPPPUMP_H_ 790a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang 800a1907d434839af6a9cb6329bbde60b237bf53dcChung-yih Wang