OpenSDN source code
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
vrf_assign_kstate.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
3  */
4 
5 #include "kstate.h"
6 #include "vrf_assign_kstate.h"
7 
8 VrfAssignKState::VrfAssignKState(KVrfAssignResp *obj,
9  const std::string &resp_ctx,
10  vr_vrf_assign_req &req, int id) :
11  KState(resp_ctx, obj) {
12 
13  req.set_h_op(sandesh_op::DUMP);
14  req.set_var_vif_index(id);
15  req.set_var_marker(-1);
16 }
17 
19  VrfAssignContext *ctx = boost::any_cast<VrfAssignContext *>(more_context_);
20  vr_vrf_assign_req req;
21 
22  req.set_h_op(sandesh_op::DUMP);
23  req.set_var_vif_index(ctx->vif_index_);
24  req.set_var_vlan_id(ctx->marker_);
25  req.set_var_marker(ctx->marker_);
26  EncodeAndSend(req);
27 }
28 
30  KVrfAssignResp *resp = static_cast<KVrfAssignResp *>(response_object_);
31  if (resp) {
32  if (MoreData()) {
33  /* There are more labels in Kernel. We need to query them from
34  * Kernel and send it to Sandesh.
35  */
36  SendResponse();
38  } else {
39  resp->set_context(response_context_);
40  resp->Response();
41  if (!more_context_.empty()) {
42  VrfAssignContext *ctx =
43  boost::any_cast<VrfAssignContext *>(more_context_);
44  if (ctx) {
45  delete ctx;
46  more_context_ = boost::any();
47  }
48  }
49  }
50  }
51 }
52 
54  KVrfAssignResp *resp = static_cast<KVrfAssignResp *>(response_object_);
55  resp->set_context(response_context_);
56  resp->set_more(true);
57  resp->Response();
58 
59  response_object_ = new KVrfAssignResp();
60 }
VrfAssignKState(KVrfAssignResp *obj, const std::string &resp_ctx, vr_vrf_assign_req &req, int id)
std::string response_context_
Definition: kstate.h:63
virtual void SendNextRequest()
Definition: kstate.h:24
virtual void Handler()
boost::any more_context_
Definition: kstate.h:66
Sandesh * response_object_
Definition: kstate.h:64
virtual void SendResponse()
bool MoreData() const
Definition: kstate.cc:29
void EncodeAndSend(Sandesh &encoder)
Definition: kstate.cc:63