Fix some bugs when testing opensds ansible
[stor4nfv.git] / src / ceph / src / common / zipkin_trace.h
1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
3 #ifndef COMMON_ZIPKIN_TRACE_H
4 #define COMMON_ZIPKIN_TRACE_H
5
6 #include "acconfig.h"
7 #include "include/encoding.h"
8
9 #ifdef WITH_BLKIN
10
11 #include <ztracer.hpp>
12
13 #else // !WITH_BLKIN
14
15 // add stubs for noop Trace and Endpoint
16
17 // match the "real" struct
18 struct blkin_trace_info {
19     int64_t trace_id;
20     int64_t span_id;
21     int64_t parent_span_id;
22 };
23
24 namespace ZTracer
25 {
26 static inline int ztrace_init() { return 0; }
27
28 class Endpoint {
29  public:
30   Endpoint(const char *name) {}
31   Endpoint(const char *ip, int port, const char *name) {}
32
33   void copy_ip(const std::string &newip) {}
34   void copy_name(const std::string &newname) {}
35   void copy_address_from(const Endpoint *endpoint) {}
36   void share_address_from(const Endpoint *endpoint) {}
37   void set_port(int p) {}
38 };
39
40 class Trace {
41  public:
42   Trace() {}
43   Trace(const char *name, const Endpoint *ep, const Trace *parent = NULL) {}
44   Trace(const char *name, const Endpoint *ep,
45         const blkin_trace_info *i, bool child=false) {}
46
47   bool valid() const { return false; }
48   operator bool() const { return false; }
49
50   int init(const char *name, const Endpoint *ep, const Trace *parent = NULL) {
51     return 0;
52   }
53   int init(const char *name, const Endpoint *ep,
54            const blkin_trace_info *i, bool child=false) {
55     return 0;
56   }
57
58   void copy_name(const std::string &newname) {}
59
60   const blkin_trace_info* get_info() const { return NULL; }
61   void set_info(const blkin_trace_info *i) {}
62
63   void keyval(const char *key, const char *val) const {}
64   void keyval(const char *key, int64_t val) const {}
65   void keyval(const char *key, const char *val, const Endpoint *ep) const {}
66   void keyval(const char *key, int64_t val, const Endpoint *ep) const {}
67
68   void event(const char *event) const {}
69   void event(const char *event, const Endpoint *ep) const {}
70 };
71 } // namespace ZTrace
72
73 #endif // !WITH_BLKIN
74
75 static inline void encode(const blkin_trace_info& b, bufferlist& bl)
76 {
77   ::encode(b.trace_id, bl);
78   ::encode(b.span_id, bl);
79   ::encode(b.parent_span_id, bl);
80 }
81
82 static inline void decode(blkin_trace_info& b, bufferlist::iterator& p)
83 {
84   ::decode(b.trace_id, p);
85   ::decode(b.span_id, p);
86   ::decode(b.parent_span_id, p);
87 }
88
89
90
91 #endif // COMMON_ZIPKIN_TRACE_H