6 #include <boost/foreach.hpp>
13 #include "bgp/routing-policy/routing_policy_types.h"
24 srpi->set_name(policy->
name());
26 srpi->set_ref_count(policy->
refcount());
27 srpi->set_deleted(policy->
deleted());
28 vector<PolicyTermInfo> term_list;
30 PolicyTermInfo show_term;
31 show_term.set_terminal(term->terminal());
32 vector<string> match_list;
34 match_list.push_back(match->
ToString());
36 show_term.set_matches(match_list);
37 vector<string> action_list;
39 action_list.push_back(action->
ToString());
41 show_term.set_actions(action_list);
42 term_list.push_back(show_term);
44 srpi->set_terms(term_list);
51 bool summary, uint32_t page_limit, uint32_t iter_limit,
52 const string &start_policy,
const string &search_string,
53 vector<ShowRoutingPolicyInfo> *srpi_list,
string *next_policy) {
57 for (uint32_t iter_count = 0; it != rpm->
name_cend(); ++it, ++iter_count) {
59 if (!search_string.empty() &&
60 (policy->
name().find(search_string) == string::npos) &&
61 (search_string !=
"deleted" || !policy->
deleted())) {
64 ShowRoutingPolicyInfo srpi;
66 srpi_list->push_back(srpi);
67 if (srpi_list->size() >= page_limit)
69 if (iter_count >= iter_limit)
79 bool done = srpi_list->size() >= page_limit;
80 *next_policy = it->second->name();
86 bool BgpShowHandler<ShowRoutingPolicyReq, ShowRoutingPolicyReqIterate,
87 ShowRoutingPolicyResp, ShowRoutingPolicyInfo>::CallbackCommon(
95 if (!next_policy.empty())
96 SaveContextToData(next_policy, done, data);
102 void BgpShowHandler<ShowRoutingPolicyReq, ShowRoutingPolicyReqIterate,
103 ShowRoutingPolicyResp, ShowRoutingPolicyInfo>::FillShowList(
104 ShowRoutingPolicyResp *resp,
105 const vector<ShowRoutingPolicyInfo> &show_list) {
106 resp->set_routing_policies(show_list);
110 void ShowRoutingPolicyReq::HandleRequest()
const {
117 ShowRoutingPolicyReq,
118 ShowRoutingPolicyReqIterate,
119 ShowRoutingPolicyResp,
120 ShowRoutingPolicyInfo>::Callback, _1, _2, _3, _4, _5);
122 ShowRoutingPolicyReq,
123 ShowRoutingPolicyReqIterate,
124 ShowRoutingPolicyResp,
125 ShowRoutingPolicyInfo>::CreateData;
127 ps.stages_.push_back(s1);
134 void ShowRoutingPolicyReqIterate::HandleRequest()
const {
141 ShowRoutingPolicyReq,
142 ShowRoutingPolicyReqIterate,
143 ShowRoutingPolicyResp,
144 ShowRoutingPolicyInfo>::CallbackIterate, _1, _2, _3, _4, _5);
146 ShowRoutingPolicyReq,
147 ShowRoutingPolicyReqIterate,
148 ShowRoutingPolicyResp,
149 ShowRoutingPolicyInfo>::CreateData;
151 ps.stages_.push_back(s1);
RoutingPolicyMgr * routing_policy_mgr()
virtual std::string ToString() const =0
virtual std::string ToString() const =0
const_name_iterator name_cend()
const_name_iterator name_clower_bound(const std::string &name)
RoutingPolicyList::const_iterator const_name_iterator
const std::string & name() const
RoutingPolicyTermList * terms()
uint32_t generation() const
uint32_t refcount() const
boost::shared_ptr< PolicyTerm > PolicyTermPtr
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()
static bool FillRoutingPolicyInfoList(const BgpSandeshContext *bsc, bool summary, uint32_t page_limit, uint32_t iter_limit, const string &start_policy, const string &search_string, vector< ShowRoutingPolicyInfo > *srpi_list, string *next_policy)
static void FillRoutingPolicyInfo(ShowRoutingPolicyInfo *srpi, const BgpSandeshContext *bsc, const RoutingPolicy *policy, bool summary)
uint32_t iter_limit() const
uint32_t page_limit() const
std::string search_string
std::vector< ShowT > show_list
std::vector< int > instances_