11 #include <boost/bind.hpp>
14 #include <sandesh/sandesh_types.h>
15 #include <sandesh/sandesh.h>
16 #include <sandesh/sandesh_trace_types.h>
29 const std::string& req_context,
30 const std::string& read_context,
35 sttr_(new SandeshTraceTextResponse),
61 vector<string>& tracebuf =
const_cast<vector<string>&
>(
sttr_->get_traces());
64 tracebuf.push_back(tsnh->
ToString());
78 SandeshTraceTextResponse *
sttr_;
83 void SandeshTraceRequest::HandleRequest()
const {
84 std::string read_context;
89 if ((0 == context().find(
"http%")) || (0 == context().find(
"https%"))) {
90 read_context =
"Http";
92 read_context =
"Collector";
97 if (read_context !=
"Collector") {
98 SandeshTraceTextResponse *sttr =
new SandeshTraceTextResponse;
99 sttr->set_context(context());
104 std::unique_ptr<SandeshTraceRequestRunner> trace_req_runner(
new
106 read_context, get_count()));
107 trace_req_runner->Run();
121 std::unique_ptr<SandeshTraceRequestRunner> trace_req_runner(
new
123 trace_req_runner->Run();
126 void SandeshTraceBufferListRequest::HandleRequest()
const {
127 std::vector<std::string> trace_buf_list;
129 std::vector<SandeshTraceBufInfo> trace_buf_info_list;
130 for (std::vector<std::string>::const_iterator it = trace_buf_list.begin();
131 it != trace_buf_list.end(); ++it) {
132 SandeshTraceBufInfo trace_buf_info;
133 trace_buf_info.set_trace_buf_name(*it);
134 trace_buf_info_list.push_back(trace_buf_info);
136 SandeshTraceBufferListResponse *resp =
new SandeshTraceBufferListResponse;
137 resp->set_trace_buffer_list(trace_buf_info_list);
138 resp->set_context(context());
139 resp->set_more(
false);
143 void SandeshTraceEnableDisableReq::HandleRequest()
const {
145 if (__isset.enable) {
148 status =
"Sandesh Trace Enabled";
151 status =
"Sandesh Trace Disabled";
158 status =
"Sandesh Trace Disabled";
161 status =
"Sandesh Trace Enabled";
164 SandeshTraceEnableDisableRes *resp =
new
165 SandeshTraceEnableDisableRes;
166 resp->set_enable_disable_status(status);
167 resp->set_context(context());
168 resp->set_more(
false);
172 void SandeshTraceBufStatusReq::HandleRequest()
const {
173 std::vector<std::string> trace_buf_list;
175 std::vector<SandeshTraceBufStatusInfo> trace_buf_status_list;
176 for (std::vector<std::string>::const_iterator it = trace_buf_list.begin();
177 it != trace_buf_list.end(); ++it) {
178 SandeshTraceBufStatusInfo trace_buf_status;
179 trace_buf_status.set_trace_buf_name(*it);
183 trace_buf_status.set_enable_disable(
"Enabled");
185 trace_buf_status.set_enable_disable(
"Disabled");
187 trace_buf_status_list.push_back(trace_buf_status);
189 SandeshTraceBufStatusRes *resp =
new SandeshTraceBufStatusRes;
190 resp->set_trace_buf_status_list(trace_buf_status_list);
191 resp->set_context(context());
192 resp->set_more(
false);
196 void SandeshTraceBufferEnableDisableReq::HandleRequest()
const {
197 SandeshTraceBufferEnableDisableRes *resp =
new
198 SandeshTraceBufferEnableDisableRes;
203 if (__isset.enable) {
206 status =
"Trace buffer Enabled";
209 status =
"Trace buffer Disabled";
216 status =
"Trace buffer Disabled";
219 status =
"Trace buffer Enabled";
223 status =
"Invalid Trace buffer";
225 resp->set_enable_disable_status(status);
226 resp->set_context(context());
227 resp->set_more(
false);
void SandeshTraceBufferReadDone(SandeshTraceBufferPtr trace_buf, const std::string &read_context)
virtual void SendTrace(const std::string &context, bool more)=0
void SandeshTraceBufferListGet(std::vector< std::string > &trace_buf_list)
bool IsSandeshTraceEnabled()
SandeshTraceBufferPtr req_buf_
boost::shared_ptr< TraceBuffer< SandeshTrace > > SandeshTraceBufferPtr
void SandeshTraceBufferRead(SandeshTraceBufferPtr trace_buf, const std::string &read_context, const int count, boost::function< void(SandeshTrace *, bool)> cb)
bool IsSandeshTraceBufferEnabled(SandeshTraceBufferPtr trace_buf)
void SandeshTraceDisable()
size_t SandeshTraceBufferSizeGet(SandeshTraceBufferPtr trace_buf)
SandeshTraceTextResponse * sttr_
void SandeshTraceRead(SandeshTrace *tsnh, bool more)
void SandeshTraceSend(const std::string &buf_name, uint32_t trace_count)
virtual std::string ToString() const =0
void SandeshTraceBufferDisable(SandeshTraceBufferPtr trace_buf)
SandeshTraceRequestRunner(SandeshTraceBufferPtr trace_buf, const std::string &req_context, const std::string &read_context, uint32_t count)
std::string read_context_
void SandeshTraceEnable()
void SandeshTraceBufferEnable(SandeshTraceBufferPtr trace_buf)
SandeshTraceBufferPtr SandeshTraceBufferGet(const std::string &buf_name)
~SandeshTraceRequestRunner()