diff --git a/src/viam/sdk/module/service.cpp b/src/viam/sdk/module/service.cpp index 911be9bb3..b09b795ed 100644 --- a/src/viam/sdk/module/service.cpp +++ b/src/viam/sdk/module/service.cpp @@ -115,6 +115,7 @@ struct ModuleService::ServiceImpl : viam::module::v1::ModuleService::Service { Registry::get().lookup_model(cfg.name()); if (reg) { try { + res->close(); const std::shared_ptr res = reg->construct_resource(deps, cfg); manager->replace_one(cfg.resource_name(), res); } catch (const std::exception& exc) { diff --git a/src/viam/sdk/resource/resource.cpp b/src/viam/sdk/resource/resource.cpp index caf4b94d1..71d6e1ee6 100644 --- a/src/viam/sdk/resource/resource.cpp +++ b/src/viam/sdk/resource/resource.cpp @@ -26,5 +26,8 @@ Name Resource::get_resource_name() const { return get_resource_name(kResource); } +// default behavior is to just return +void Resource::close() {} + } // namespace sdk } // namespace viam diff --git a/src/viam/sdk/resource/resource.hpp b/src/viam/sdk/resource/resource.hpp index dcf9f4363..32cd83940 100644 --- a/src/viam/sdk/resource/resource.hpp +++ b/src/viam/sdk/resource/resource.hpp @@ -25,6 +25,9 @@ class Resource { /// @brief Return the resource's name. virtual std::string name() const; + /// @brief Closes a resource + virtual void close(); + private: std::string name_;