Viam C++ SDK current
Loading...
Searching...
No Matches
resource.hpp
1#pragma once
2
3#include <unordered_map>
4
5#include <grpcpp/impl/service_type.h>
6#include <grpcpp/support/status.h>
7
8#include <viam/sdk/common/proto_value.hpp>
9#include <viam/sdk/config/resource.hpp>
10#include <viam/sdk/resource/resource_api.hpp>
11
12namespace viam {
13namespace sdk {
14
15class Resource;
16using Dependencies = std::unordered_map<Name, std::shared_ptr<Resource>>;
17class Resource {
18 public:
19 virtual ~Resource();
20 explicit Resource(std::string name);
21
23 virtual API api() const = 0;
24
26 virtual viam::common::v1::ResourceName get_resource_name(std::string name) const;
27
29 virtual std::string name() const;
30
31 private:
32 std::string name_;
33};
34
35template <>
37 static API api() {
38 return {"rdk", "resource", "Resource"};
39 }
40};
41
42} // namespace sdk
43} // namespace viam
Extends APIType to additionally define a resource's subtype (e.g., camera).
Definition resource_api.hpp:33
Definition resource.hpp:17
virtual std::string name() const
Return the resource's name.
virtual API api() const =0
Returns the API associated with a particular resource.
virtual viam::common::v1::ResourceName get_resource_name(std::string name) const
Returns a ResourceName for a particular resource name.
Definition resource_api.hpp:50