Viam C++ SDK current
Loading...
Searching...
No Matches
resource.hpp
1#pragma once
2
3#include <unordered_map>
4
5#include <viam/sdk/common/proto_value.hpp>
6#include <viam/sdk/config/resource.hpp>
8#include <viam/sdk/resource/resource_api.hpp>
9
10namespace viam {
11namespace sdk {
12
13class Resource;
14
15using Dependencies = std::unordered_map<Name, std::shared_ptr<Resource>>;
16
17namespace log_detail {
18
19struct logger_access;
20
21} // namespace log_detail
22
23class Resource {
24 public:
25 virtual ~Resource();
26 explicit Resource(std::string name);
27
29 virtual API api() const = 0;
30
32 virtual Name get_resource_name() const;
33
35 virtual std::string name() const;
36
39
40 private:
41 std::string name_;
42
43 protected:
45
46 Name get_resource_name(const std::string& type) const;
47
48 mutable LogSource logger_;
49};
50
51template <>
53 static API api() {
54 return {"rdk", "resource", "Resource"};
55 }
56};
57
58namespace log_detail {
59
60// This is an attorney-client helper to avoid making the logger an outright public member of
61// Resource.
63 static LogSource& logger(const Resource&);
64};
65
66} // namespace log_detail
67
68} // namespace sdk
69} // namespace viam
Definition resource_api.hpp:21
A name for specific instances of resources.
Definition resource_api.hpp:61
Definition resource.hpp:23
void set_log_level(log_level) const
Set the log level for log messages originating from this Resource.
virtual std::string name() const
Return the resource's name.
virtual Name get_resource_name() const
Returns the Name for a particular resource.
virtual API api() const =0
Returns the API associated with a particular resource.
log_level
Severity levels for the logger.
Definition logging.hpp:31
boost::log::sources::severity_channel_logger_mt< log_level > LogSource
Type alias for the log source in the C++ SDK.
Definition logging.hpp:51
Defines logging infrastructure.
Definition resource_api.hpp:46
Definition resource.hpp:62