File tree 11 files changed +70
-21
lines changed
11 files changed +70
-21
lines changed Original file line number Diff line number Diff line change 4
4
#include < viam/sdk/components/component.hpp>
5
5
#include < viam/sdk/components/motor/motor.hpp>
6
6
#include < viam/sdk/config/resource.hpp>
7
+ #include < viam/sdk/resource/reconfigurable.hpp>
7
8
#include < viam/sdk/resource/resource.hpp>
8
9
9
10
using namespace viam ::sdk;
10
11
11
12
// `MyBase` inherits from the `Base` class defined in the viam C++ SDK and
12
13
// implements some of the relevant methods along with `reconfigure`. It also
13
14
// specifies a static `validate` method that checks config validity.
14
- class MyBase : public Base {
15
+ class MyBase : public Base , public Reconfigurable {
15
16
public:
16
17
MyBase (const Dependencies& deps, const ResourceConfig& cfg) : Base(cfg.name()) {
17
18
this ->reconfigure (deps, cfg);
Original file line number Diff line number Diff line change 3
3
#include < vector>
4
4
5
5
#include < viam/sdk/common/proto_type.hpp>
6
+ #include < viam/sdk/resource/reconfigurable.hpp>
6
7
7
8
#include " api.hpp"
8
9
@@ -11,7 +12,7 @@ using namespace viam::sdk;
11
12
// MyGizmo inherits from the `Gizmo` class defined in `api.hpp` and implements
12
13
// all relevant methods along with `reconfigure`. It also specifies a static
13
14
// `validate` method that checks config validity.
14
- class MyGizmo : public Gizmo {
15
+ class MyGizmo : public Gizmo , public Reconfigurable {
15
16
public:
16
17
MyGizmo (std::string name, std::string arg1) : Gizmo(std::move(name)), arg1_(std::move(arg1)){};
17
18
MyGizmo (const Dependencies& deps, const ResourceConfig& cfg) : Gizmo(cfg.name()) {
Original file line number Diff line number Diff line change 2
2
3
3
#include < vector>
4
4
5
+ #include < viam/sdk/resource/reconfigurable.hpp>
6
+
5
7
#include " api.hpp"
6
8
7
9
using namespace viam ::sdk;
8
10
9
11
// MySummation inherits from the `Summation` class defined in `api.hpp` and
10
12
// implements all relevant methods along with `reconfigure`.
11
- class MySummation : public Summation {
13
+ class MySummation : public Summation , public Reconfigurable {
12
14
public:
13
15
MySummation (std::string name, bool subtract)
14
16
: Summation(std::move(name)), subtract_(subtract){};
Original file line number Diff line number Diff line change 1
1
#include < iostream>
2
2
#include < memory>
3
- #include < signal.h>
4
3
#include < sstream>
5
4
6
5
#include < boost/log/trivial.hpp>
15
14
#include < viam/sdk/module/module.hpp>
16
15
#include < viam/sdk/module/service.hpp>
17
16
#include < viam/sdk/registry/registry.hpp>
17
+ #include < viam/sdk/resource/reconfigurable.hpp>
18
18
#include < viam/sdk/resource/resource.hpp>
19
19
#include < viam/sdk/rpc/dial.hpp>
20
20
#include < viam/sdk/rpc/server.hpp>
@@ -26,9 +26,9 @@ using namespace viam::sdk;
26
26
// Printer is a modular resource that can print a to_print value to STDOUT when
27
27
// a DoCommand request is received or when reconfiguring. The to_print value
28
28
// must be provided as an attribute in the config.
29
- class Printer : public GenericService {
29
+ class Printer : public GenericService , public Reconfigurable {
30
30
public:
31
- void reconfigure (Dependencies deps, ResourceConfig cfg) {
31
+ void reconfigure (const Dependencies& deps, const ResourceConfig& cfg) {
32
32
std::cout << " Printer " << Resource::name () << " is reconfiguring" << std::endl;
33
33
for (auto & dep : deps) {
34
34
std::cout << " dependency: " << dep.first .to_string () << std::endl;
Original file line number Diff line number Diff line change 30
30
#include < viam/sdk/config/resource.hpp>
31
31
#include < viam/sdk/module/service.hpp>
32
32
#include < viam/sdk/registry/registry.hpp>
33
+ #include < viam/sdk/resource/reconfigurable.hpp>
33
34
#include < viam/sdk/resource/stoppable.hpp>
34
35
#include < viam/sdk/rpc/server.hpp>
35
36
#include < viam/sdk/services/mlmodel/mlmodel.hpp>
@@ -58,7 +59,9 @@ constexpr char service_name[] = "example_mlmodelservice_tflite";
58
59
// with the model.
59
60
//
60
61
// Any additional configuration fields are ignored.
61
- class MLModelServiceTFLite : public vsdk ::MLModelService, public vsdk::Stoppable {
62
+ class MLModelServiceTFLite : public vsdk ::MLModelService,
63
+ public vsdk::Stoppable,
64
+ public vsdk::Reconfigurable {
62
65
class write_to_tflite_tensor_visitor_ ;
63
66
64
67
public:
Original file line number Diff line number Diff line change @@ -82,6 +82,7 @@ target_sources(viamsdk
82
82
module/signal_manager.cpp
83
83
referenceframe/frame.cpp
84
84
registry/registry.cpp
85
+ resource /reconfigurable.cpp
85
86
resource /resource .cpp
86
87
resource /resource_api.cpp
87
88
resource /resource_manager.cpp
@@ -155,6 +156,7 @@ target_sources(viamsdk
155
156
../../viam/sdk/module/signal_manager.hpp
156
157
../../viam/sdk/referenceframe/frame.hpp
157
158
../../viam/sdk/registry/registry.hpp
159
+ ../../viam/sdk/resource /reconfigurable.hpp
158
160
../../viam/sdk/resource /resource .hpp
159
161
../../viam/sdk/resource /resource_api.hpp
160
162
../../viam/sdk/resource /resource_manager.hpp
Original file line number Diff line number Diff line change 1
1
#include < viam/sdk/module/service.hpp>
2
2
3
3
#include < exception>
4
- #include < fstream>
5
- #include < iostream>
6
4
#include < memory>
7
5
#include < sstream>
8
- #include < stdexcept>
9
6
#include < string>
10
7
#include < sys/socket.h>
11
8
#include < sys/stat.h>
33
30
#include < viam/sdk/config/resource.hpp>
34
31
#include < viam/sdk/module/handler_map.hpp>
35
32
#include < viam/sdk/registry/registry.hpp>
33
+ #include < viam/sdk/resource/reconfigurable.hpp>
36
34
#include < viam/sdk/resource/resource.hpp>
37
35
#include < viam/sdk/resource/resource_api.hpp>
38
36
#include < viam/sdk/resource/resource_manager.hpp>
@@ -121,7 +119,7 @@ ::grpc::Status ModuleService::ReconfigureResource(
121
119
" as it doesn't exist." );
122
120
}
123
121
try {
124
- res-> reconfigure ( deps, cfg);
122
+ Reconfigurable::reconfigure_if_reconfigurable (res, deps, cfg);
125
123
return grpc::Status ();
126
124
} catch (const std::exception & exc) {
127
125
return grpc::Status (::grpc::INTERNAL, exc.what ());
Original file line number Diff line number Diff line change
1
+ #include < viam/sdk/resource/reconfigurable.hpp>
2
+
3
+ #include < memory>
4
+
5
+ namespace viam {
6
+ namespace sdk {
7
+
8
+ Reconfigurable::~Reconfigurable () = default ;
9
+ Reconfigurable::Reconfigurable () = default ;
10
+
11
+ void Reconfigurable::reconfigure_if_reconfigurable (const std::shared_ptr<Resource>& resource,
12
+ const Dependencies& deps,
13
+ const ResourceConfig& cfg) {
14
+ auto reconfigurable_res = std::dynamic_pointer_cast<Reconfigurable>(resource);
15
+ if (reconfigurable_res) {
16
+ reconfigurable_res->reconfigure (deps, cfg);
17
+ }
18
+ }
19
+
20
+ } // namespace sdk
21
+ } // namespace viam
Original file line number Diff line number Diff line change
1
+ #pragma once
2
+
3
+ #include < viam/sdk/config/resource.hpp>
4
+ #include < viam/sdk/resource/resource.hpp>
5
+
6
+ namespace viam {
7
+ namespace sdk {
8
+
9
+ class Reconfigurable {
10
+ public:
11
+ virtual ~Reconfigurable ();
12
+
13
+ // / @brief Reconfigures a resource.
14
+ // / @param deps Dependencies of the resource.
15
+ // / @param cfg The resource's config.
16
+ virtual void reconfigure (const Dependencies& deps, const ResourceConfig& cfg) = 0;
17
+
18
+ // / @brief Reconfigures a resource if it is Reconfigurable.
19
+ // / @param resource the Resource to reconfigure.
20
+ // / @param deps Dependencies of the resource.
21
+ // / @param cfg The resource's config.
22
+ static void reconfigure_if_reconfigurable (const std::shared_ptr<Resource>& resource,
23
+ const Dependencies& deps,
24
+ const ResourceConfig& cfg);
25
+
26
+ protected:
27
+ explicit Reconfigurable ();
28
+ };
29
+
30
+ } // namespace sdk
31
+ } // namespace viam
Original file line number Diff line number Diff line change 1
1
#include < viam/sdk/resource/resource.hpp>
2
2
3
- #include < stdexcept>
4
- #include < unordered_map>
5
-
6
3
#include < grpcpp/support/status.h>
7
4
8
5
#include < viam/sdk/common/proto_type.hpp>
@@ -21,8 +18,6 @@ std::string Resource::name() const {
21
18
return name_;
22
19
}
23
20
24
- void Resource::reconfigure (const Dependencies& deps, const ResourceConfig& cfg){};
25
-
26
21
ResourceName Resource::get_resource_name (std::string name) const {
27
22
ResourceName r;
28
23
*r.mutable_namespace_ () = kRDK ;
Original file line number Diff line number Diff line change @@ -25,11 +25,6 @@ class Resource {
25
25
// / @brief Returns a `ResourceName` for a particular resource name.
26
26
virtual viam::common::v1::ResourceName get_resource_name (std::string name) const ;
27
27
28
- // / @brief Reconfigures a resource.
29
- // / @param deps Dependencies of the resource.
30
- // / @param cfg The resource's config.
31
- virtual void reconfigure (const Dependencies& deps, const ResourceConfig& cfg);
32
-
33
28
// / @brief Return the resource's name.
34
29
virtual std::string name () const ;
35
30
You can’t perform that action at this time.
0 commit comments