5 #ifndef SRC_BFD_BFD_SERVER_H_
6 #define SRC_BFD_BFD_SERVER_H_
13 #include <boost/asio.hpp>
14 #include <boost/asio/ip/address.hpp>
15 #include <boost/scoped_ptr.hpp>
35 const boost::asio::ip::udp::endpoint &local_endpoint,
36 const boost::asio::ip::udp::endpoint &remote_endpoint,
38 const boost::asio::const_buffer &recv_buffer,
39 std::size_t bytes_transferred,
const boost::system::error_code& error);
Session * SessionByKey(const SessionKey &key)
std::map< SessionKey, Session * > KeySessionMap
ResultCode ConfigureSession(const SessionKey &key, const SessionConfig &config, Connection *communicator, Discriminator *assignedDiscriminator)
Discriminator GenerateUniqueDiscriminator()
Session * SessionByDiscriminator(Discriminator discriminator)
std::map< Session *, unsigned int > RefcountMap
DiscriminatorSessionMap by_discriminator_
SessionManager(EventManager *evm)
ResultCode RemoveSessionReference(const SessionKey &key)
std::map< Discriminator, Session * > DiscriminatorSessionMap
ResultCode ProcessControlPacketActual(const ControlPacket *packet)
bool EventCallback(Event *event)
SessionManager session_manager_
void DeleteClientSessions()
boost::scoped_ptr< WorkQueue< Event * > > event_queue_
void AddSession(const SessionKey &key, const SessionConfig &config, ChangeCb cb)
ResultCode ConfigureSession(const SessionKey &key, const SessionConfig &config, Discriminator *assignedDiscriminator)
Session * SessionByKey(const boost::asio::ip::address &address, const SessionIndex &index=SessionIndex())
Server(EventManager *evm, Connection *communicator)
Session * GetSession(const ControlPacket *packet)
Connection * communicator_
void EnqueueEvent(Event *event)
void DeleteSession(const SessionKey &key)
@ DELETE_CLIENT_CONNECTIONS
Connection * communicator() const
ResultCode RemoveSessionReference(const SessionKey &key)
WorkQueue< Event * > * event_queue()
void ProcessControlPacket(const boost::asio::ip::udp::endpoint &local_endpoint, const boost::asio::ip::udp::endpoint &remote_endpoint, const SessionIndex &session_index, const boost::asio::const_buffer &recv_buffer, std::size_t bytes_transferred, const boost::system::error_code &error)
boost::function< void(const SessionKey &key, const BFD::BFDState &state)> ChangeCb
std::set< SessionKey > Sessions
boost::asio::ip::udp::endpoint local_endpoint
Event(EventType type, const SessionKey &key, const SessionConfig &config, ChangeCb cb)
std::size_t bytes_transferred
Event(EventType type, const SessionKey &key)
const boost::asio::const_buffer recv_buffer
Event(EventType type, boost::asio::ip::udp::endpoint local_endpoint, boost::asio::ip::udp::endpoint remote_endpoint, const SessionIndex &session_index, const boost::asio::const_buffer &recv_buffer, std::size_t bytes_transferred)
boost::asio::ip::udp::endpoint remote_endpoint
const SessionIndex session_index