14 #include "rapidjson/document.h"
15 #include "rapidjson/stringbuffer.h"
16 #include "rapidjson/writer.h"
43 LOG (DEBUG,
"[NexthopServer] Client " << session->session_id() <<
60 if (*(*iter) == *nh) {
72 if (*(*iter) == *nh) {
83 contrail_rapidjson::StringBuffer s;
84 contrail_rapidjson::Writer <contrail_rapidjson::StringBuffer> writer(s);
94 if ((pdu_len + tnh->EncodedLength()) >
95 UnixDomainSocketSession::kPDUDataLen) {
99 writer.String((tnh->nexthop_string()).c_str());
100 writer.StartObject();
101 const char *action = (tnh->state() ==
103 writer.String(
"action");
104 writer.String(action);
107 pdu_len += tnh->EncodedLength();
119 const char *nhdata = s.GetString();
120 int nhlen = strlen(nhdata);
121 u_int8_t *out_data =
new u_int8_t[nhlen + 4];
122 out_data[0] = (
unsigned char) (nhlen >> 24);
123 out_data[1] = (
unsigned char) (nhlen >> 16);
124 out_data[2] = (
unsigned char) (nhlen >> 8);
125 out_data[3] = (
unsigned char) nhlen;
126 memcpy(&out_data[4], nhdata, nhlen);
127 *data_len = nhlen + 4;
134 uint8_t *data = NULL;
140 if (!data || !data_len) {
std::vector< NexthopDBEntry::NexthopPtr >::iterator NexthopListIterator
boost::shared_ptr< NexthopDBEntry > NexthopPtr
uint8_t * NextMessage(int *length)
void RemoveNexthop(NexthopDBEntry::NexthopPtr nh)
NexthopDBServer * server_
void EventHandler(UnixDomainSocketSession *, UnixDomainSocketSession::Event)
void AddNexthop(NexthopDBEntry::NexthopPtr nh)
#define LOG(_Level, _Msg)
bool FindNexthop(NexthopDBEntry::NexthopPtr nh)
NexthopList nexthop_list_
void RemoveClient(uint64_t)
NexthopDBClient(UnixDomainSocketSession *session, NexthopDBServer *server)
UnixDomainSocketSession * session_