OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
bgp_session_manager.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #ifndef SRC_BGP_BGP_SESSION_MANAGER_H_
6 #define SRC_BGP_BGP_SESSION_MANAGER_H_
7 
8 #include <boost/asio/ip/tcp.hpp>
9 #include <boost/dynamic_bitset.hpp>
10 
11 #include "base/queue_task.h"
12 #include "base/address.h"
13 #include "io/tcp_server.h"
14 
15 class BgpPeer;
16 class BgpServer;
17 class BgpSession;
18 class TcpSession;
19 
20 class BgpSessionManager : public TcpServer {
21 public:
23  virtual ~BgpSessionManager();
24 
25  virtual TcpSession *CreateSession();
26  virtual bool Initialize(unsigned short port);
27  virtual bool Initialize(unsigned short port, const IpAddress &ip);
28  void Shutdown();
29  void Terminate();
30  bool MayDelete() const;
31 
32  void EnqueueWriteReady(BgpSession *session);
33 
34  BgpServer *server() { return server_; }
35 
36 protected:
37  virtual TcpSession *AllocSession(Socket *socket);
38  virtual bool AcceptSession(TcpSession *session);
39 
40 private:
41  friend class BgpServerUnitTest;
42 
43  BgpPeer *FindPeer(Endpoint remote);
44  bool ProcessSession(BgpSession *session);
45  bool ProcessWriteReady(TcpSessionPtr tcp_session);
46  void WorkQueueExitCallback(bool done);
47  size_t GetSessionQueueSize() const;
48  void SetSessionQueueDisable(bool disabled);
49 
53 
55 
57 };
58 
59 #endif // SRC_BGP_BGP_SESSION_MANAGER_H_
bool ProcessWriteReady(TcpSessionPtr tcp_session)
WorkQueue< BgpSession * > session_queue_
WorkQueue< TcpSessionPtr > write_ready_queue_
void WorkQueueExitCallback(bool done)
boost::asio::ip::tcp::socket Socket
Definition: tcp_server.h:31
boost::asio::ip::address IpAddress
Definition: address.h:13
boost::intrusive_ptr< HttpClientSession > TcpSessionPtr
Definition: http_curl.cc:105
virtual TcpSession * CreateSession()
BgpPeer * FindPeer(Endpoint remote)
DISALLOW_COPY_AND_ASSIGN(BgpSessionManager)
virtual bool AcceptSession(TcpSession *session)
virtual bool Initialize(unsigned short port)
size_t GetSessionQueueSize() const
BgpSessionManager(EventManager *evm, BgpServer *server)
bool ProcessSession(BgpSession *session)
virtual TcpSession * AllocSession(Socket *socket)
friend class BgpServerUnitTest
boost::asio::ip::tcp::endpoint Endpoint
Definition: tcp_server.h:30
void SetSessionQueueDisable(bool disabled)
void EnqueueWriteReady(BgpSession *session)
static EventManager evm