1f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch/* 2f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * libjingle 3f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * Copyright 2004--2005, Google Inc. 4f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * 5f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * Redistribution and use in source and binary forms, with or without 6f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * modification, are permitted provided that the following conditions are met: 7f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * 8f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * 1. Redistributions of source code must retain the above copyright notice, 9f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * this list of conditions and the following disclaimer. 10f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * 2. Redistributions in binary form must reproduce the above copyright notice, 11f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * this list of conditions and the following disclaimer in the documentation 12f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * and/or other materials provided with the distribution. 13f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * 3. The name of the author may not be used to endorse or promote products 14f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * derived from this software without specific prior written permission. 15f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * 16f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 17f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 18f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 19f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 21f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 22f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 23f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 24f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 25f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch */ 27f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 28f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#ifndef TALK_EXAMPLES_CALL_CALLCLIENT_H_ 29f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#define TALK_EXAMPLES_CALL_CALLCLIENT_H_ 30f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 31f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#include <map> 32f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#include <string> 33f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#include <vector> 34f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 35f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#include "talk/p2p/base/session.h" 36f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#include "talk/session/phone/mediachannel.h" 37dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "talk/session/phone/mediasessionclient.h" 38f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#include "talk/xmpp/xmppclient.h" 39f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#include "talk/examples/call/status.h" 40f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#include "talk/examples/call/console.h" 41f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 42f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochnamespace buzz { 43f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochclass PresencePushTask; 44f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochclass PresenceOutTask; 45f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochclass MucInviteRecvTask; 46f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochclass MucInviteSendTask; 47f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochclass FriendInviteSendTask; 48f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochclass VoicemailJidRequester; 49f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochclass DiscoInfoQueryTask; 50f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochclass Muc; 51f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochclass Status; 52f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochclass MucStatus; 53f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochstruct AvailableMediaEntry; 54f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch} 55f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 56f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochnamespace talk_base { 57f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochclass Thread; 58f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochclass NetworkManager; 59f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch} 60f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 61f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochnamespace cricket { 62f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochclass PortAllocator; 63f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochclass MediaEngine; 64f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochclass MediaSessionClient; 65f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochclass Receiver; 66f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochclass Call; 674a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdochstruct CallOptions; 68f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochclass SessionManagerTask; 69f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch} 70f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 71f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochstruct RosterItem { 72f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch buzz::Jid jid; 73f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch buzz::Status::Show show; 74f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch std::string status; 75f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch}; 76f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 77f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochclass NullRenderer; 78f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 79f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdochclass CallClient: public sigslot::has_slots<> { 80f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch public: 81f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch explicit CallClient(buzz::XmppClient* xmpp_client); 82f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch ~CallClient(); 83f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 84f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch cricket::MediaSessionClient* media_client() const { return media_client_; } 85f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void SetMediaEngine(cricket::MediaEngine* media_engine) { 86f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch media_engine_ = media_engine; 87f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch } 88f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void SetAutoAccept(bool auto_accept) { 89f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch auto_accept_ = auto_accept; 90f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch } 91f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void SetPmucDomain(const std::string &pmuc_domain) { 92dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen pmuc_domain_ = pmuc_domain; 93f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch } 94f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void SetConsole(Console *console) { 95f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch console_ = console; 96f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch } 97f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 98f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void ParseLine(const std::string &str); 99f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 1004a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void SendChat(const std::string& to, const std::string msg); 101f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void InviteFriend(const std::string& user); 102f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void JoinMuc(const std::string& room); 103f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void InviteToMuc(const std::string& user, const std::string& room); 104f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void LeaveMuc(const std::string& room); 105f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void SetPortAllocatorFlags(uint32 flags) { portallocator_flags_ = flags; } 1064a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void SetAllowLocalIps(bool allow_local_ips) { 1074a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch allow_local_ips_ = allow_local_ips; 1084a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 1094a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1104a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void SetInitialProtocol(cricket::SignalingProtocol initial_protocol) { 1114a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch initial_protocol_ = initial_protocol; 1124a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch } 1134a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 114dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen void SetSecurePolicy(cricket::SecureMediaPolicy secure_policy) { 115dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen secure_policy_ = secure_policy; 116dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen } 117dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen 118f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 119f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch typedef std::map<buzz::Jid, buzz::Muc*> MucMap; 120f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 121f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch const MucMap& mucs() const { 122f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch return mucs_; 123f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch } 124f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 125f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch private: 126f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void AddStream(uint32 audio_src_id, uint32 video_src_id); 127f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void RemoveStream(uint32 audio_src_id, uint32 video_src_id); 128f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void OnStateChange(buzz::XmppEngine::State state); 129f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 130f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void InitPhone(); 131f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void InitPresence(); 132f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void RefreshStatus(); 133f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void OnRequestSignaling(); 1344a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void OnSessionCreate(cricket::Session* session, bool initiate); 135f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void OnCallCreate(cricket::Call* call); 136f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void OnCallDestroy(cricket::Call* call); 137f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void OnSessionState(cricket::Call* call, 138f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch cricket::BaseSession* session, 139f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch cricket::BaseSession::State state); 140f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void OnStatusUpdate(const buzz::Status& status); 141f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void OnMucInviteReceived(const buzz::Jid& inviter, const buzz::Jid& room, 142f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch const std::vector<buzz::AvailableMediaEntry>& avail); 143f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void OnMucJoined(const buzz::Jid& endpoint); 144f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void OnMucStatusUpdate(const buzz::Jid& jid, const buzz::MucStatus& status); 145f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void OnMucLeft(const buzz::Jid& endpoint, int error); 146f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void OnDevicesChange(); 147f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void OnFoundVoicemailJid(const buzz::Jid& to, const buzz::Jid& voicemail); 148f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void OnVoicemailJidError(const buzz::Jid& to); 149f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 150f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch static const std::string strerror(buzz::XmppEngine::Error err); 151f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 152f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void PrintRoster(); 1534a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void MakeCallTo(const std::string& name, const cricket::CallOptions& options); 1544a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void PlaceCall(const buzz::Jid& jid, const cricket::CallOptions& options); 155f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void CallVoicemail(const std::string& name); 1564a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch void Accept(const cricket::CallOptions& options); 157f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void Reject(); 158f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void Quit(); 159f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 160f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void GetDevices(); 161f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void PrintDevices(const std::vector<std::string>& names); 162f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 163f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch void SetVolume(const std::string& level); 164f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 165f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch typedef std::map<std::string, RosterItem> RosterMap; 166f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 167f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch Console *console_; 168f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch buzz::XmppClient* xmpp_client_; 169f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch talk_base::Thread* worker_thread_; 170f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch talk_base::NetworkManager* network_manager_; 171dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen talk_base::PacketSocketFactory* socket_factory_; 172f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch cricket::PortAllocator* port_allocator_; 173f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch cricket::SessionManager* session_manager_; 174f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch cricket::SessionManagerTask* session_manager_task_; 175f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch cricket::MediaEngine* media_engine_; 176f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch cricket::MediaSessionClient* media_client_; 177f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch MucMap mucs_; 178f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 179f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch cricket::Call* call_; 180f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch cricket::BaseSession *session_; 181f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch bool incoming_call_; 182f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch bool auto_accept_; 183f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch std::string pmuc_domain_; 184f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch NullRenderer* local_renderer_; 185f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch NullRenderer* remote_renderer_; 186f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 187f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch buzz::Status my_status_; 188f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch buzz::PresencePushTask* presence_push_; 189f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch buzz::PresenceOutTask* presence_out_; 190f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch buzz::MucInviteRecvTask* muc_invite_recv_; 191f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch buzz::MucInviteSendTask* muc_invite_send_; 192f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch buzz::FriendInviteSendTask* friend_invite_send_; 193f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch RosterMap* roster_; 194f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch uint32 portallocator_flags_; 1954a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch 1964a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch bool allow_local_ips_; 1974a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch cricket::SignalingProtocol initial_protocol_; 198dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen cricket::SecureMediaPolicy secure_policy_; 1994a5e2dc747d50c653511c68ccb2cfbfb740bd5a7Ben Murdoch std::string last_sent_to_; 200f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch}; 201f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch 202f74420b3285b9fe04a7e00aa3b8c0ab07ea344bcBen Murdoch#endif // TALK_EXAMPLES_CALL_CALLCLIENT_H_ 203