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