15976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org/* 25976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * libjingle 35976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * Copyright 2004--2005, Google Inc. 45976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * 55976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * Redistribution and use in source and binary forms, with or without 65976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * modification, are permitted provided that the following conditions are met: 75976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * 85976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * 1. Redistributions of source code must retain the above copyright notice, 95976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * this list of conditions and the following disclaimer. 105976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * 2. Redistributions in binary form must reproduce the above copyright notice, 115976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * this list of conditions and the following disclaimer in the documentation 125976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * and/or other materials provided with the distribution. 135976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * 3. The name of the author may not be used to endorse or promote products 145976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * derived from this software without specific prior written permission. 155976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * 165976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 175976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 185976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 195976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 205976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 215976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 225976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 235976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 245976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 255976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 265976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org */ 275976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 285976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#ifndef TALK_EXAMPLES_CALL_CALLCLIENT_H_ 295976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#define TALK_EXAMPLES_CALL_CALLCLIENT_H_ 305976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 315976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include <map> 325976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include <string> 335976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include <vector> 345976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 355976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include "talk/base/scoped_ptr.h" 365976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include "talk/base/sslidentity.h" 375976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include "talk/examples/call/console.h" 385976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include "talk/media/base/mediachannel.h" 395976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include "talk/p2p/base/session.h" 405976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include "talk/session/media/mediamessages.h" 415976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include "talk/session/media/mediasessionclient.h" 425976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include "talk/xmpp/hangoutpubsubclient.h" 435976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include "talk/xmpp/presencestatus.h" 445976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#include "talk/xmpp/xmppclient.h" 455976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 465976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgnamespace buzz { 475976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass PresencePushTask; 485976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass PresenceOutTask; 495976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass MucInviteRecvTask; 505976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass MucInviteSendTask; 515976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass FriendInviteSendTask; 525976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass DiscoInfoQueryTask; 535976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass Muc; 545976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass PresenceStatus; 555976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass IqTask; 565976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass MucRoomConfigTask; 575976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass MucRoomLookupTask; 585976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass MucPresenceStatus; 595976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass XmlElement; 605976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass HangoutPubSubClient; 615976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgstruct AvailableMediaEntry; 625976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgstruct MucRoomInfo; 635976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org} // namespace buzz 645976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 655976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgnamespace talk_base { 665976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass Thread; 675976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass NetworkManager; 685976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org} // namespace talk_base 695976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 705976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgnamespace cricket { 715976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass PortAllocator; 725976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass MediaEngineInterface; 735976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass MediaSessionClient; 745976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass Call; 755976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass SessionManagerTask; 765976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgstruct CallOptions; 775976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgstruct MediaStreams; 785976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgstruct StreamParams; 795976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org} // namespace cricket 805976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 815976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgstruct RosterItem { 825976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org buzz::Jid jid; 835976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org buzz::PresenceStatus::Show show; 845976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org std::string status; 855976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org}; 865976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 875976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgstruct StaticRenderedView { 885976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org StaticRenderedView(const cricket::StaticVideoView& view, 895976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::VideoRenderer* renderer) : 905976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org view(view), 915976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org renderer(renderer) { 925976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org } 935976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 945976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::StaticVideoView view; 955976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::VideoRenderer* renderer; 965976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org}; 975976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 985976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org// Maintain a mapping of (session, ssrc) to rendered view. 995976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgtypedef std::map<std::pair<cricket::Session*, uint32>, 1005976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org StaticRenderedView> StaticRenderedViews; 1015976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1025976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.orgclass CallClient: public sigslot::has_slots<> { 1035976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org public: 1045976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org CallClient(buzz::XmppClient* xmpp_client, 1055976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const std::string& caps_node, 1065976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const std::string& version); 1075976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ~CallClient(); 1085976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1095976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::MediaSessionClient* media_client() const { return media_client_; } 1105976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SetMediaEngine(cricket::MediaEngineInterface* media_engine) { 1115976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org media_engine_ = media_engine; 1125976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org } 1135976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SetAutoAccept(bool auto_accept) { 1145976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org auto_accept_ = auto_accept; 1155976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org } 1165976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SetPmucDomain(const std::string &pmuc_domain) { 1175976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org pmuc_domain_ = pmuc_domain; 1185976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org } 1195976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SetRender(bool render) { 1205976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org render_ = render; 1215976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org } 1225976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SetDataChannelType(cricket::DataChannelType data_channel_type) { 1235976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org data_channel_type_ = data_channel_type; 1245976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org } 1255976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SetMultiSessionEnabled(bool multisession_enabled) { 1265976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org multisession_enabled_ = multisession_enabled; 1275976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org } 1285976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SetConsole(Console *console) { 1295976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org console_ = console; 1305976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org } 1315976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SetPriority(int priority) { 1325976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org my_status_.set_priority(priority); 1335976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org } 1345976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SendStatus() { 1355976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org SendStatus(my_status_); 1365976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org } 1375976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SendStatus(const buzz::PresenceStatus& status); 1385976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1395976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void ParseLine(const std::string &str); 1405976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1415976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SendChat(const std::string& to, const std::string msg); 1425976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SendData(const std::string& stream_name, 1435976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const std::string& text); 1445976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void InviteFriend(const std::string& user); 1455976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void JoinMuc(const buzz::Jid& room_jid); 1465976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void JoinMuc(const std::string& room_jid_str); 1475976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void LookupAndJoinMuc(const std::string& room_name); 1485976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void InviteToMuc(const std::string& user, const std::string& room); 1495976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org bool InMuc(); 1505976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const buzz::Jid* FirstMucJid(); 1515976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void LeaveMuc(const std::string& room); 1525976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SetNick(const std::string& muc_nick); 1535976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SetPortAllocatorFlags(uint32 flags) { portallocator_flags_ = flags; } 1545976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SetAllowLocalIps(bool allow_local_ips) { 1555976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org allow_local_ips_ = allow_local_ips; 1565976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org } 1575976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1585976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SetSignalingProtocol(cricket::SignalingProtocol protocol) { 1595976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org signaling_protocol_ = protocol; 1605976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org } 1615976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SetTransportProtocol(cricket::TransportProtocol protocol) { 1625976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org transport_protocol_ = protocol; 1635976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org } 1645976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SetSecurePolicy(cricket::SecurePolicy sdes_policy, 1655976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::SecurePolicy dtls_policy) { 1665976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org sdes_policy_ = sdes_policy; 1675976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org dtls_policy_ = dtls_policy; 1685976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org } 1695976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SetSslIdentity(talk_base::SSLIdentity* identity) { 1705976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org ssl_identity_.reset(identity); 1715976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org } 1725976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1735976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org typedef std::map<buzz::Jid, buzz::Muc*> MucMap; 1745976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1755976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const MucMap& mucs() const { 1765976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org return mucs_; 1775976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org } 1785976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1795976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SetShowRosterMessages(bool show_roster_messages) { 1805976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org show_roster_messages_ = show_roster_messages; 1815976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org } 1825976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1835976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org private: 1845976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void AddStream(uint32 audio_src_id, uint32 video_src_id); 1855976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void RemoveStream(uint32 audio_src_id, uint32 video_src_id); 1865976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnStateChange(buzz::XmppEngine::State state); 1875976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 1885976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void InitMedia(); 1895976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void InitPresence(); 1905976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void StartXmppPing(); 1915976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnPingTimeout(); 1925976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnRequestSignaling(); 1935976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnSessionCreate(cricket::Session* session, bool initiate); 1945976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnCallCreate(cricket::Call* call); 1955976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnCallDestroy(cricket::Call* call); 1965976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnSessionState(cricket::Call* call, 1975976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::Session* session, 1985976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::Session::State state); 1995976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnStatusUpdate(const buzz::PresenceStatus& status); 2005976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnMucInviteReceived(const buzz::Jid& inviter, const buzz::Jid& room, 2015976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const std::vector<buzz::AvailableMediaEntry>& avail); 2025976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnMucJoined(const buzz::Jid& endpoint); 2035976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnMucStatusUpdate(const buzz::Jid& jid, 2045976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const buzz::MucPresenceStatus& status); 2055976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnMucLeft(const buzz::Jid& endpoint, int error); 2065976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnPresenterStateChange(const std::string& nick, 2075976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org bool was_presenting, bool is_presenting); 2085976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnAudioMuteStateChange(const std::string& nick, 2095976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org bool was_muted, bool is_muted); 2105976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnRecordingStateChange(const std::string& nick, 2115976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org bool was_recording, bool is_recording); 2125976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnRemoteMuted(const std::string& mutee_nick, 2135976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const std::string& muter_nick, 2145976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org bool should_mute_locally); 2155976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnMediaBlocked(const std::string& blockee_nick, 2165976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const std::string& blocker_nick); 2175976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnHangoutRequestError(const std::string& node, 2185976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const buzz::XmlElement* stanza); 2195976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnHangoutPublishAudioMuteError(const std::string& task_id, 2205976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const buzz::XmlElement* stanza); 2215976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnHangoutPublishPresenterError(const std::string& task_id, 2225976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const buzz::XmlElement* stanza); 2235976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnHangoutPublishRecordingError(const std::string& task_id, 2245976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const buzz::XmlElement* stanza); 2255976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnHangoutRemoteMuteError(const std::string& task_id, 2265976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const std::string& mutee_nick, 2275976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const buzz::XmlElement* stanza); 2285976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnDevicesChange(); 2295976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnMediaStreamsUpdate(cricket::Call* call, 2305976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::Session* session, 2315976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const cricket::MediaStreams& added, 2325976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const cricket::MediaStreams& removed); 2335976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnSpeakerChanged(cricket::Call* call, 2345976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::Session* session, 2355976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const cricket::StreamParams& speaker_stream); 2365976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnRoomLookupResponse(buzz::MucRoomLookupTask* task, 2375976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const buzz::MucRoomInfo& room_info); 2385976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnRoomLookupError(buzz::IqTask* task, 2395976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const buzz::XmlElement* stanza); 2405976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnRoomConfigResult(buzz::MucRoomConfigTask* task); 2415976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnRoomConfigError(buzz::IqTask* task, 2425976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const buzz::XmlElement* stanza); 2435976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void OnDataReceived(cricket::Call*, 2445976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const cricket::ReceiveDataParams& params, 2455976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const talk_base::Buffer& payload); 2465976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org buzz::Jid GenerateRandomMucJid(); 2475976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2485976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org // Depending on |enable|, render (or don't) all the streams in |session|. 2495976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void RenderAllStreams(cricket::Call* call, 2505976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::Session* session, 2515976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org bool enable); 2525976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2535976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org // Depending on |enable|, render (or don't) the streams in |video_streams|. 2545976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void RenderStreams(cricket::Call* call, 2555976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::Session* session, 2565976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const std::vector<cricket::StreamParams>& video_streams, 2575976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org bool enable); 2585976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2595976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org // Depending on |enable|, render (or don't) the supplied |stream|. 2605976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void RenderStream(cricket::Call* call, 2615976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::Session* session, 2625976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org const cricket::StreamParams& stream, 2635976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org bool enable); 2645976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void AddStaticRenderedView( 2655976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::Session* session, 2665976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org uint32 ssrc, int width, int height, int framerate, 2675976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org int x_offset, int y_offset); 2685976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org bool RemoveStaticRenderedView(uint32 ssrc); 2695976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void RemoveCallsStaticRenderedViews(cricket::Call* call); 2705976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SendViewRequest(cricket::Call* call, cricket::Session* session); 2715976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org bool SelectFirstDesktopScreencastId(cricket::ScreencastId* screencastid); 2725976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2735976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org static const std::string strerror(buzz::XmppEngine::Error err); 2745976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2755976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void PrintRoster(); 2765976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org bool FindJid(const std::string& name, 2775976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org buzz::Jid* found_jid, 2785976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::CallOptions* options); 2795976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org bool PlaceCall(const std::string& name, cricket::CallOptions options); 2805976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org bool InitiateAdditionalSession(const std::string& name, 2815976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::CallOptions options); 2825976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void TerminateAndRemoveSession(cricket::Call* call, const std::string& id); 2835976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void PrintCalls(); 2845976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SwitchToCall(uint32 call_id); 2855976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void Accept(const cricket::CallOptions& options); 2865976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void Reject(); 2875976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void Quit(); 2885976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2895976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void GetDevices(); 2905976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void PrintDevices(const std::vector<std::string>& names); 2915976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2925976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SetVolume(const std::string& level); 2935976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2945976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::Session* GetFirstSession() { return sessions_[call_->id()][0]; } 2955976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void AddSession(cricket::Session* session) { 2965976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org sessions_[call_->id()].push_back(session); 2975976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org } 2985976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 2995976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void PrintStats() const; 3005976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org void SetupAcceptedCall(); 3015976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 3025976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org typedef std::map<std::string, RosterItem> RosterMap; 3035976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 3045976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org Console *console_; 3055976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org buzz::XmppClient* xmpp_client_; 3065976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org talk_base::Thread* worker_thread_; 3075976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org talk_base::NetworkManager* network_manager_; 3085976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::PortAllocator* port_allocator_; 3095976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::SessionManager* session_manager_; 3105976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::SessionManagerTask* session_manager_task_; 3115976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::MediaEngineInterface* media_engine_; 3125976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::DataEngineInterface* data_engine_; 3135976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::MediaSessionClient* media_client_; 3145976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org MucMap mucs_; 3155976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 3165976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::Call* call_; 3175976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org typedef std::map<uint32, std::vector<cricket::Session *> > SessionMap; 3185976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org SessionMap sessions_; 3195976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 3205976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org buzz::HangoutPubSubClient* hangout_pubsub_client_; 3215976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org bool incoming_call_; 3225976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org bool auto_accept_; 3235976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org std::string pmuc_domain_; 3245976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org bool render_; 3255976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::DataChannelType data_channel_type_; 3265976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org bool multisession_enabled_; 3275976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::VideoRenderer* local_renderer_; 3285976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org StaticRenderedViews static_rendered_views_; 3295976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org uint32 static_views_accumulated_count_; 3305976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org uint32 screencast_ssrc_; 3315976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 3325976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org buzz::PresenceStatus my_status_; 3335976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org buzz::PresencePushTask* presence_push_; 3345976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org buzz::PresenceOutTask* presence_out_; 3355976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org buzz::MucInviteRecvTask* muc_invite_recv_; 3365976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org buzz::MucInviteSendTask* muc_invite_send_; 3375976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org buzz::FriendInviteSendTask* friend_invite_send_; 3385976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org RosterMap* roster_; 3395976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org uint32 portallocator_flags_; 3405976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 3415976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org bool allow_local_ips_; 3425976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::SignalingProtocol signaling_protocol_; 3435976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::TransportProtocol transport_protocol_; 3445976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::SecurePolicy sdes_policy_; 3455976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org cricket::SecurePolicy dtls_policy_; 3465976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org talk_base::scoped_ptr<talk_base::SSLIdentity> ssl_identity_; 3475976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org std::string last_sent_to_; 3485976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 3495976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org bool show_roster_messages_; 3505976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org}; 3515976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org 3525976650443d68ccfadf1dea24999ee459dd2819mflodman@webrtc.org#endif // TALK_EXAMPLES_CALL_CALLCLIENT_H_ 353