5 #include <sandesh/request_pipeline.h>
7 #include <boost/bind/bind.hpp>
8 #include <boost/assign/list_of.hpp>
19 #include "config_client_show_types.h"
31 #include "ifmap/ifmap_server_show_types.h"
32 #include "ifmap/ifmap_server_show_internal_types.h"
33 #include "ifmap/ifmap_log_types.h"
38 #include <pugixml/pugixml.hpp>
40 using namespace boost::assign;
43 using namespace boost::placeholders;
55 dest->node_name = src_node->
ToString();
64 dest->dbentryflags.append(
"No state, ");
68 dest->dbentryflags.append(
"Deleted, ");
71 dest->dbentryflags.append(
"OnList, ");
74 dest->dbentryflags.append(
"OnRemoveQ");
77 dest->obj_info.reserve(src_node->
list_.size());
78 for (IFMapNode::ObjectList::const_iterator iter =
79 src_node->
list_.begin(); iter != src_node->
list_.end(); ++iter) {
82 IFMapObjectShowInfo dest_obj;
85 dest_obj.data = GetIFMapObjectData(src_obj);
87 dest->obj_info.push_back(dest_obj);
91 int neighbor_count = 0;
93 src_node->
begin(graph); iter != src_node->
end(graph); ++iter) {
96 dest->neighbors.reserve(neighbor_count);
98 src_node->
begin(graph); iter != src_node->
end(graph); ++iter) {
100 dest->neighbors.push_back(adj->
ToString());
107 pugi::xml_document xdoc;
108 pugi::xml_node xnode = xdoc.append_child(
"iq");
113 string objdata = oss.str();
124 static const uint32_t kMaxElementsPerRound = 50;
140 static bool BufferStageCommon(
const IFMapTableShowReq *request,
142 const string &next_table_name,
143 const string &last_node_name);
144 static bool BufferStage(
const Sandesh *sr,
147 static bool BufferStageIterate(
const Sandesh *sr,
150 static void SendStageCommon(
const IFMapTableShowReq *request,
152 IFMapTableShowResp *response);
154 int stage,
int instNum,
156 static bool SendStageIterate(
const Sandesh *sr,
159 static bool TableToBuffer(
const IFMapTableShowReq *request,
161 const string &last_node_name,
162 ShowData *show_data, uint32_t page_limit);
163 static bool BufferAllTables(
const IFMapTableShowReq *req,
165 const string &next_table_name,
166 const string &last_node_name);
167 static bool BufferOneTable(
const IFMapTableShowReq *request,
169 const string &last_node_name);
170 static bool ConvertReqIterateToReq(
171 const IFMapTableShowReqIterate *req_iterate,
172 IFMapTableShowReq *req,
string *next_table_name,
173 string *last_node_name);
179 const string &last_node_name,
180 ShowData *show_data, uint32_t page_limit) {
182 if (last_node_name.length()) {
195 bool buffer_full =
false;
196 regex search_expr(request->get_search_string());
201 for (; src != NULL; src = partition->
GetNext(src)) {
206 IFMapNodeShowInfo dest;
227 const string &last_node_name) {
232 request->get_table_name());
235 uint32_t page_limit = GetPageLimit(sctx);
237 TableToBuffer(request, table, sctx->
ifmap_server(), last_node_name,
238 show_data, page_limit);
240 IFMAP_WARN(IFMapTblNotFound,
"Cant show/find table ",
241 request->get_table_name());
249 const string &next_table_name,
250 const string &last_node_name) {
253 string last_name = last_node_name;
257 if (next_table_name.empty()) {
264 uint32_t page_limit = GetPageLimit(sctx);
266 for (; iter != db->
end(); ++iter) {
267 if (iter->first.find(
"__ifmap__.") != 0) {
271 bool buffer_full = TableToBuffer(request, table, sctx->
ifmap_server(),
272 last_name, show_data, page_limit);
289 const IFMapTableShowReqIterate *req_iterate,
290 IFMapTableShowReq *req,
string *next_table_name,
291 string *last_node_name) {
294 req->set_context(req_iterate->context());
296 string node_info = req_iterate->get_node_info();
301 if (pos1 == string::npos) {
304 string table_name = node_info.substr(0, pos1);
308 if (pos2 == string::npos) {
311 string search_string = node_info.substr((pos1 + sep_size),
312 pos2 - (pos1 + sep_size));
316 if (pos3 == string::npos) {
319 *next_table_name = node_info.substr((pos2 + sep_size),
320 pos3 - (pos2 + sep_size));
323 *last_node_name = node_info.substr(pos3 + sep_size);
326 req->set_table_name(table_name);
327 req->set_search_string(search_string);
333 const string &next_table_name,
334 const string &last_node_name) {
336 if (request->get_table_name().length()) {
337 return BufferOneTable(request, data, last_node_name);
339 return BufferAllTables(request, data, next_table_name, last_node_name);
345 int stage,
int instNum,
347 const IFMapTableShowReq *request =
348 static_cast<const IFMapTableShowReq *
>(ps.
snhRequest_.get());
349 string next_table_name;
350 string last_node_name;
351 return BufferStageCommon(request, data, next_table_name, last_node_name);
356 int stage,
int instNum,
358 const IFMapTableShowReqIterate *request_iterate =
359 static_cast<const IFMapTableShowReqIterate *
>(ps.
snhRequest_.get());
361 string next_table_name;
362 string last_node_name;
363 IFMapTableShowReq *request =
new IFMapTableShowReq;
364 bool success = ConvertReqIterateToReq(request_iterate, request,
365 &next_table_name, &last_node_name);
367 BufferStageCommon(request, data, next_table_name, last_node_name);
375 IFMapTableShowResp *response) {
382 vector<IFMapNodeShowInfo> dest_buffer;
388 uint32_t page_limit = GetPageLimit(sctx);
389 if (dest_buffer.size() == page_limit) {
396 response->set_ifmap_db(dest_buffer);
397 response->set_next_batch(next_batch);
402 int stage,
int instNum,
404 const IFMapTableShowReq *request =
405 static_cast<const IFMapTableShowReq *
>(ps.
snhRequest_.get());
406 IFMapTableShowResp *response =
new IFMapTableShowResp;
407 SendStageCommon(request, ps, response);
409 response->set_context(request->context());
410 response->set_more(
false);
411 response->Response();
417 int stage,
int instNum,
419 const IFMapTableShowReqIterate *request_iterate =
420 static_cast<const IFMapTableShowReqIterate *
>(ps.
snhRequest_.get());
422 string next_table_name;
423 string last_node_name;
425 IFMapTableShowResp *response =
new IFMapTableShowResp;
426 IFMapTableShowReq *request =
new IFMapTableShowReq;
427 bool success = ConvertReqIterateToReq(request_iterate, request,
428 &next_table_name, &last_node_name);
430 SendStageCommon(request, ps, response);
433 response->set_context(request->context());
434 response->set_more(
false);
435 response->Response();
441 void IFMapTableShowReq::HandleRequest()
const {
459 ps.stages_ = list_of(s0)(s1)
460 .convert_to_container<vector<RequestPipeline::StageSpec> >();
464 void IFMapTableShowReqIterate::HandleRequest()
const {
482 ps.stages_ = list_of(s0)(s1)
483 .convert_to_container<vector<RequestPipeline::StageSpec> >();
491 static const uint32_t kMaxElementsPerRound = 50;
507 static bool IncludeLink(
DBEntryBase *src,
const string &search_string,
508 const regex &search_expr,
const string &metadata,
509 const regex &metadata_expr);
510 static void CopyNode(IFMapLinkShowInfo *dest,
DBEntryBase *src,
512 static bool BufferStageCommon(
const IFMapLinkTableShowReq *request,
514 const string &last_link_name);
515 static bool BufferStage(
const Sandesh *sr,
518 static bool BufferStageIterate(
const Sandesh *sr,
520 int stage,
int instNum,
522 static void SendStageCommon(
const IFMapLinkTableShowReq *request,
524 IFMapLinkTableShowResp *response);
526 int stage,
int instNum,
528 static bool SendStageIterate(
const Sandesh *sr,
531 static bool ConvertReqIterateToReq(
532 const IFMapLinkTableShowReqIterate *req_iterate,
533 IFMapLinkTableShowReq *req,
string *last_link_name);
537 const string &search_string,
538 const regex &search_expr,
539 const string &metadata,
540 const regex &metadata_expr) {
547 if (!search_string.empty() &&
566 if (src_link->
left()) {
569 if (src_link->
right()) {
579 dest->dbentryflags.append(
"No state, ");
583 dest->dbentryflags.append(
"Deleted, ");
586 dest->dbentryflags.append(
"OnList");
589 dest->dbentryflags.append(
"OnRemoveQ");
593 for (std::vector<IFMapLink::LinkOriginInfo>::const_iterator iter =
597 IFMapLinkOriginShowInfo dest_origin;
600 dest->origins.push_back(dest_origin);
610 const IFMapLinkTableShowReqIterate *req_iterate,
611 IFMapLinkTableShowReq *req,
string *last_link_name) {
614 req->set_context(req_iterate->context());
616 string link_info = req_iterate->get_link_info();
621 if (pos1 == string::npos) {
624 string search_string = link_info.substr(0, pos1);
628 if (pos2 == string::npos) {
631 string metadata = link_info.substr((pos1 + sep_size),
632 pos2 - (pos1 + sep_size));
635 *last_link_name = link_info.substr(pos2 + sep_size);
638 req->set_search_string(search_string);
639 req->set_metadata(metadata);
645 const string &last_link_name) {
646 bool buffer_full =
false;
653 regex search_expr(request->get_search_string());
654 regex metadata_expr(request->get_metadata());
656 uint32_t page_limit = GetPageLimit(sctx);
662 if (last_link_name.length()) {
667 for (; src != NULL; src = partition->
GetNext(src)) {
668 if (IncludeLink(src, request->get_search_string(), search_expr,
669 request->get_metadata(), metadata_expr)) {
670 IFMapLinkShowInfo dest;
674 uint32_t page_limit = GetPageLimit(sctx);
684 IFMAP_WARN(IFMapTblNotFound,
"Cant show/find ",
"link table");
692 int stage,
int instNum,
694 const IFMapLinkTableShowReq *request =
695 static_cast<const IFMapLinkTableShowReq *
>(ps.
snhRequest_.get());
696 string last_link_name;
697 BufferStageCommon(request, data, last_link_name);
703 int stage,
int instNum,
705 const IFMapLinkTableShowReqIterate *request_iterate =
706 static_cast<const IFMapLinkTableShowReqIterate *
>(ps.
snhRequest_.get());
708 IFMapLinkTableShowReq *request =
new IFMapLinkTableShowReq;
709 string last_link_name;
710 bool success = ConvertReqIterateToReq(request_iterate, request,
713 BufferStageCommon(request, data, last_link_name);
721 IFMapLinkTableShowResp *response) {
725 (prev_stage_data->at(0));
727 vector<IFMapLinkShowInfo> dest_buffer;
735 uint32_t page_limit = GetPageLimit(sctx);
736 if (dest_buffer.size() == page_limit) {
742 response->set_table_size(show_data.
table_size);
743 response->set_ifmap_db(dest_buffer);
744 response->set_next_batch(next_batch);
749 int stage,
int instNum,
751 const IFMapLinkTableShowReq *request =
752 static_cast<const IFMapLinkTableShowReq *
>(ps.
snhRequest_.get());
753 IFMapLinkTableShowResp *response =
new IFMapLinkTableShowResp;
754 SendStageCommon(request, ps, response);
756 response->set_context(request->context());
757 response->set_more(
false);
758 response->Response();
764 int stage,
int instNum,
766 const IFMapLinkTableShowReqIterate *request_iterate =
767 static_cast<const IFMapLinkTableShowReqIterate *
>(ps.
snhRequest_.get());
769 IFMapLinkTableShowResp *response =
new IFMapLinkTableShowResp;
770 IFMapLinkTableShowReq *request =
new IFMapLinkTableShowReq;
771 string last_link_name;
772 bool success = ConvertReqIterateToReq(request_iterate, request,
775 SendStageCommon(request, ps, response);
778 response->set_context(request->context());
779 response->set_more(
false);
780 response->Response();
786 void IFMapLinkTableShowReq::HandleRequest()
const {
804 ps.stages_ = list_of(s0)(s1)
805 .convert_to_container<vector<RequestPipeline::StageSpec> >();
809 void IFMapLinkTableShowReqIterate::HandleRequest()
const {
827 ps.stages_ = list_of(s0)(s1)
828 .convert_to_container\
829 <vector<RequestPipeline::StageSpec> >();
835 int stage,
int instNum,
837 const IFMapNodeShowReq *request =
838 static_cast<const IFMapNodeShowReq *
>(ps.
snhRequest_.get());
842 IFMapNodeShowResp *response =
new IFMapNodeShowResp();
844 string fq_node_name = request->get_fq_node_name();
846 size_t type_length = fq_node_name.find(
":");
847 if (type_length != string::npos) {
848 string node_type = fq_node_name.substr(0, type_length);
850 string node_name = fq_node_name.substr(type_length + 1);
857 IFMapNodeShowInfo dest;
859 response->set_node_info(dest);
861 IFMAP_WARN(IFMapIdentifierNotFound,
"Cant find identifier",
865 IFMAP_WARN(IFMapTblNotFound,
"Cant show/find table with node-type",
870 response->set_context(request->context());
871 response->set_more(
false);
872 response->Response();
878 void IFMapNodeShowReq::HandleRequest()
const {
888 ps.stages_ = list_of(s0)
889 .convert_to_container\
890 <vector<RequestPipeline::StageSpec> >();
896 static const uint32_t kMaxElementsPerRound = 50;
912 static bool ConvertReqIterateToReq(
913 const IFMapPerClientNodesShowReqIterate *req_iterate,
914 IFMapPerClientNodesShowReq *req,
string *next_table_name,
915 string *last_node_name);
916 static bool CopyNode(IFMapPerClientNodesShowInfo *dest,
IFMapNode *src,
918 static bool TableToBuffer(
const IFMapPerClientNodesShowReq *request,
920 const string &last_node_name,
int client_index,
921 ShowData *show_data);
922 static bool BufferStageCommon(
const IFMapPerClientNodesShowReq *request,
924 const string &next_table_name,
925 const string &last_node_name);
926 static bool BufferStage(
const Sandesh *sr,
929 static bool BufferStageIterate(
const Sandesh *sr,
931 int stage,
int instNum,
933 static void SendStageCommon(
const IFMapPerClientNodesShowReq *request,
935 IFMapPerClientNodesShowResp *response);
937 int stage,
int instNum,
939 static bool SendStageIterate(
const Sandesh *sr,
951 const IFMapPerClientNodesShowReqIterate *req_iterate,
952 IFMapPerClientNodesShowReq *req,
string *next_table_name,
953 string *last_node_name) {
956 req->set_context(req_iterate->context());
958 string node_info = req_iterate->get_node_info();
963 if (pos1 == string::npos) {
966 string client_index_or_name = node_info.substr(0, pos1);
970 if (pos2 == string::npos) {
973 string search_string = node_info.substr((pos1 + sep_size),
974 pos2 - (pos1 + sep_size));
978 if (pos3 == string::npos) {
981 *next_table_name = node_info.substr((pos2 + sep_size),
982 pos3 - (pos2 + sep_size));
985 *last_node_name = node_info.substr(pos3 + sep_size);
988 req->set_client_index_or_name(client_index_or_name);
989 req->set_search_string(search_string);
1009 dest->interest_tracked =
"Yes";
1011 dest->interest_tracked =
"No";
1014 dest->interest_tracked =
"No tracker";
1020 dest->advertised_tracked =
"Yes";
1022 dest->advertised_tracked =
"No";
1025 dest->advertised_tracked =
"No tracker";
1034 const IFMapPerClientNodesShowReq *request,
IFMapTable *table,
1035 IFMapServer *ifmap_server,
const string &last_node_name,
1036 int client_index,
ShowData *show_data) {
1039 if (last_node_name.length()) {
1052 bool buffer_full =
false;
1053 string search_string = request->get_search_string();
1058 for (; src != NULL; src = partition->
GetNext(src)) {
1060 if (!search_string.empty() &&
1061 (src_node->
ToString().find(search_string) == string::npos)) {
1064 IFMapPerClientNodesShowInfo dest;
1065 bool send = CopyNode(&dest, src_node, ifmap_server, client_index);
1074 if (show_data->
send_buffer.size() == page_limit) {
1090 const IFMapPerClientNodesShowReq *request,
1092 const string &last_node_name) {
1100 string client_index_or_name = request->get_client_index_or_name();
1109 string last_name = last_node_name;
1110 string search_string = request->get_search_string();
1114 if (next_table_name.empty()) {
1120 uint32_t page_limit = GetPageLimit(sctx);
1123 for (; iter != db->
end(); ++iter) {
1124 if (iter->first.find(
"__ifmap__.") != 0) {
1128 bool buffer_full = TableToBuffer(request, table, ifmap_server,
1129 last_name, client_index, show_data);
1142 int stage,
int instNum,
1144 const IFMapPerClientNodesShowReq *request =
1145 static_cast<const IFMapPerClientNodesShowReq *
>(ps.
snhRequest_.get());
1148 if (request->get_client_index_or_name().empty()) {
1152 string next_table_name;
1153 string last_node_name;
1154 return BufferStageCommon(request, data, next_table_name, last_node_name);
1160 const IFMapPerClientNodesShowReqIterate *request_iterate =
1161 static_cast<const IFMapPerClientNodesShowReqIterate *
>
1164 string next_table_name;
1165 string last_node_name;
1166 IFMapPerClientNodesShowReq *request =
new IFMapPerClientNodesShowReq;
1167 bool success = ConvertReqIterateToReq(request_iterate, request,
1168 &next_table_name, &last_node_name);
1170 BufferStageCommon(request, data, next_table_name, last_node_name);
1177 const IFMapPerClientNodesShowReq *request,
1179 IFMapPerClientNodesShowResp *response) {
1183 (prev_stage_data->at(0));
1185 vector<IFMapPerClientNodesShowInfo> dest_buffer;
1193 uint32_t page_limit = GetPageLimit(sctx);
1194 if (dest_buffer.size() == page_limit) {
1201 response->set_node_db(dest_buffer);
1202 response->set_next_batch(next_batch);
1207 int stage,
int instNum,
1209 const IFMapPerClientNodesShowReq *request =
1210 static_cast<const IFMapPerClientNodesShowReq *
>(ps.
snhRequest_.get());
1211 IFMapPerClientNodesShowResp *response =
new IFMapPerClientNodesShowResp;
1212 SendStageCommon(request, ps, response);
1214 response->set_context(request->context());
1215 response->set_more(
false);
1216 response->Response();
1223 const IFMapPerClientNodesShowReqIterate *request_iterate =
1224 static_cast<const IFMapPerClientNodesShowReqIterate *
>
1227 string next_table_name;
1228 string last_node_name;
1230 IFMapPerClientNodesShowResp *response =
new IFMapPerClientNodesShowResp;
1231 IFMapPerClientNodesShowReq *request =
new IFMapPerClientNodesShowReq;
1232 bool success = ConvertReqIterateToReq(request_iterate, request,
1233 &next_table_name, &last_node_name);
1235 SendStageCommon(request, ps, response);
1238 response->set_context(request->context());
1239 response->set_more(
false);
1240 response->Response();
1246 void IFMapPerClientNodesShowReq::HandleRequest()
const {
1264 ps.stages_ = list_of(s0)(s1)
1265 .convert_to_container\
1266 <vector<RequestPipeline::StageSpec> >();
1270 void IFMapPerClientNodesShowReqIterate::HandleRequest()
const {
1288 ps.stages_ = list_of(s0)(s1)
1289 .convert_to_container\
1290 <vector<RequestPipeline::StageSpec> >();
1296 static const uint32_t kMaxElementsPerRound = 50;
1302 static bool HandleRequest(
const Sandesh *sr,
1304 int stage,
int instNum,
1306 static bool HandleRequestIterate(
const Sandesh *sr,
1308 int stage,
int instNum,
1310 static bool ConvertReqIterateToReq(
1311 const IFMapPerClientLinksShowReqIterate *req_iterate,
1312 IFMapPerClientLinksShowReq *req,
string *last_node_name);
1313 static bool SkipLink(
IFMapLink *src,
const string &search_string);
1314 static bool CopyNode(IFMapPerClientLinksShowInfo *dest,
IFMapLink *src,
1316 static void BufferTable(
const IFMapPerClientLinksShowReq *request,
1317 const string &last_link_name,
1318 IFMapPerClientLinksShowResp *response);
1339 dest->interest_tracked =
"Yes";
1341 dest->interest_tracked =
"No";
1344 dest->interest_tracked =
"No tracker";
1350 dest->advertised_tracked =
"Yes";
1352 dest->advertised_tracked =
"No";
1355 dest->advertised_tracked =
"No tracker";
1364 const string &search_string) {
1365 if (search_string.empty()) {
1372 if ((src_link->
metadata().find(search_string) == string::npos) &&
1373 (!left || (left->
ToString().find(search_string) == string::npos)) &&
1374 (!right || (right->
ToString().find(search_string) == string::npos))) {
1386 const IFMapPerClientLinksShowReqIterate *req_iterate,
1387 IFMapPerClientLinksShowReq *req,
string *last_node_name) {
1390 req->set_context(req_iterate->context());
1392 string node_info = req_iterate->get_link_info();
1397 if (pos1 == string::npos) {
1400 string client_index_or_name = node_info.substr(0, pos1);
1404 if (pos2 == string::npos) {
1407 string search_string = node_info.substr((pos1 + sep_size),
1408 pos2 - (pos1 + sep_size));
1411 *last_node_name = node_info.substr(pos2 + sep_size);
1414 req->set_client_index_or_name(client_index_or_name);
1415 req->set_search_string(search_string);
1420 const IFMapPerClientLinksShowReq *request,
const string &last_link_name,
1421 IFMapPerClientLinksShowResp *response) {
1425 string client_index_or_name = request->get_client_index_or_name();
1426 if (client_index_or_name.empty()) {
1443 uint32_t page_limit = GetPageLimit(sctx);
1445 vector<IFMapPerClientLinksShowInfo> dest_buffer;
1446 dest_buffer.reserve(page_limit);
1450 if (last_link_name.length()) {
1455 for (; src != NULL; src = partition->
GetNext(src)) {
1457 if (SkipLink(src_link, request->get_search_string())) {
1460 IFMapPerClientLinksShowInfo dest;
1461 bool send = CopyNode(&dest, src_link, sctx->
ifmap_server(),
1464 dest_buffer.push_back(dest);
1465 if (dest_buffer.size() == page_limit) {
1466 string next_batch = request->get_client_index_or_name() +
1469 response->set_next_batch(next_batch);
1474 response->set_link_db(dest_buffer);
1476 IFMAP_WARN(IFMapTblNotFound,
"Cant show/find ",
"link table");
1483 const IFMapPerClientLinksShowReq *request =
1484 static_cast<const IFMapPerClientLinksShowReq *
>(ps.
snhRequest_.get());
1486 string last_link_name;
1487 IFMapPerClientLinksShowResp *response =
new IFMapPerClientLinksShowResp();
1488 BufferTable(request, last_link_name, response);
1490 response->set_context(request->context());
1491 response->set_more(
false);
1492 response->Response();
1501 const IFMapPerClientLinksShowReqIterate *request_iterate =
1502 static_cast<const IFMapPerClientLinksShowReqIterate *
>
1505 string last_link_name;
1506 IFMapPerClientLinksShowReq *request =
new IFMapPerClientLinksShowReq();
1507 IFMapPerClientLinksShowResp *response =
new IFMapPerClientLinksShowResp();
1508 bool success = ConvertReqIterateToReq(request_iterate, request,
1511 BufferTable(request, last_link_name, response);
1514 response->set_context(request->context());
1515 response->set_more(
false);
1516 response->Response();
1523 void IFMapPerClientLinksShowReq::HandleRequest()
const {
1532 ps.stages_ = list_of(s0)
1533 .convert_to_container\
1534 <vector<RequestPipeline::StageSpec> >();
1538 void IFMapPerClientLinksShowReqIterate::HandleRequest()
const {
1547 ps.stages_ = list_of(s0)
1548 .convert_to_container\
1549 <vector<RequestPipeline::StageSpec> >();
1555 static const int kMaxElementsPerRound = 50;
1561 static bool ProcessRequestCommon(
const IFMapUuidToNodeMappingReq *req,
1562 const string &last_uuid);
1564 static bool ProcessRequest(
1568 static bool ProcessRequestIterate(
1574 const IFMapUuidToNodeMappingReq *req,
const string &last_uuid) {
1577 uint32_t page_limit = GetPageLimit(sctx);
1581 vector<IFMapUuidToNodeMappingEntry> dest_buffer;
1582 IFMapUuidMapper::UuidNodeMap::const_iterator iter;
1583 if (last_uuid.size()) {
1588 for (uint32_t iter_count = 0; (iter_count != page_limit) &&
1589 (iter != uuid_mapper.
uuid_node_map_.end()); iter++, iter_count++) {
1590 IFMapUuidToNodeMappingEntry dest;
1591 dest.set_uuid(iter->first);
1593 dest.set_node_name(node->
ToString());
1594 dest_buffer.push_back(dest);
1597 IFMapUuidToNodeMappingResp *response =
new IFMapUuidToNodeMappingResp();
1598 response->set_map_count(dest_buffer.size());
1599 response->set_uuid_to_node_map(dest_buffer);
1601 response->set_next_batch(dest_buffer.back().get_uuid());
1603 response->set_context(req->context());
1604 response->set_more(
false);
1605 response->Response();
1612 const IFMapUuidToNodeMappingReqIterate *request_iterate =
1613 static_cast<const IFMapUuidToNodeMappingReqIterate *
>
1615 IFMapUuidToNodeMappingReq *request =
new IFMapUuidToNodeMappingReq;
1616 request->set_context(request_iterate->context());
1617 string last_uuid = request_iterate->get_uuid_info();
1618 ProcessRequestCommon(request, last_uuid);
1626 const IFMapUuidToNodeMappingReq *request =
1627 static_cast<const IFMapUuidToNodeMappingReq *
>(ps.
snhRequest_.get());
1629 ProcessRequestCommon(request, last_uuid);
1634 void IFMapUuidToNodeMappingReq::HandleRequest()
const {
1644 ps.stages_ = boost::assign::list_of(s0)
1645 .convert_to_container<vector<RequestPipeline::StageSpec> >();
1649 void IFMapUuidToNodeMappingReqIterate::HandleRequest()
const {
1659 ps.stages_ = boost::assign::list_of(s0)
1660 .convert_to_container<vector<RequestPipeline::StageSpec> >();
1666 static const int kMaxElementsPerRound = 50;
1672 static bool ProcessRequestCommon(
const IFMapNodeToUuidMappingReq *req,
1673 const string &last_uuid);
1675 static bool ProcessRequest(
1679 static bool ProcessRequestIterate(
1685 const IFMapNodeToUuidMappingReq *req,
const string &last_uuid) {
1688 uint32_t page_limit = GetPageLimit(sctx);
1692 vector<IFMapNodeToUuidMappingEntry> dest_buffer;
1693 IFMapVmUuidMapper::NodeUuidMap::const_iterator iter;
1694 if (last_uuid.size()) {
1701 for (uint32_t iter_count = 0; (iter_count != page_limit) &&
1703 IFMapNodeToUuidMappingEntry dest;
1704 node =
static_cast<IFMapNode *
>(iter->first);
1705 dest.set_node_name(node->
ToString());
1706 dest.set_uuid(iter->second);
1707 dest_buffer.push_back(dest);
1709 IFMapNodeToUuidMappingResp *response =
new IFMapNodeToUuidMappingResp();
1710 response->set_map_count(dest_buffer.size());
1711 response->set_node_to_uuid_map(dest_buffer);
1713 string next_batch = iter->second;
1714 response->set_next_batch(next_batch);
1716 response->set_context(req->context());
1717 response->set_more(
false);
1718 response->Response();
1725 const IFMapNodeToUuidMappingReqIterate *request_iterate =
1726 static_cast<const IFMapNodeToUuidMappingReqIterate
1728 IFMapNodeToUuidMappingReq *request =
new IFMapNodeToUuidMappingReq;
1729 request->set_context(request_iterate->context());
1730 string last_uuid = request_iterate->get_uuid_info();
1731 ProcessRequestCommon(request, last_uuid);
1739 const IFMapNodeToUuidMappingReq *request =
1740 static_cast<const IFMapNodeToUuidMappingReq *
>(ps.
snhRequest_.get());
1742 ProcessRequestCommon(request, last_uuid);
1746 void IFMapNodeToUuidMappingReq::HandleRequest()
const {
1756 ps.stages_ = boost::assign::list_of(s0)
1757 .convert_to_container<vector<RequestPipeline::StageSpec> >();
1761 void IFMapNodeToUuidMappingReqIterate::HandleRequest()
const {
1771 ps.stages_ = boost::assign::list_of(s0)
1772 .convert_to_container<vector<RequestPipeline::StageSpec> >();
1778 static const int kMaxElementsPerRound = 50;
1797 vector<IFMapPendingVmRegEntry>::const_iterator
first;
1804 static bool BufferStage(
const Sandesh *sr,
1808 int stage,
int instNum,
1814 int stage,
int instNum,
1816 const IFMapPendingVmRegReq *request =
1817 static_cast<const IFMapPendingVmRegReq *
>(ps.
snhRequest_.get());
1825 for (IFMapVmUuidMapper::PendingVmRegMap::const_iterator iter =
1828 IFMapPendingVmRegEntry dest;
1829 dest.set_vm_uuid(iter->first);
1830 dest.set_vr_name(iter->second);
1840 int stage,
int instNum,
1845 (prev_stage_data->at(0));
1849 vector<IFMapPendingVmRegEntry> dest_buffer;
1850 vector<IFMapPendingVmRegEntry>::const_iterator first, last;
1853 if (tracker_data->
init) {
1855 tracker_data->
init = 0;
1857 first = tracker_data->
first;
1859 int rem_num = show_data.
send_buffer.end() - first;
1860 const IFMapPendingVmRegReq *request =
1861 static_cast<const IFMapPendingVmRegReq *
>(ps.
snhRequest_.get());
1864 uint32_t page_limit = GetPageLimit(sctx);
1865 int send_num = (rem_num < (int)page_limit) ? rem_num : (int)page_limit;
1866 last = first + send_num;
1867 copy(first, last, back_inserter(dest_buffer));
1869 if ((rem_num - send_num) > 0) {
1874 IFMapPendingVmRegResp *response =
new IFMapPendingVmRegResp();
1875 response->set_map_count(dest_buffer.size());
1876 response->set_vm_reg_map(dest_buffer);
1877 response->set_context(request->context());
1878 response->set_more(more);
1879 response->Response();
1880 tracker_data->
first = first + send_num;
1886 void IFMapPendingVmRegReq::HandleRequest()
const {
1905 ps.stages_ = list_of(s0)(s1)
1906 .convert_to_container<vector<RequestPipeline::StageSpec> >();
1913 const IFMapServerClientShowReq *request =
1914 static_cast<const IFMapServerClientShowReq *
>(ps.
snhRequest_.get());
1918 IFMapServerClientShowResp *response =
new IFMapServerClientShowResp();
1919 string search_string = request->get_search_string();
1921 IFMapServerShowClientMap name_list;
1923 IFMapServerShowIndexMap index_list;
1925 IFMapServerClientHistoryList history_list;
1928 response->set_name_list(name_list);
1929 response->set_index_list(index_list);
1930 response->set_history_list(history_list);
1931 response->set_context(request->context());
1932 response->set_more(
false);
1933 response->Response();
1939 void IFMapServerClientShowReq::HandleRequest()
const {
1949 ps.stages_ = boost::assign::list_of(s0)
1950 .convert_to_container<vector<RequestPipeline::StageSpec> >();
1957 const IFMapNodeTableListShowReq *request =
1958 static_cast<const IFMapNodeTableListShowReq *
>(ps.
snhRequest_.get());
1962 vector<IFMapNodeTableListShowEntry> dest_buffer;
1966 IFMapNodeTableListShowResp *response =
new IFMapNodeTableListShowResp();
1967 response->set_table_list(dest_buffer);
1968 response->set_context(request->context());
1969 response->set_more(
false);
1970 response->Response();
1976 void IFMapNodeTableListShowReq::HandleRequest()
const {
1986 ps.stages_ = boost::assign::list_of(s0)
1987 .convert_to_container<vector<RequestPipeline::StageSpec> >();
1993 static const uint32_t kMaxElementsPerRound = 50;
2007 static bool BufferStageCommon(
const ConfigDBUUIDCacheReq *request,
2009 const string &last_uuid);
2010 static bool BufferStage(
const Sandesh *sr,
2013 static bool BufferStageIterate(
const Sandesh *sr,
2016 static void SendStageCommon(
const ConfigDBUUIDCacheReq *request,
2018 ConfigDBUUIDCacheResp *response);
2020 int stage,
int instNum,
2022 static bool SendStageIterate(
const Sandesh *sr,
2025 static bool SortList(
const ConfigDBUUIDCacheEntry &lhs,
2026 const ConfigDBUUIDCacheEntry &rhs);
2027 static bool ConvertReqIterateToReq(
2028 const ConfigDBUUIDCacheReqIterate *req_iterate,
2029 ConfigDBUUIDCacheReq *req,
string *last_uuid);
2033 const ConfigDBUUIDCacheEntry &lhs,
2034 const ConfigDBUUIDCacheEntry &rhs) {
2045 const ConfigDBUUIDCacheReqIterate *req_iterate,
2046 ConfigDBUUIDCacheReq *req,
string *last_uuid) {
2049 req->set_context(req_iterate->context());
2051 string uuid_info = req_iterate->get_uuid_info();
2056 if (pos1 == string::npos) {
2059 string search_string = uuid_info.substr(0, pos1);
2062 *last_uuid = uuid_info.substr((pos1 + sep_size));
2065 req->set_search_string(search_string);
2071 const ConfigDBUUIDCacheReq *req,
int instNum,
2077 uint32_t page_limit = GetPageLimit(sctx);
2081 last_uuid, page_limit,
2088 int stage,
int instNum,
2090 const ConfigDBUUIDCacheReq *request =
2091 static_cast<const ConfigDBUUIDCacheReq *
>(ps.
snhRequest_.get());
2093 return BufferStageCommon(request, instNum, data, last_uuid);
2099 const ConfigDBUUIDCacheReqIterate *request_iterate =
2100 static_cast<const ConfigDBUUIDCacheReqIterate *
>(ps.
snhRequest_.get());
2102 ConfigDBUUIDCacheReq *request =
new ConfigDBUUIDCacheReq;
2104 bool success = ConvertReqIterateToReq(request_iterate, request,
2107 BufferStageCommon(request, instNum, data, last_uuid);
2115 ConfigDBUUIDCacheResp *response) {
2118 vector<ConfigDBUUIDCacheEntry> uuid_cache_list;
2119 for (
size_t i = 0; i < prev_stage_data->size(); ++i) {
2123 size_t list_size = uuid_cache_list.size();
2124 uuid_cache_list.reserve(list_size + show_data.
send_buffer.size());
2127 std::back_inserter(uuid_cache_list));
2129 std::inplace_merge(uuid_cache_list.begin(),
2130 uuid_cache_list.begin() + list_size,
2131 uuid_cache_list.end(),
2142 uint32_t page_limit = GetPageLimit(sctx);
2143 if (uuid_cache_list.size() > page_limit) {
2144 vector<ConfigDBUUIDCacheEntry> ouput_list(uuid_cache_list.begin(),
2145 uuid_cache_list.begin()
2147 response->set_uuid_cache(ouput_list);
2149 + ouput_list.back().uuid;
2151 response->set_uuid_cache(uuid_cache_list);
2154 response->set_next_batch(next_batch);
2159 int stage,
int instNum,
2161 const ConfigDBUUIDCacheReq *request =
2162 static_cast<const ConfigDBUUIDCacheReq *
>(ps.
snhRequest_.get());
2163 ConfigDBUUIDCacheResp *response =
new ConfigDBUUIDCacheResp;
2164 SendStageCommon(request, ps, response);
2165 response->set_context(request->context());
2166 response->set_more(
false);
2167 response->Response();
2173 int stage,
int instNum,
2175 const ConfigDBUUIDCacheReqIterate *request_iterate =
2176 static_cast<const ConfigDBUUIDCacheReqIterate *
>(ps.
snhRequest_.get());
2178 ConfigDBUUIDCacheResp *response =
new ConfigDBUUIDCacheResp;
2179 ConfigDBUUIDCacheReq *request =
new ConfigDBUUIDCacheReq;
2181 bool success = ConvertReqIterateToReq(request_iterate, request,
2184 SendStageCommon(request, ps, response);
2187 response->set_context(request->context());
2188 response->set_more(
false);
2189 response->Response();
2195 void ConfigDBUUIDCacheReq::HandleRequest()
const {
2215 ps.stages_ = list_of(s0)(s1)
2216 .convert_to_container<vector<RequestPipeline::StageSpec> >();
2220 void ConfigDBUUIDCacheReqIterate::HandleRequest()
const {
2240 ps.stages_ = list_of(s0)(s1)
2241 .convert_to_container\
2242 <vector<RequestPipeline::StageSpec> >();
2248 static const int kMaxElementsPerRound = 50;
2254 static bool ProcessRequestCommon(
const ConfigDBUUIDToFQNameReq *req,
2255 const string &last_uuid);
2257 static bool ProcessRequest(
2261 static bool ProcessRequestIterate(
2265 static bool ConvertReqIterateToReq(
2266 const ConfigDBUUIDToFQNameReqIterate *req_iterate,
2267 ConfigDBUUIDToFQNameReq *req,
string *last_uuid);
2276 const ConfigDBUUIDToFQNameReqIterate *req_iterate,
2277 ConfigDBUUIDToFQNameReq *req,
string *last_uuid) {
2280 req->set_context(req_iterate->context());
2282 string uuid_info = req_iterate->get_uuid_info();
2287 if (pos1 == string::npos) {
2290 string search_string = uuid_info.substr(0, pos1);
2293 *last_uuid = uuid_info.substr((pos1 + sep_size));
2296 req->set_search_string(search_string);
2301 const ConfigDBUUIDToFQNameReq *req,
const string &last_uuid) {
2304 uint32_t page_limit = GetPageLimit(sctx);
2306 vector<ConfigDBFQNameCacheEntry> dest_buffer;
2308 req->get_search_string(), last_uuid, page_limit, &dest_buffer);
2310 ConfigDBUUIDToFQNameResp *response =
new ConfigDBUUIDToFQNameResp();
2312 next_batch = req->get_search_string()
2315 response->set_fqname_cache(dest_buffer);
2316 response->set_next_batch(next_batch);
2317 response->set_context(req->context());
2318 response->set_more(
false);
2319 response->Response();
2326 const ConfigDBUUIDToFQNameReqIterate *request_iterate =
2327 static_cast<const ConfigDBUUIDToFQNameReqIterate
2329 ConfigDBUUIDToFQNameReq *request =
new ConfigDBUUIDToFQNameReq;
2331 bool success = ConvertReqIterateToReq(request_iterate, request,
2334 ProcessRequestCommon(request, last_uuid);
2343 const ConfigDBUUIDToFQNameReq *request =
2344 static_cast<const ConfigDBUUIDToFQNameReq*
>(ps.
snhRequest_.get());
2346 ProcessRequestCommon(request, last_uuid);
2350 void ConfigDBUUIDToFQNameReq::HandleRequest()
const {
2360 ps.stages_ = boost::assign::list_of(s0)
2361 .convert_to_container\
2362 <vector<RequestPipeline::StageSpec> >();
2366 void ConfigDBUUIDToFQNameReqIterate::HandleRequest()
const {
2376 ps.stages_ = boost::assign::list_of(s0)
2377 .convert_to_container
2378 <vector<RequestPipeline::StageSpec> >();
std::string ToNumberedString() const
bool test(size_t pos) const
ConfigDbClient * config_db_client() const
static int GetNumConfigReader()
virtual bool UUIDToObjCacheShow(const std::string &search_string, int inst_num, const std::string &last_uuid, uint32_t num_entries, std::vector< ConfigDBUUIDCacheEntry > *entries) const =0
virtual bool UUIDToFQNameShow(const std::string &search_string, const std::string &last_uuid, uint32_t num_entries, std::vector< ConfigDBFQNameCacheEntry > *entries) const
const std::string last_change_at_str() const
adjacency_iterator end(DBGraph *graph)
adjacency_iterator begin(DBGraph *graph)
const std::string & name() const
virtual DBEntryBase * GetNext(const DBEntryBase *)=0
virtual DBEntryBase * GetFirst()=0
virtual size_t Size() const
virtual DBTablePartBase * GetTablePartition(const DBRequestKey *key)
iterator lower_bound(const std::string &name)
TableMap::iterator iterator
DBTableBase * FindTable(const std::string &name)
iterator FindTableIter(const std::string &name)
IFMapLinkState * LinkStateLookup(IFMapLink *link)
bool ClientConfigTrackerHasState(TrackerType tracker_type, int index, IFMapState *state)
bool ClientHasConfigTracker(TrackerType tracker_type, int index)
IFMapNodeState * NodeStateLookup(IFMapNode *node)
IFMapLink * FindNextLink(const std::string &name)
const std::string & link_name() const
std::vector< LinkOriginInfo > origin_info_
const std::string & metadata() const
string GetIFMapObjectData(const IFMapObject *src_obj)
IFMapNodeCopier(IFMapNodeShowInfo *dest, DBEntryBase *src, IFMapServer *server)
const std::string & name() const
virtual std::string ToString() const
IFMapOrigin origin() const
uint64_t sequence_number()
virtual void EncodeUpdate(pugi::xml_node *parent) const =0
IFMapServer * ifmap_server()
uint32_t page_limit() const
void FillClientMap(IFMapServerShowClientMap *out_map, const std::string &search_string)
ConfigClientManager * get_config_manager()
IFMapExporter * exporter()
IFMapVmUuidMapper * vm_uuid_mapper()
void FillClientHistory(IFMapServerClientHistoryList *out_list, const std::string &search_string)
void FillIndexMap(IFMapServerShowIndexMap *out_map, const std::string &search_string)
bool ClientNameToIndex(const std::string &id, int *index)
const BitSet & interest() const
const BitSet & advertised() const
static IFMapTable * FindTable(DB *db, const std::string &element_type)
IFMapNode * FindNode(const std::string &name)
static void FillNodeTableList(DB *db, std::vector< IFMapNodeTableListShowEntry > *table_list)
IFMapNode * FindNextNode(const std::string &name)
UuidNodeMap uuid_node_map_
IFMapUuidMapper uuid_mapper_
PendingVmRegMap pending_vmreg_map_
PendingVmRegMap::size_type PendingVmRegCount()
IFMapNode * GetVmNodeByUuid(const std::string &vm_uuid)
NodeUuidMap node_uuid_map_
boost::ptr_vector< InstData > StageData
static bool SortList(const ConfigDBUUIDCacheEntry &lhs, const ConfigDBUUIDCacheEntry &rhs)
static RequestPipeline::InstData * AllocBuffer(int stage)
static bool SendStage(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static int GetPageLimit(IFMapSandeshContext *sctx)
static void SendStageCommon(const ConfigDBUUIDCacheReq *request, const RequestPipeline::PipeSpec ps, ConfigDBUUIDCacheResp *response)
static bool BufferStage(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static bool ConvertReqIterateToReq(const ConfigDBUUIDCacheReqIterate *req_iterate, ConfigDBUUIDCacheReq *req, string *last_uuid)
static bool SendStageIterate(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static bool BufferStageCommon(const ConfigDBUUIDCacheReq *request, int instNum, RequestPipeline::InstData *data, const string &last_uuid)
static bool BufferStageIterate(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static bool ProcessRequest(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static bool ConvertReqIterateToReq(const ConfigDBUUIDToFQNameReqIterate *req_iterate, ConfigDBUUIDToFQNameReq *req, string *last_uuid)
static int GetPageLimit(IFMapSandeshContext *sctx)
static bool ProcessRequestIterate(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static bool ProcessRequestCommon(const ConfigDBUUIDToFQNameReq *req, const string &last_uuid)
static bool BufferStageCommon(const IFMapLinkTableShowReq *request, RequestPipeline::InstData *data, const string &last_link_name)
static int GetPageLimit(IFMapSandeshContext *sctx)
static bool ConvertReqIterateToReq(const IFMapLinkTableShowReqIterate *req_iterate, IFMapLinkTableShowReq *req, string *last_link_name)
static bool SendStageIterate(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static void CopyNode(IFMapLinkShowInfo *dest, DBEntryBase *src, IFMapServer *server)
static bool BufferStageIterate(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static bool IncludeLink(DBEntryBase *src, const string &search_string, const regex &search_expr, const string &metadata, const regex &metadata_expr)
static bool SendStage(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static bool BufferStage(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static RequestPipeline::InstData * AllocBuffer(int stage)
static void SendStageCommon(const IFMapLinkTableShowReq *request, const RequestPipeline::PipeSpec ps, IFMapLinkTableShowResp *response)
static bool ProcessRequest(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static bool ProcessRequestCommon(const IFMapNodeToUuidMappingReq *req, const string &last_uuid)
static int GetPageLimit(IFMapSandeshContext *sctx)
static bool ProcessRequestIterate(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static RequestPipeline::InstData * AllocBuffer(int stage)
static bool BufferStage(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static int GetPageLimit(IFMapSandeshContext *sctx)
static bool SendStage(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static RequestPipeline::InstData * AllocTracker(int stage)
static void BufferTable(const IFMapPerClientLinksShowReq *request, const string &last_link_name, IFMapPerClientLinksShowResp *response)
static bool HandleRequest(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static bool ConvertReqIterateToReq(const IFMapPerClientLinksShowReqIterate *req_iterate, IFMapPerClientLinksShowReq *req, string *last_node_name)
static bool CopyNode(IFMapPerClientLinksShowInfo *dest, IFMapLink *src, IFMapServer *server, int client_index)
static int GetPageLimit(IFMapSandeshContext *sctx)
static bool HandleRequestIterate(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static bool SkipLink(IFMapLink *src, const string &search_string)
static RequestPipeline::InstData * AllocBuffer(int stage)
static bool BufferStageIterate(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static bool CopyNode(IFMapPerClientNodesShowInfo *dest, IFMapNode *src, IFMapServer *server, int client_index)
static void SendStageCommon(const IFMapPerClientNodesShowReq *request, const RequestPipeline::PipeSpec ps, IFMapPerClientNodesShowResp *response)
static bool BufferStageCommon(const IFMapPerClientNodesShowReq *request, RequestPipeline::InstData *data, const string &next_table_name, const string &last_node_name)
static bool SendStageIterate(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static bool TableToBuffer(const IFMapPerClientNodesShowReq *request, IFMapTable *table, IFMapServer *server, const string &last_node_name, int client_index, ShowData *show_data)
static bool BufferStage(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static int GetPageLimit(IFMapSandeshContext *sctx)
static bool SendStage(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static bool ConvertReqIterateToReq(const IFMapPerClientNodesShowReqIterate *req_iterate, IFMapPerClientNodesShowReq *req, string *next_table_name, string *last_node_name)
static bool BufferStageCommon(const IFMapTableShowReq *request, RequestPipeline::InstData *data, const string &next_table_name, const string &last_node_name)
static int GetPageLimit(IFMapSandeshContext *sctx)
static bool BufferStage(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static void SendStageCommon(const IFMapTableShowReq *request, const RequestPipeline::PipeSpec ps, IFMapTableShowResp *response)
static bool BufferOneTable(const IFMapTableShowReq *request, RequestPipeline::InstData *data, const string &last_node_name)
static bool BufferAllTables(const IFMapTableShowReq *req, RequestPipeline::InstData *data, const string &next_table_name, const string &last_node_name)
static bool TableToBuffer(const IFMapTableShowReq *request, IFMapTable *table, IFMapServer *server, const string &last_node_name, ShowData *show_data, uint32_t page_limit)
static RequestPipeline::InstData * AllocBuffer(int stage)
static bool ConvertReqIterateToReq(const IFMapTableShowReqIterate *req_iterate, IFMapTableShowReq *req, string *next_table_name, string *last_node_name)
static bool SendStage(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static bool SendStageIterate(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static bool BufferStageIterate(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static int GetPageLimit(IFMapSandeshContext *sctx)
static bool ProcessRequestCommon(const IFMapUuidToNodeMappingReq *req, const string &last_uuid)
static bool ProcessRequest(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static bool ProcessRequestIterate(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
The TaskScheduler keeps track of what tasks are currently schedulable. When a task is enqueued it is ...
int GetTaskId(const std::string &name)
static TaskScheduler * GetInstance()
#define IFMAP_WARN(obj,...)
const string kShowIterSeparator
static bool IFMapNodeShowReqHandleRequest(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static bool IFMapNodeTableListShowReqHandleRequest(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static bool IFMapServerClientShowReqHandleRequest(const Sandesh *sr, const RequestPipeline::PipeSpec ps, int stage, int instNum, RequestPipeline::InstData *data)
static bool regex_search(const std::string &input, const regex ®ex)
static bool regex_match(const std::string &input, const regex ®ex)
bool stringToInteger(const std::string &str, NumberType &num)
std::string ToString() const
boost::shared_ptr< const SandeshRequest > snhRequest_
const StageData * GetStageData(int stage) const
std::vector< int > instances_
vector< ConfigDBUUIDCacheEntry > send_buffer
vector< IFMapLinkShowInfo > send_buffer
vector< IFMapPendingVmRegEntry > send_buffer
vector< IFMapPendingVmRegEntry >::const_iterator first
vector< IFMapPerClientNodesShowInfo > send_buffer
vector< IFMapNodeShowInfo > send_buffer
#define BOOL_KEY_COMPARE(x, y)