11 #include <boost/bind/bind.hpp>
14 #include <sandesh/sandesh_types.h>
15 #include <sandesh/sandesh.h>
16 #include <sandesh/sandesh_trace_types.h>
21 using namespace boost::placeholders;
30 const std::string& req_context,
31 const std::string& read_context,
34 req_context_(req_context),
35 read_context_(read_context),
36 sttr_(new SandeshTraceTextResponse),
51 if (
"Collector" != read_context_) {
52 sttr_->set_context(req_context_);
62 vector<string>& tracebuf =
const_cast<vector<string>&
>(sttr_->get_traces());
64 if (
"Collector" != read_context_) {
65 tracebuf.push_back(tsnh->
ToString());
69 if (!more || (read_count_ == req_count_)) {
79 SandeshTraceTextResponse *
sttr_;
84 void SandeshTraceRequest::HandleRequest()
const {
85 std::string read_context;
90 if ((0 == context().find(
"http%")) || (0 == context().find(
"https%"))) {
91 read_context =
"Http";
93 read_context =
"Collector";
98 if (read_context !=
"Collector") {
99 SandeshTraceTextResponse *sttr =
new SandeshTraceTextResponse;
100 sttr->set_context(context());
105 std::unique_ptr<SandeshTraceRequestRunner> trace_req_runner(
new
107 read_context, get_count()));
108 trace_req_runner->Run();
122 std::unique_ptr<SandeshTraceRequestRunner> trace_req_runner(
new
124 trace_req_runner->Run();
127 void SandeshTraceBufferListRequest::HandleRequest()
const {
128 std::vector<std::string> trace_buf_list;
130 std::vector<SandeshTraceBufInfo> trace_buf_info_list;
131 for (std::vector<std::string>::const_iterator it = trace_buf_list.begin();
132 it != trace_buf_list.end(); ++it) {
133 SandeshTraceBufInfo trace_buf_info;
134 trace_buf_info.set_trace_buf_name(*it);
135 trace_buf_info_list.push_back(trace_buf_info);
137 SandeshTraceBufferListResponse *resp =
new SandeshTraceBufferListResponse;
138 resp->set_trace_buffer_list(trace_buf_info_list);
139 resp->set_context(context());
140 resp->set_more(
false);
144 void SandeshTraceEnableDisableReq::HandleRequest()
const {
146 if (__isset.enable) {
149 status =
"Sandesh Trace Enabled";
152 status =
"Sandesh Trace Disabled";
159 status =
"Sandesh Trace Disabled";
162 status =
"Sandesh Trace Enabled";
165 SandeshTraceEnableDisableRes *resp =
new
166 SandeshTraceEnableDisableRes;
167 resp->set_enable_disable_status(status);
168 resp->set_context(context());
169 resp->set_more(
false);
173 void SandeshTraceBufStatusReq::HandleRequest()
const {
174 std::vector<std::string> trace_buf_list;
176 std::vector<SandeshTraceBufStatusInfo> trace_buf_status_list;
177 for (std::vector<std::string>::const_iterator it = trace_buf_list.begin();
178 it != trace_buf_list.end(); ++it) {
179 SandeshTraceBufStatusInfo trace_buf_status;
180 trace_buf_status.set_trace_buf_name(*it);
184 trace_buf_status.set_enable_disable(
"Enabled");
186 trace_buf_status.set_enable_disable(
"Disabled");
188 trace_buf_status_list.push_back(trace_buf_status);
191 SandeshTraceBufStatusRes *resp =
new SandeshTraceBufStatusRes;
192 resp->set_trace_buf_status_list(trace_buf_status_list);
193 resp->set_context(context());
194 resp->set_more(
false);
198 void SandeshTraceBufferEnableDisableReq::HandleRequest()
const {
199 SandeshTraceBufferEnableDisableRes *resp =
new
200 SandeshTraceBufferEnableDisableRes;
205 if (__isset.enable) {
208 status =
"Trace buffer Enabled";
211 status =
"Trace buffer Disabled";
218 status =
"Trace buffer Disabled";
221 status =
"Trace buffer Enabled";
225 status =
"Invalid Trace buffer";
227 resp->set_enable_disable_status(status);
228 resp->set_context(context());
229 resp->set_more(
false);
~SandeshTraceRequestRunner()
SandeshTraceBufferPtr req_buf_
void SandeshTraceRead(SandeshTrace *tsnh, bool more)
SandeshTraceRequestRunner(SandeshTraceBufferPtr trace_buf, const std::string &req_context, const std::string &read_context, uint32_t count)
SandeshTraceTextResponse * sttr_
std::string read_context_
virtual void SendTrace(const std::string &context, bool more)=0
virtual std::string ToString() const =0
static Trace * trace_
A pointer to the table (singleton) used in this program.
void SandeshTraceSend(const std::string &buf_name, uint32_t trace_count)
void SandeshTraceEnable()
SandeshTraceBufferPtr SandeshTraceBufferGet(const std::string &buf_name)
void SandeshTraceBufferDisable(SandeshTraceBufferPtr trace_buf)
size_t SandeshTraceBufferSizeGet(SandeshTraceBufferPtr trace_buf)
void SandeshTraceDisable()
void SandeshTraceBufferReadDone(SandeshTraceBufferPtr trace_buf, const std::string &read_context)
bool IsSandeshTraceEnabled()
void SandeshTraceBufferEnable(SandeshTraceBufferPtr trace_buf)
void SandeshTraceBufferListGet(std::vector< std::string > &trace_buf_list)
boost::shared_ptr< TraceBuffer< SandeshTrace > > SandeshTraceBufferPtr
bool IsSandeshTraceBufferEnabled(SandeshTraceBufferPtr trace_buf)
void SandeshTraceBufferRead(SandeshTraceBufferPtr trace_buf, const std::string &read_context, const int count, boost::function< void(SandeshTrace *, bool)> cb)