OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
xmpp_client.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef __XMPP_CLIENT_H__
6 #define __XMPP_CLIENT_H__
7 
8 #include <boost/asio/ip/tcp.hpp>
9 #include <boost/ptr_container/ptr_map.hpp>
10 #include "io/ssl_server.h"
11 #include "io/ssl_session.h"
12 #include "xmpp/xmpp_config.h"
13 #include "xmpp/xmpp_connection.h"
15 #include "xmpp/xmpp_init.h"
16 
17 class LifetimeActor;
18 class LifetimeManager;
19 class XmppSession;
20 
21 // Class to represent Xmpp Client
23 public:
24  typedef boost::asio::ip::tcp::endpoint Endpoint;
25 
26  explicit XmppClient(EventManager *evm);
28  virtual ~XmppClient();
29 
30  void Shutdown();
31 
32  typedef boost::function<void(XmppChannelMux *, xmps::PeerState)>
37  size_t ConnectionEventCount() const;
38 
39  virtual TcpSession *CreateSession();
40  virtual bool Initialize(short port) ;
41 
43  XmppClientConnection *FindConnection(const std::string &address);
44  void InsertConnection(XmppClientConnection *connection);
45  void RemoveConnection(XmppClientConnection *connection);
46  size_t ConnectionCount() const;
47 
48  XmppChannel *FindChannel(const std::string &address);
49  void ConfigUpdate(const XmppConfigData *cfg);
51 
53  virtual LifetimeActor *deleter();
54  int SetDscpValue(uint8_t value, const char *conn_id);
55  uint32_t XmppTimeOut(const char *conn_id);
56  void UpdateTimeOut(uint8_t time_out, const char *conn_id);
57 
58 protected:
59  virtual SslSession *AllocSession(SslSocket *socket);
60 
61 private:
62  class DeleteActor;
63  friend class XmppSessionTest;
64  friend class XmppStreamMessageTest;
65  friend class DeleteActor;
66 
67  typedef std::map<Endpoint, XmppClientConnection *> ConnectionMap;
68  typedef std::map<xmps::PeerId, ConnectionEventCb> ConnectionEventCbMap;
69 
71  const XmppChannelConfig *current, const XmppChannelConfig *future);
72 
76 
77  boost::scoped_ptr<XmppConfigManager> config_mgr_;
78  boost::scoped_ptr<LifetimeManager> lifetime_manager_;
79  boost::scoped_ptr<DeleteActor> deleter_;
80 
83 
85 };
86 
87 #endif
virtual SslSession * AllocSession(SslSocket *socket)
Definition: xmpp_client.cc:226
friend class XmppStreamMessageTest
Definition: xmpp_client.h:64
int SetDscpValue(uint8_t value, const char *conn_id)
Definition: xmpp_client.cc:274
LifetimeManager * lifetime_manager()
Definition: xmpp_client.cc:131
void InsertConnection(XmppClientConnection *connection)
Definition: xmpp_client.cc:252
boost::function< void(XmppChannelMux *, xmps::PeerState)> ConnectionEventCb
Definition: xmpp_client.h:33
XmppClientConnection * FindConnection(const std::string &address)
Definition: xmpp_client.cc:231
virtual TcpSession * CreateSession()
Definition: xmpp_client.cc:135
XmppClient(EventManager *evm)
Definition: xmpp_client.cc:42
boost::scoped_ptr< XmppConfigManager > config_mgr_
Definition: xmpp_client.h:77
uint32_t XmppTimeOut(const char *conn_id)
Definition: xmpp_client.cc:289
XmppClientConnection * CreateConnection(const XmppChannelConfig *config)
Definition: xmpp_client.cc:239
size_t ConnectionCount() const
Definition: xmpp_client.cc:222
std::map< xmps::PeerId, ConnectionEventCb > ConnectionEventCbMap
Definition: xmpp_client.h:68
XmppConfigManager * xmpp_config_mgr()
Definition: xmpp_client.h:50
void ConfigUpdate(const XmppConfigData *cfg)
Definition: xmpp_client.cc:188
tbb::mutex connection_event_map_mutex_
Definition: xmpp_client.h:75
boost::asio::ssl::stream< boost::asio::ip::tcp::socket > SslSocket
Definition: ssl_server.h:16
void RemoveConnection(XmppClientConnection *connection)
Definition: xmpp_client.cc:261
void ProcessConfigUpdate(XmppConfigManager::DiffType delta, const XmppChannelConfig *current, const XmppChannelConfig *future)
Definition: xmpp_client.cc:173
virtual ~XmppClient()
Definition: xmpp_client.cc:119
void UnRegisterConnectionEvent(xmps::PeerId)
Definition: xmpp_client.cc:201
bool auth_enabled_
Definition: xmpp_client.h:81
ConnectionEventCbMap connection_event_map_
Definition: xmpp_client.h:74
std::map< Endpoint, XmppClientConnection * > ConnectionMap
Definition: xmpp_client.h:67
ConnectionMap connection_map_
Definition: xmpp_client.h:73
XmppChannel * FindChannel(const std::string &address)
Definition: xmpp_client.cc:269
boost::scoped_ptr< LifetimeManager > lifetime_manager_
Definition: xmpp_client.h:78
boost::asio::ip::tcp::endpoint Endpoint
Definition: xmpp_client.h:24
size_t ConnectionEventCount() const
Definition: xmpp_client.cc:218
boost::scoped_ptr< DeleteActor > deleter_
Definition: xmpp_client.h:79
void RegisterConnectionEvent(xmps::PeerId, ConnectionEventCb)
Definition: xmpp_client.cc:195
int tcp_hold_time_
Definition: xmpp_client.h:82
friend class XmppSessionTest
Definition: xmpp_client.h:62
void NotifyConnectionEvent(XmppChannelMux *, xmps::PeerState)
Definition: xmpp_client.cc:208
void UpdateTimeOut(uint8_t time_out, const char *conn_id)
Definition: xmpp_client.cc:282
void Shutdown()
Definition: xmpp_client.cc:167
virtual bool Initialize(short port)
Definition: xmpp_client.cc:122
virtual LifetimeActor * deleter()
Definition: xmpp_client.cc:127
static EventManager evm
DISALLOW_COPY_AND_ASSIGN(XmppClient)