Line data Source code
1 : /* 2 : * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved. 3 : */ 4 : 5 : // 6 : // sandesh_trace.h 7 : // 8 : // Sandesh Trace APIs 9 : // 10 : 11 : #ifndef __SANDESH_TRACE_H__ 12 : #define __SANDESH_TRACE_H__ 13 : 14 : #include <base/trace.h> 15 : #include <sandesh/sandesh_types.h> 16 : #include <sandesh/sandesh.h> 17 : 18 : class SandeshTrace; 19 : 20 : typedef boost::shared_ptr<TraceBuffer<SandeshTrace> > SandeshTraceBufferPtr; 21 : typedef Trace<SandeshTrace> TraceSandeshType; 22 : 23 : inline void SandeshTraceEnable() { 24 : TraceSandeshType::GetInstance()->TraceOn(); 25 : } 26 : 27 : inline void SandeshTraceDisable() { 28 : TraceSandeshType::GetInstance()->TraceOff(); 29 : } 30 : 31 : inline bool IsSandeshTraceEnabled() { 32 : return TraceSandeshType::GetInstance()->IsTraceOn(); 33 : } 34 : 35 : inline size_t SandeshTraceBufferCapacityGet(const std::string& buf_name) { 36 : return TraceSandeshType::GetInstance()->TraceBufCapacityGet(buf_name); 37 : } 38 : 39 : inline SandeshTraceBufferPtr SandeshTraceBufferResetSize( 40 : const std::string& buf_name, 41 : size_t buf_size) { 42 : return TraceSandeshType::GetInstance()->TraceBufCapacityReset( 43 : buf_name, buf_size); 44 : } 45 : 46 : inline SandeshTraceBufferPtr SandeshTraceBufferCreate( 47 : const std::string& buf_name, 48 : size_t buf_size, 49 : bool trace_enable = true) { 50 : return TraceSandeshType::GetInstance()->TraceBufAdd( 51 : buf_name, buf_size, trace_enable); 52 : } 53 : 54 1 : inline SandeshTraceBufferPtr SandeshTraceBufferGet(const std::string& buf_name) { 55 1 : return TraceSandeshType::GetInstance()->TraceBufGet(buf_name); 56 : } 57 : 58 : inline void SandeshTraceBufferEnable(SandeshTraceBufferPtr trace_buf) { 59 : trace_buf->TraceOn(); 60 : } 61 : 62 : inline void SandeshTraceBufferDisable(SandeshTraceBufferPtr trace_buf) { 63 : trace_buf->TraceOff(); 64 : } 65 : 66 : inline bool IsSandeshTraceBufferEnabled(SandeshTraceBufferPtr trace_buf) { 67 : return trace_buf->IsTraceOn(); 68 : } 69 : 70 : inline size_t SandeshTraceBufferSizeGet(SandeshTraceBufferPtr trace_buf) { 71 : return trace_buf->TraceBufSizeGet(); 72 : } 73 : 74 1 : inline void SandeshTraceBufferRead(SandeshTraceBufferPtr trace_buf, 75 : const std::string& read_context, const int count, 76 : boost::function<void (SandeshTrace *, bool)> cb) { 77 1 : trace_buf->TraceRead(read_context, count, cb); 78 1 : } 79 : 80 : inline void SandeshTraceBufferReadDone(SandeshTraceBufferPtr trace_buf, 81 : const std::string& read_context) { 82 : trace_buf->TraceReadDone(read_context); 83 : } 84 : 85 : inline void SandeshTraceBufferListGet(std::vector<std::string>& trace_buf_list) { 86 : TraceSandeshType::GetInstance()->TraceBufListGet( 87 : trace_buf_list); 88 : } 89 : 90 : /* 91 : * Generator API to send the trace buffer to the Collector. 92 : * trace_count limits the number of trace messages sent to the Collector. 93 : * If trace count is not specified/or zero, then the entire trace buffer 94 : * is sent to the Collector. 95 : * 96 : * [Note] No duplicate trace message sent to the Collector. i.e., If there is 97 : * no trace message added between two consequent calls to this API, then no trace 98 : * message is sent to the Collector. 99 : */ 100 : void SandeshTraceSend(const std::string& buf_name, uint32_t trace_count = 0); 101 : 102 : #endif // __SANDESH_TRACE_H__