Skip to content
Closed
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
63 changes: 0 additions & 63 deletions src/viam/sdk/common/private/proto_utils.hpp

This file was deleted.

1 change: 0 additions & 1 deletion src/viam/sdk/services/navigation.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
#include <viam/sdk/services/navigation.hpp>

#include <viam/sdk/common/private/proto_utils.hpp>
#include <viam/sdk/common/utils.hpp>

namespace viam {
Expand Down
49 changes: 23 additions & 26 deletions src/viam/sdk/services/private/navigation_client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,26 +8,35 @@
#include <viam/api/service/navigation/v1/navigation.pb.h>

#include <viam/sdk/common/client_helper.hpp>
#include <viam/sdk/common/private/proto_utils.hpp>
#include <viam/sdk/common/proto_convert_vector.hpp>
#include <viam/sdk/common/proto_value.hpp>
#include <viam/sdk/common/utils.hpp>
#include <viam/sdk/services/navigation.hpp>

namespace viam {
namespace sdk {
namespace impl {

using namespace viam::service::navigation::v1;
namespace proto_convert_details {

Navigation::Waypoint from_proto(const viam::service::navigation::v1::Waypoint& proto) {
return Navigation::Waypoint{proto.id(), v2::from_proto(proto.location())};
}
template <>
struct from_proto<service::navigation::v1::Path> {
Navigation::Path operator()(const service::navigation::v1::Path* proto) const {
return {proto->destination_waypoint_id(), v2::from_proto(proto->geopoints())};
}
};

Navigation::Path from_proto(const viam::service::navigation::v1::Path& proto) {
Navigation::Path ret{proto.destination_waypoint_id()};
repeatedPtrToVec(proto.geopoints(), ret.geopoints);
return ret;
}
template <>
struct from_proto<service::navigation::v1::Waypoint> {
Navigation::Waypoint operator()(const service::navigation::v1::Waypoint* proto) const {
return {proto->id(), v2::from_proto(proto->location())};
}
};

} // namespace proto_convert_details

namespace impl {

using namespace viam::service::navigation::v1;

NavigationClient::NavigationClient(std::string name, std::shared_ptr<grpc::Channel> channel)
: Navigation(std::move(name)),
Expand Down Expand Up @@ -63,11 +72,7 @@ Navigation::LocationResponse NavigationClient::get_location(const ProtoStruct& e
std::vector<Navigation::Waypoint> NavigationClient::get_waypoints(const ProtoStruct& extra) {
return make_client_helper(this, *stub_, &StubType::GetWaypoints)
.with([&](auto& request) { *request.mutable_extra() = map_to_struct(extra); })
.invoke([](auto& response) {
std::vector<Navigation::Waypoint> ret;
repeatedPtrToVec(response.waypoints(), ret, from_proto);
return ret;
});
.invoke([](auto& response) { return v2::from_proto(response.waypoints()); });
}

void NavigationClient::add_waypoint(const geo_point& location, const ProtoStruct& extra) {
Expand All @@ -91,21 +96,13 @@ void NavigationClient::remove_waypoint(const std::string id, const ProtoStruct&
std::vector<geo_geometry> NavigationClient::get_obstacles(const ProtoStruct& extra) {
return make_client_helper(this, *stub_, &StubType::GetObstacles)
.with([&](auto& request) { *request.mutable_extra() = map_to_struct(extra); })
.invoke([](auto& response) {
std::vector<geo_geometry> ret;
repeatedPtrToVec(response.obstacles(), ret);
return ret;
});
.invoke([](auto& response) { return v2::from_proto(response.obstacles()); });
}

std::vector<NavigationClient::Path> NavigationClient::get_paths(const ProtoStruct& extra) {
return make_client_helper(this, *stub_, &StubType::GetPaths)
.with([&](auto& request) { *request.mutable_extra() = map_to_struct(extra); })
.invoke([](auto& response) {
std::vector<Path> ret;
repeatedPtrToVec(response.paths(), ret, from_proto);
return ret;
});
.invoke([](auto& response) { return v2::from_proto(response.paths()); });
}

NavigationClient::Properties NavigationClient::get_properties() {
Expand Down
46 changes: 25 additions & 21 deletions src/viam/sdk/services/private/navigation_server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
#include <grpcpp/support/status.h>

#include <viam/sdk/common/pose.hpp>
#include <viam/sdk/common/private/proto_utils.hpp>
#include <viam/sdk/common/proto_value.hpp>
#include <viam/sdk/common/service_helper.hpp>
#include <viam/sdk/common/utils.hpp>
Expand All @@ -13,23 +12,31 @@

namespace viam {
namespace sdk {
namespace impl {

using namespace service::navigation::v1;
namespace proto_convert_details {

viam::service::navigation::v1::Waypoint to_proto(const Navigation::Waypoint& wp) {
viam::service::navigation::v1::Waypoint ret;
*ret.mutable_id() = wp.id;
*ret.mutable_location() = v2::to_proto(wp.location);
return ret;
}
template <>
struct to_proto<Navigation::Path> {
void operator()(const Navigation::Path& self, service::navigation::v1::Path* proto) const {
*(proto->mutable_destination_waypoint_id()) = self.destination_waypoint_id;
*(proto->mutable_geopoints()) = v2::to_proto(self.geopoints);
}
};

viam::service::navigation::v1::Path to_proto(const Navigation::Path& p) {
viam::service::navigation::v1::Path ret;
*ret.mutable_destination_waypoint_id() = p.destination_waypoint_id;
vecToRepeatedPtr(p.geopoints, *ret.mutable_geopoints());
return ret;
}
template <>
struct to_proto<Navigation::Waypoint> {
void operator()(const Navigation::Waypoint& self,
service::navigation::v1::Waypoint* proto) const {
*(proto->mutable_id()) = self.id;
*(proto->mutable_location()) = v2::to_proto(self.location);
}
};

} // namespace proto_convert_details

namespace impl {

using namespace service::navigation::v1;

::grpc::Status NavigationServer::GetMode(::grpc::ServerContext*,
const GetModeRequest* request,
Expand Down Expand Up @@ -65,8 +72,7 @@ ::grpc::Status NavigationServer::GetWaypoints(::grpc::ServerContext*,
GetWaypointsResponse* response) noexcept {
return make_service_helper<Navigation>(
"NavigationServer::GetWaypoints", this, request)([&](auto& helper, auto& nav) {
const auto waypoints = nav->get_waypoints(helper.getExtra());
vecToRepeatedPtr(waypoints, *response->mutable_waypoints(), to_proto);
*(response->mutable_waypoints()) = v2::to_proto(nav->get_waypoints(helper.getExtra()));
});
}

Expand All @@ -91,8 +97,7 @@ ::grpc::Status NavigationServer::GetObstacles(::grpc::ServerContext*,
GetObstaclesResponse* response) noexcept {
return make_service_helper<Navigation>(
"NavigationServer::GetObstacles", this, request)([&](auto& helper, auto& nav) {
const auto obstacles = nav->get_obstacles(helper.getExtra());
vecToRepeatedPtr(obstacles, *response->mutable_obstacles());
*(response->mutable_obstacles()) = v2::to_proto(nav->get_obstacles(helper.getExtra()));
});
}

Expand All @@ -101,8 +106,7 @@ ::grpc::Status NavigationServer::GetPaths(::grpc::ServerContext*,
GetPathsResponse* response) noexcept {
return make_service_helper<Navigation>(
"NavigationServer::GetPaths", this, request)([&](auto& helper, auto& nav) {
const auto paths = nav->get_paths(helper.getExtra());
vecToRepeatedPtr(paths, *response->mutable_paths(), to_proto);
*response->mutable_paths() = v2::to_proto(nav->get_paths(helper.getExtra()));
});
}

Expand Down
Loading