OpenSDN source code
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 <mutex>
9 
10 #include <boost/asio/ip/tcp.hpp>
11 #include <boost/ptr_container/ptr_map.hpp>
12 #include "io/ssl_server.h"
13 #include "io/ssl_session.h"
14 #include "xmpp/xmpp_config.h"
15 #include "xmpp/xmpp_connection.h"
17 #include "xmpp/xmpp_init.h"
18 
19 class LifetimeActor;
20 class LifetimeManager;
21 class XmppSession;
22 
23 // Class to represent Xmpp Client
25 public:
26  typedef boost::asio::ip::tcp::endpoint Endpoint;
27 
28  explicit XmppClient(EventManager *evm);
30  virtual ~XmppClient();
31 
32  void Shutdown();
33 
34  typedef boost::function<void(XmppChannelMux *, xmps::PeerState)>
39  size_t ConnectionEventCount() const;
40 
41  virtual TcpSession *CreateSession();
42  virtual bool Initialize(short port) ;
43 
45  XmppClientConnection *FindConnection(const std::string &address);
46  void InsertConnection(XmppClientConnection *connection);
47  void RemoveConnection(XmppClientConnection *connection);
48  size_t ConnectionCount() const;
49 
50  XmppChannel *FindChannel(const std::string &address);
51  void ConfigUpdate(const XmppConfigData *cfg);
53 
55  virtual LifetimeActor *deleter();
56  int SetDscpValue(uint8_t value, const char *conn_id);
57  uint32_t XmppTimeOut(const char *conn_id);
58  void UpdateTimeOut(uint8_t time_out, const char *conn_id);
59 
60 protected:
61  virtual SslSession *AllocSession(SslSocket *socket);
62 
63 private:
64  class DeleteActor;
65  friend class XmppSessionTest;
66  friend class XmppStreamMessageTest;
67  friend class DeleteActor;
68 
69  typedef std::map<Endpoint, XmppClientConnection *> ConnectionMap;
70  typedef std::map<xmps::PeerId, ConnectionEventCb> ConnectionEventCbMap;
71 
73  const XmppChannelConfig *current, const XmppChannelConfig *future);
74 
78 
79  boost::scoped_ptr<XmppConfigManager> config_mgr_;
80  boost::scoped_ptr<LifetimeManager> lifetime_manager_;
81  boost::scoped_ptr<DeleteActor> deleter_;
82 
85 
87 };
88 
89 #endif
boost::asio::ssl::stream< boost::asio::ip::tcp::socket > SslSocket
Definition: ssl_server.h:16
boost::asio::ip::tcp::endpoint Endpoint
Definition: xmpp_client.h:26
void Shutdown()
Definition: xmpp_client.cc:167
virtual bool Initialize(short port)
Definition: xmpp_client.cc:122
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
std::map< xmps::PeerId, ConnectionEventCb > ConnectionEventCbMap
Definition: xmpp_client.h:70
DISALLOW_COPY_AND_ASSIGN(XmppClient)
bool auth_enabled_
Definition: xmpp_client.h:83
int tcp_hold_time_
Definition: xmpp_client.h:84
XmppConfigManager * xmpp_config_mgr()
Definition: xmpp_client.h:52
void RemoveConnection(XmppClientConnection *connection)
Definition: xmpp_client.cc:261
virtual LifetimeActor * deleter()
Definition: xmpp_client.cc:127
friend class XmppStreamMessageTest
Definition: xmpp_client.h:66
size_t ConnectionCount() const
Definition: xmpp_client.cc:222
void ProcessConfigUpdate(XmppConfigManager::DiffType delta, const XmppChannelConfig *current, const XmppChannelConfig *future)
Definition: xmpp_client.cc:173
XmppClientConnection * CreateConnection(const XmppChannelConfig *config)
Definition: xmpp_client.cc:239
XmppChannel * FindChannel(const std::string &address)
Definition: xmpp_client.cc:269
virtual SslSession * AllocSession(SslSocket *socket)
Definition: xmpp_client.cc:226
size_t ConnectionEventCount() const
Definition: xmpp_client.cc:218
uint32_t XmppTimeOut(const char *conn_id)
Definition: xmpp_client.cc:289
boost::scoped_ptr< LifetimeManager > lifetime_manager_
Definition: xmpp_client.h:80
int SetDscpValue(uint8_t value, const char *conn_id)
Definition: xmpp_client.cc:274
boost::scoped_ptr< DeleteActor > deleter_
Definition: xmpp_client.h:81
void UnRegisterConnectionEvent(xmps::PeerId)
Definition: xmpp_client.cc:201
XmppClientConnection * FindConnection(const std::string &address)
Definition: xmpp_client.cc:231
boost::function< void(XmppChannelMux *, xmps::PeerState)> ConnectionEventCb
Definition: xmpp_client.h:35
ConnectionMap connection_map_
Definition: xmpp_client.h:75
virtual TcpSession * CreateSession()
Definition: xmpp_client.cc:135
void InsertConnection(XmppClientConnection *connection)
Definition: xmpp_client.cc:252
void ConfigUpdate(const XmppConfigData *cfg)
Definition: xmpp_client.cc:188
boost::scoped_ptr< XmppConfigManager > config_mgr_
Definition: xmpp_client.h:79
std::mutex connection_event_map_mutex_
Definition: xmpp_client.h:77
friend class DeleteActor
Definition: xmpp_client.h:67
friend class XmppSessionTest
Definition: xmpp_client.h:64
virtual ~XmppClient()
Definition: xmpp_client.cc:119
void RegisterConnectionEvent(xmps::PeerId, ConnectionEventCb)
Definition: xmpp_client.cc:195
std::map< Endpoint, XmppClientConnection * > ConnectionMap
Definition: xmpp_client.h:69
ConnectionEventCbMap connection_event_map_
Definition: xmpp_client.h:76
LifetimeManager * lifetime_manager()
Definition: xmpp_client.cc:131
XmppClient(EventManager *evm)
Definition: xmpp_client.cc:42
static EventManager evm