Skip to content

Commit

Permalink
RSDK-4573: remove proto types from robot client apis (viamrobotics#207)
Browse files Browse the repository at this point in the history
Co-authored-by: Ethan Rodkin <ethan@viam.com>
  • Loading branch information
purplenicole730 and stuqdog authored Feb 15, 2024
1 parent 67c70ee commit 1dac2e9
Show file tree
Hide file tree
Showing 18 changed files with 543 additions and 281 deletions.
7 changes: 4 additions & 3 deletions src/viam/examples/camera/example_camera.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,12 @@ int main() {
throw;
}

std::vector<vs::ResourceName>* resource_names = robot->resource_names();
std::vector<vs::Name> resource_names = robot->resource_names();

cout << "Resources of the robot:" << endl;
for (vs::ResourceName resource : *resource_names) {
cout << " - " << resource.name() << " (" << resource.subtype() << ")" << endl;
for (const auto& resource : resource_names) {
cout << " - " << resource.name() << " (" << resource.api().resource_subtype() << ")"
<< endl;
}

std::string camera_name("camera1");
Expand Down
21 changes: 10 additions & 11 deletions src/viam/examples/dial/example_dial.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,26 +40,25 @@ int main() {
std::shared_ptr<RobotClient> robot = RobotClient::at_address(address, options);

// ensure we can query resources
std::vector<ResourceName>* resource_names = robot->resource_names();
std::vector<Name> resource_names = robot->resource_names();
std::cout << "Resources" << std::endl;
for (const ResourceName& resource : *resource_names) {
std::cout << "\tname: " << resource.name() << " (type:" << resource.type()
<< " subtype:" << resource.subtype() << ")" << std::endl;
for (const Name& resource : resource_names) {
std::cout << "\t" << resource << "\n" << std::endl;
}

// ensure we can query statuses
std::vector<Status> status_plural = robot->get_status();
std::vector<RobotClient::status> status_plural = robot->get_status();
std::cout << "Status plural len " << status_plural.size() << std::endl;
for (const Status& s : status_plural) {
std::cout << " Status! " << s.name().subtype() << std::endl;
for (const RobotClient::status& s : status_plural) {
std::cout << " Status! " << s.name->api().resource_subtype() << std::endl;
}

// ensure we can send requests for specific resources
std::vector<ResourceName> just_one = {resource_names->at(0)};
std::vector<Status> status_singular = robot->get_status(just_one);
std::vector<Name> just_one = {resource_names[0]};
std::vector<RobotClient::status> status_singular = robot->get_status(just_one);
std::cout << "Status singular len " << status_singular.size() << std::endl;
for (const Status& s : status_singular) {
std::cout << " Status! " << s.name().subtype() << std::endl;
for (const RobotClient::status& s : status_singular) {
std::cout << " Status! " << s.name->api().resource_subtype() << std::endl;
}

// ensure we can create clients to the robot
Expand Down
21 changes: 10 additions & 11 deletions src/viam/examples/dial_api_key/example_dial_api_key.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -42,26 +42,25 @@ int main() {
std::shared_ptr<RobotClient> robot = RobotClient::at_address(address, options);

// ensure we can query resources
std::vector<ResourceName>* resource_names = robot->resource_names();
std::vector<Name> resource_names = robot->resource_names();
std::cout << "Resources" << std::endl;
for (const ResourceName& resource : *resource_names) {
std::cout << "\tname: " << resource.name() << " (type:" << resource.type()
<< " subtype:" << resource.subtype() << ")" << std::endl;
for (const Name& resource : resource_names) {
std::cout << "\t" << resource << "\n" << std::endl;
}

// ensure we can query statuses
std::vector<Status> status_plural = robot->get_status();
std::vector<RobotClient::status> status_plural = robot->get_status();
std::cout << "Status plural len " << status_plural.size() << std::endl;
for (const Status& s : status_plural) {
std::cout << " Status! " << s.name().subtype() << std::endl;
for (const RobotClient::status& s : status_plural) {
std::cout << " Status! " << s.name->api().resource_subtype() << std::endl;
}

// ensure we can send requests for specific resources
std::vector<ResourceName> just_one = {resource_names->at(0)};
std::vector<Status> status_singular = robot->get_status(just_one);
std::vector<Name> just_one = {resource_names[0]};
std::vector<RobotClient::status> status_singular = robot->get_status(just_one);
std::cout << "Status singular len " << status_singular.size() << std::endl;
for (const Status& s : status_singular) {
std::cout << " Status! " << s.name().subtype() << std::endl;
for (const RobotClient::status& s : status_singular) {
std::cout << " Status! " << s.name->api().resource_subtype() << std::endl;
}

return EXIT_SUCCESS;
Expand Down
7 changes: 3 additions & 4 deletions src/viam/examples/modules/complex/client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,9 @@ int main() {
std::shared_ptr<RobotClient> robot = RobotClient::at_address(address, options);
// Print resources.
std::cout << "Resources" << std::endl;
std::vector<ResourceName>* resource_names = robot->resource_names();
for (const ResourceName& resource : *resource_names) {
std::cout << "\tname: " << resource.name() << " (type:" << resource.type()
<< " subtype:" << resource.subtype() << ")" << std::endl;
std::vector<Name> resource_names = robot->resource_names();
for (const Name& resource : resource_names) {
std::cout << "\t" << resource << "\n";
}

// Exercise Gizmo methods.
Expand Down
6 changes: 3 additions & 3 deletions src/viam/examples/motor/example_motor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,11 @@ int main() {
throw;
}

std::vector<vs::ResourceName>* resource_names = robot->resource_names();
std::vector<vs::Name> resource_names = robot->resource_names();

cout << "Resources of the robot:" << endl;
for (const vs::ResourceName& resource : *resource_names) {
cout << " - " << resource.name() << " (" << resource.subtype() << ")" << endl;
for (const vs::Name& resource : resource_names) {
cout << resource << endl;
}

std::string motor_name("motor1");
Expand Down
2 changes: 1 addition & 1 deletion src/viam/sdk/common/proto_type.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ Struct map_to_struct(AttributeMap dict) {

// NOLINTNEXTLINE(misc-no-recursion)
AttributeMap struct_to_map(Struct struct_) {
std::shared_ptr<std::unordered_map<std::string, std::shared_ptr<ProtoType>>> map =
AttributeMap map =
std::make_shared<std::unordered_map<std::string, std::shared_ptr<ProtoType>>>();

for (const auto& val : struct_.fields()) {
Expand Down
1 change: 1 addition & 0 deletions src/viam/sdk/common/proto_type.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ class ProtoType {

explicit ProtoType(bool b) : proto_type_(std::move(b)) {}
explicit ProtoType(std::string s) : proto_type_(std::move(s)) {}
explicit ProtoType(const char* c) : proto_type_(std::string(c)) {}
explicit ProtoType(int i) : proto_type_(std::move(i)) {}
explicit ProtoType(double d) : proto_type_(std::move(d)) {}
explicit ProtoType(AttributeMap m) : proto_type_(std::move(m)) {}
Expand Down
13 changes: 4 additions & 9 deletions src/viam/sdk/common/utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@
namespace viam {
namespace sdk {

using viam::common::v1::ResourceName;
using time_point = std::chrono::time_point<long long, std::chrono::nanoseconds>;

std::vector<ResourceName> resource_names_for_resource(const std::shared_ptr<Resource>& resource) {
// TODO: RSDK-6627 : move this function to `Resource` class.
std::vector<Name> resource_names_for_resource(const std::shared_ptr<Resource>& resource) {
std::string resource_type;
std::string resource_subtype;
std::vector<ResourceName> resource_names;
std::vector<Name> resource_names;
for (const auto& kv : Registry::registered_models()) {
const std::shared_ptr<const ModelRegistration> reg = kv.second;
if (reg->api().to_string() == resource->api().to_string()) {
Expand All @@ -41,12 +41,7 @@ std::vector<ResourceName> resource_names_for_resource(const std::shared_ptr<Reso
resource_subtype = resource->name();
}

ResourceName r;
*r.mutable_namespace_() = kRDK;
*r.mutable_name() = resource->name();
*r.mutable_type() = resource_type;
*r.mutable_subtype() = resource_subtype;
resource_names.push_back(r);
resource_names.push_back({{kRDK, resource_type, resource_subtype}, "", resource->name()});
}
return resource_names;
}
Expand Down
21 changes: 2 additions & 19 deletions src/viam/sdk/common/utils.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,35 +12,18 @@

#include <viam/sdk/common/proto_type.hpp>
#include <viam/sdk/components/component.hpp>
#include <viam/sdk/resource/resource_api.hpp>

namespace viam {
namespace sdk {

using viam::common::v1::ResourceName;
const std::string kComponent = "component";
const std::string kResource = "resource";
const std::string kService = "service";
const std::string kRDK = "rdk";
const std::string kBuiltin = "builtin";

std::vector<viam::common::v1::ResourceName> resource_names_for_resource(
const std::shared_ptr<Resource>& resource);

class ResourceNameHasher {
public:
size_t operator()(ResourceName const& key) const {
return std::hash<std::string>()(key.SerializeAsString());
}
};
class ResourceNameEqual {
public:
bool operator()(ResourceName const& t1, ResourceName const& t2) const {
return !(t1.SerializeAsString().compare(t2.SerializeAsString()));
}
static bool check_equal(const ResourceName r1, const ResourceName r2) {
return r1.SerializeAsString().compare(r2.SerializeAsString());
}
};
std::vector<Name> resource_names_for_resource(const std::shared_ptr<Resource>& resource);

struct response_metadata {
std::chrono::time_point<long long, std::chrono::nanoseconds> captured_at;
Expand Down
2 changes: 1 addition & 1 deletion src/viam/sdk/module/service.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ std::shared_ptr<Resource> ModuleService::get_parent_resource_(Name name) {
parent_ = RobotClient::at_local_socket(parent_addr_, {0, boost::none});
}

return parent_->resource_by_name(name.to_proto());
return parent_->resource_by_name(name);
}

// TODO(RSDK-6528) - to the extent possible, switch to using `server_helper`
Expand Down
2 changes: 2 additions & 0 deletions src/viam/sdk/resource/resource.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
namespace viam {
namespace sdk {

using common::v1::ResourceName;

Resource::~Resource() = default;
Resource::Resource(std::string name) : name_(std::move(name)) {}

Expand Down
Loading

0 comments on commit 1dac2e9

Please sign in to comment.