]> git.proxmox.com Git - ceph.git/blob - ceph/src/common/zipkin_trace.h
update sources to v12.1.0
[ceph.git] / 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