13 #include "rapidjson/document.h"
14 #include "rapidjson/stringbuffer.h"
15 #include "rapidjson/writer.h"
18 const std::string &path)
19 : io_service_(io), endpoint_path_(path), nexthop_table_(), client_table_()
35 UnixDomainSocketSession * session,
38 tbb::mutex::scoped_lock lock(
mutex_);
39 if (event == UnixDomainSocketServer::NEW_SESSION) {
42 }
else if (event == UnixDomainSocketServer::DELETE_SESSION) {
61 cl->AddNexthop(iter->second);
66 LOG (DEBUG,
"[NexthopServer] New client: " << cl->session_->session_id());
72 LOG (DEBUG,
"[NexthopServer] Remove client " << session_id);
81 iter->second->WriteMessage();
90 iter->second->AddNexthop(nh);
97 tbb::mutex::scoped_lock lock (
mutex_);
121 tbb::mutex::scoped_lock lock(
mutex_);
138 if (!iter->second->FindNexthop(nh)) {
139 iter->second->AddNexthop(nh);
void AddClient(NexthopDBClient::ClientPtr cl)
boost::scoped_ptr< UnixDomainSocketServer > io_server_
boost::shared_ptr< NexthopDBEntry > NexthopPtr
void FindAndRemoveNexthop(const std::string &str)
void AddNexthop(NexthopDBEntry::NexthopPtr nh)
boost::shared_ptr< NexthopDBClient > ClientPtr
void EventHandler(UnixDomainSocketServer *, UnixDomainSocketSession *, UnixDomainSocketServer::Event)
std::map< uint64_t, NexthopDBClient::ClientPtr >::iterator ClientIterator
NexthopDBEntry::NexthopPtr FindOrCreateNexthop(const std::string &str)
void RemoveNexthop(NexthopDBEntry::NexthopPtr nh)
std::string endpoint_path_
boost::asio::io_context & io_service_
#define LOG(_Level, _Msg)
void RemoveClient(uint64_t)
std::map< std::string, NexthopDBEntry::NexthopPtr >::iterator NexthopIterator
NexthopDBServer(boost::asio::io_context &io, const std::string &path)