Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 0 additions & 16 deletions src/viam/examples/dial/example_dial.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
#include <viam/sdk/robot/service.hpp>
#include <viam/sdk/rpc/dial.hpp>

using viam::robot::v1::Status;
using namespace viam::sdk;

int main() {
Expand All @@ -46,21 +45,6 @@ int main() {
std::cout << "\t" << resource << "\n";
}

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

// ensure we can create clients to the robot
auto gc = robot->resource_by_name<GenericComponent>("generic1");
if (gc) {
Expand Down
15 changes: 0 additions & 15 deletions src/viam/examples/dial_api_key/example_dial_api_key.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,20 +59,5 @@ int main(int argc, char* argv[]) {
std::cout << "\t" << resource << "\n";
}

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

return EXIT_SUCCESS;
}
10 changes: 0 additions & 10 deletions src/viam/sdk/registry/registry.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,6 @@
namespace viam {
namespace sdk {

using viam::robot::v1::Status;

ResourceServerRegistration::~ResourceServerRegistration() = default;
ResourceClientRegistration::~ResourceClientRegistration() = default;

Expand Down Expand Up @@ -159,14 +157,6 @@ Registry::registered_models() {
return resources_;
}

// NOLINTNEXTLINE(readability-convert-member-functions-to-static)
Status ModelRegistration::create_status(const std::shared_ptr<Resource>& resource) const {
Status status;
*status.mutable_name() = resource->get_resource_name().to_proto();
*status.mutable_status() = google::protobuf::Struct();
return status;
}

const google::protobuf::ServiceDescriptor* ResourceServerRegistration::service_descriptor() const {
return service_descriptor_;
}
Expand Down
3 changes: 0 additions & 3 deletions src/viam/sdk/registry/registry.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,9 +95,6 @@ class ModelRegistration {
/// @throws Can throw exceptions, which will be returned to the parent via gRPC.
std::function<std::vector<std::string>(ResourceConfig)> validate;

/// @brief Creates a `Status` object for a given resource.
viam::robot::v1::Status create_status(const std::shared_ptr<Resource>& resource) const;

private:
// default_validator is the default validator for all models if no validator
// is provided in construction. No dependencies are returned.
Expand Down
53 changes: 0 additions & 53 deletions src/viam/sdk/robot/client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ using viam::robot::v1::DiscoveryQuery;
using viam::robot::v1::FrameSystemConfig;
using viam::robot::v1::Operation;
using viam::robot::v1::RobotService;
using viam::robot::v1::Status;

// gRPC responses are frequently coming back with a spurious `Stream removed`
// error, leading to unhelpful and misleading logging. We should figure out why
Expand Down Expand Up @@ -80,20 +79,6 @@ RobotClient::frame_system_config from_proto(const FrameSystemConfig& proto) {
return fsconfig;
}

RobotClient::status from_proto(const Status& proto) {
RobotClient::status status;
if (proto.has_name()) {
status.name = Name::from_proto(proto.name());
}
if (proto.has_status()) {
status.status_map = v2::from_proto(proto.status());
}
if (proto.has_last_reconfigured()) {
status.last_reconfigured = timestamp_to_time_pt(proto.last_reconfigured());
}
return status;
}

RobotClient::operation from_proto(const Operation& proto) {
RobotClient::operation op;
op.id = proto.id();
Expand Down Expand Up @@ -126,13 +111,6 @@ bool operator==(const RobotClient::frame_system_config& lhs,
v2::to_proto(rhs.kinematics).SerializeAsString();
}

bool operator==(const RobotClient::status& lhs, const RobotClient::status& rhs) {
return lhs.name == rhs.name &&
v2::to_proto(lhs.status_map).SerializeAsString() ==
v2::to_proto(rhs.status_map).SerializeAsString() &&
lhs.last_reconfigured == rhs.last_reconfigured;
}

bool operator==(const RobotClient::operation& lhs, const RobotClient::operation& rhs) {
return lhs.id == rhs.id && lhs.method == rhs.method && lhs.session_id == rhs.session_id &&
lhs.arguments == rhs.arguments && lhs.started == rhs.started;
Expand Down Expand Up @@ -167,37 +145,6 @@ void RobotClient::close() {
bool is_error_response(const grpc::Status& response) {
return !response.ok() && (response.error_message() != kStreamRemoved);
}
std::vector<RobotClient::status> RobotClient::get_status() {
auto resources = resource_names();
return get_status(resources);
}
// gets statuses of components associated with robot. If a specific component
// vector is provided, only statuses for the given Names will be
// returned
std::vector<RobotClient::status> RobotClient::get_status(std::vector<Name>& components) {
viam::robot::v1::GetStatusRequest req;
viam::robot::v1::GetStatusResponse resp;
ClientContext ctx;
for (const Name& name : components) {
*req.mutable_resource_names()->Add() = name.to_proto();
}

const grpc::Status response = impl_->stub_->GetStatus(ctx, req, &resp);
if (is_error_response(response)) {
BOOST_LOG_TRIVIAL(error) << "Error getting status: " << response.error_message()
<< response.error_details();
}

const RepeatedPtrField<Status> resp_status = resp.status();

std::vector<status> statuses = std::vector<status>();

for (const Status& s : resp_status) {
statuses.push_back(from_proto(s));
}

return statuses;
}

std::vector<RobotClient::operation> RobotClient::get_operations() {
const viam::robot::v1::GetOperationsRequest req;
Expand Down
16 changes: 0 additions & 16 deletions src/viam/sdk/robot/client.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,13 +54,6 @@ class RobotClient {
friend bool operator==(const frame_system_config& lhs, const frame_system_config& rhs);
};

struct status {
boost::optional<Name> name;
ProtoStruct status_map;
boost::optional<time_pt> last_reconfigured;
friend bool operator==(const status& lhs, const status& rhs);
};

struct operation {
std::string id;
std::string method;
Expand Down Expand Up @@ -129,15 +122,6 @@ class RobotClient {
/// @return The list of operations currently running on the calling robot.
std::vector<operation> get_operations();

/// @brief Get the status of the requested robot components.
/// @param components A list of the specific components for which status is desired.
/// @return A list of statuses.
std::vector<status> get_status(std::vector<Name>& components);

/// @brief Get the status of all robot components.
/// @return A list of statuses.
std::vector<status> get_status();

std::vector<discovery> discover_components(const std::vector<discovery_query>& queries);

/// @brief Transform a given `Pose` to a new specified destination which is a reference frame.
Expand Down
91 changes: 0 additions & 91 deletions src/viam/sdk/robot/service.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ namespace sdk {

using google::protobuf::RepeatedPtrField;
using viam::common::v1::ResourceName;
using viam::robot::v1::Status;

namespace {
std::vector<Name> registered_models_for_resource(const std::shared_ptr<Resource>& resource) {
Expand Down Expand Up @@ -73,47 +72,6 @@ std::vector<ResourceName> RobotService_::generate_metadata_() {
return metadata;
}

std::vector<Status> RobotService_::generate_status_(
const RepeatedPtrField<ResourceName>& resource_names) {
std::vector<Status> statuses;
for (const auto& cmp : resource_manager()->resources()) {
const std::shared_ptr<Resource> resource = cmp.second;
for (const auto& kv : Registry::registered_models()) {
const std::shared_ptr<const ModelRegistration> registration = kv.second;
if (registration->api().resource_subtype() == resource->api().resource_subtype()) {
bool resource_present = false;
const ResourceName name = resource->get_resource_name().to_proto();
for (const auto& resource_name : resource_names) {
if (name.SerializeAsString() == resource_name.SerializeAsString()) {
resource_present = true;
break;
}
}

if (resource_present) {
const Status status = registration->create_status(resource);
statuses.push_back(status);
}
}
}
}

std::vector<Status> returnable_statuses;
for (auto& status : statuses) {
bool status_name_is_known = false;
for (const auto& resource_name : resource_names) {
if (status.name().SerializeAsString() == resource_name.SerializeAsString()) {
status_name_is_known = true;
break;
}
}
if (status_name_is_known) {
returnable_statuses.push_back(status);
}
}
return returnable_statuses;
}

::grpc::Status RobotService_::ResourceNames(::grpc::ServerContext*,
const viam::robot::v1::ResourceNamesRequest* request,
viam::robot::v1::ResourceNamesResponse* response) {
Expand All @@ -129,55 +87,6 @@ ::grpc::Status RobotService_::ResourceNames(::grpc::ServerContext*,
return ::grpc::Status();
}

::grpc::Status RobotService_::GetStatus(::grpc::ServerContext*,
const ::viam::robot::v1::GetStatusRequest* request,
::viam::robot::v1::GetStatusResponse* response) {
if (!request) {
return ::grpc::Status(::grpc::StatusCode::INVALID_ARGUMENT,
"Called [GetStatus] without a request");
};

RepeatedPtrField<Status>* response_status = response->mutable_status();
const std::vector<Status> statuses = generate_status_(request->resource_names());
for (const Status& status : statuses) {
*response_status->Add() = status;
}

return ::grpc::Status();
}

void RobotService_::stream_status(
const viam::robot::v1::StreamStatusRequest* request,
::grpc::ServerWriter<::viam::robot::v1::StreamStatusResponse>* writer,
int interval) {
while (true) {
const std::vector<Status> statuses = generate_status_(request->resource_names());
viam::robot::v1::StreamStatusResponse response;
RepeatedPtrField<Status>* response_status = response.mutable_status();
for (const Status& status : statuses) {
*response_status->Add() = status;
}

writer->Write(response);
std::this_thread::sleep_for(std::chrono::seconds(interval));
}
}

::grpc::Status RobotService_::StreamStatus(
::grpc::ServerContext*,
const ::viam::robot::v1::StreamStatusRequest* request,
::grpc::ServerWriter<::viam::robot::v1::StreamStatusResponse>* writer) {
uint64_t interval = 1;
if (request->every().seconds() > 0) {
interval = request->every().seconds();
}

const RepeatedPtrField<ResourceName> resource_names = request->resource_names();
std::thread t(&RobotService_::stream_status, this, request, writer, interval);
t.detach();
return ::grpc::Status();
}

::grpc::Status RobotService_::StopAll(::grpc::ServerContext*,
const ::viam::robot::v1::StopAllRequest* request,
::viam::robot::v1::StopAllResponse*) {
Expand Down
13 changes: 0 additions & 13 deletions src/viam/sdk/robot/service.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ namespace sdk {

using google::protobuf::RepeatedPtrField;
using viam::common::v1::ResourceName;
using viam::robot::v1::Status;

/// @class RobotService_ service.hpp "robot/service.hpp"
/// @brief a gRPC service for a robot.
Expand All @@ -37,25 +36,13 @@ class RobotService_ : public ResourceServer, public viam::robot::v1::RobotServic
::grpc::Status ResourceNames(::grpc::ServerContext* context,
const ::viam::robot::v1::ResourceNamesRequest* request,
::viam::robot::v1::ResourceNamesResponse* response) override;
::grpc::Status GetStatus(::grpc::ServerContext* context,
const ::viam::robot::v1::GetStatusRequest* request,
::viam::robot::v1::GetStatusResponse* response) override;
::grpc::Status StreamStatus(
::grpc::ServerContext* context,
const ::viam::robot::v1::StreamStatusRequest* request,
::grpc::ServerWriter<::viam::robot::v1::StreamStatusResponse>* writer) override;
::grpc::Status StopAll(::grpc::ServerContext* context,
const ::viam::robot::v1::StopAllRequest* request,
::viam::robot::v1::StopAllResponse* response) override;

private:
std::mutex lock_;
std::vector<ResourceName> generate_metadata_();
std::vector<Status> generate_status_(const RepeatedPtrField<ResourceName>& resource_names);

void stream_status(const ::viam::robot::v1::StreamStatusRequest* request,
::grpc::ServerWriter<::viam::robot::v1::StreamStatusResponse>* writer,
int interval);
};

} // namespace sdk
Expand Down
39 changes: 0 additions & 39 deletions src/viam/sdk/tests/mocks/mock_robot.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ using viam::robot::v1::Discovery;
using viam::robot::v1::DiscoveryQuery;
using viam::robot::v1::FrameSystemConfig;
using viam::robot::v1::Operation;
using viam::robot::v1::Status;

pose default_pose(int offset) {
pose pose;
Expand Down Expand Up @@ -103,44 +102,6 @@ std::vector<Discovery> mock_proto_discovery_response() {
return v;
}

std::vector<RobotClient::status> mock_status_response() {
auto rns = mock_resource_names_response();

RobotClient::status camera_status;
camera_status.name = rns[0];

RobotClient::status motor_status;
motor_status.name = rns[1];

RobotClient::status generic_status;
generic_status.name = rns[2];

return {std::move(camera_status), std::move(motor_status), std::move(generic_status)};
}

std::vector<Status> mock_proto_status_response() {
auto rns = mock_proto_resource_names_response();

Status camera_status;
*camera_status.mutable_name() = rns[0];
*camera_status.mutable_status() = google::protobuf::Struct();

Status motor_status;
*motor_status.mutable_name() = rns[1];
*motor_status.mutable_status() = google::protobuf::Struct();

Status generic_status;
*generic_status.mutable_name() = rns[2];
*generic_status.mutable_status() = google::protobuf::Struct();

std::vector<Status> resp;
resp.push_back(camera_status);
resp.push_back(motor_status);
resp.push_back(generic_status);

return resp;
}

pose_in_frame mock_transform_response() {
return {"arm", default_pose()};
}
Expand Down
Loading
Loading