Phosphor
trace_context.h
1 /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2 /*
3  * Copyright 2016 Couchbase, Inc
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 #pragma once
19 
20 #include <memory>
21 #include <string>
22 #include <unordered_map>
23 
24 #include "phosphor/platform/core.h"
25 
26 namespace phosphor {
27 
28  // Forward declare
29  class TraceBuffer;
30 
39  class PHOSPHOR_API TraceContext{
40  public:
41  using ThreadNamesMap = std::unordered_map<uint64_t, std::string>;
42 
43  ~TraceContext();
44 
45  TraceContext(std::unique_ptr<TraceBuffer>&& buffer);
46 
47  TraceContext(std::unique_ptr<TraceBuffer>&& buffer,
48  const ThreadNamesMap& _thread_names);
49 
50  TraceContext(TraceContext&& other);
51 
52  TraceContext& operator=(TraceContext&& other);
53 
54  const TraceBuffer* getBuffer() const {
55  return trace_buffer.get();
56  }
57 
62  return trace_buffer.get();
63  }
64 
68  const ThreadNamesMap& getThreadNames() const {
69  return thread_names;
70  }
71 
72  protected:
73 
77  void addThreadName(uint64_t id, const std::string& name);
78 
79  private:
83  std::unique_ptr<TraceBuffer> trace_buffer;
84 
89  ThreadNamesMap thread_names;
90  };
91 
92 }
Definition: trace_context.h:39
Definition: trace_buffer.h:148
Definition: category_registry.h:32
TraceBuffer * getBuffer()
Definition: trace_context.h:61
const ThreadNamesMap & getThreadNames() const
Definition: trace_context.h:68