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
17class Resource {
18 public:
19 virtual ~Resource();
20 explicit Resource(std::string name);
21
23 virtual API api() const = 0;
24
26 virtual Name get_resource_name() const;
27
29 virtual std::string name() const;
30
33
34 private:
35 std::string name_;
36
37 protected:
38 Name get_resource_name(const std::string& type) const;
39
40 LogSource logger_;
41};
42
43template <>
45 static API api() {
46 return {"rdk", "resource", "Resource"};
47 }
48};
49
50} // namespace sdk
51} // namespace viam
Definition resource_api.hpp:21
A name for specific instances of resources.
Definition resource_api.hpp:61
Definition resource.hpp:17
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:30
boost::log::sources::severity_channel_logger_mt< log_level > LogSource
Type alias for the log source in the C++ SDK.
Definition logging.hpp:50
Defines logging infrastructure.
Definition resource_api.hpp:46