Viam C++ SDK current
Loading...
Searching...
No Matches
api.hpp
1// Note that `Summation` is implemented with `MySummation` in impl.hpp and impl.cpp.
2#pragma once
3
4#include <vector>
5
6#include <grpcpp/channel.h>
7
8#include <viam/sdk/common/utils.hpp>
9#include <viam/sdk/config/resource.hpp>
12#include <viam/sdk/rpc/dial.hpp>
13#include <viam/sdk/services/service.hpp>
14
15#include "summation.grpc.pb.h"
16#include "summation.pb.h"
17
18using namespace viam::sdk;
19using namespace viam::service::summation::v1;
20
21// A `Summation` is a custom modular service.
22class Summation : public Service {
23 public:
24 // methods shared across all services
25 API api() const override;
26
27 virtual double sum(std::vector<double> numbers) = 0;
28
29 protected:
30 explicit Summation(std::string name);
31
32 explicit Summation(const ResourceConfig& cfg);
33};
34
35namespace viam {
36namespace sdk {
37template <>
39 static API api();
40};
41} // namespace sdk
42} // namespace viam
43
44// `SummationClient` is the gRPC client implementation of a `Summation`
45// service.
46class SummationClient : public Summation {
47 public:
49 SummationClient(std::string name, const ViamChannel& channel);
50
51 const ViamChannel& channel() const {
52 return *channel_;
53 }
54
55 double sum(std::vector<double> numbers) override;
56
57 private:
58 using StubType = SummationService::StubInterface;
59 std::unique_ptr<StubType> stub_;
60 const ViamChannel* channel_;
61};
62
63// `SummationServer` is the gRPC server implementation of a `Summation`
64// service.
65class SummationServer : public ResourceServer, public SummationService::Service {
66 public:
68 using service_type = SummationService;
69 explicit SummationServer(std::shared_ptr<ResourceManager> manager);
70
71 grpc::Status Sum(grpc::ServerContext* context,
72 const SumRequest* request,
73 SumResponse* response) override;
74};
Definition api.hpp:46
Definition api.hpp:65
Definition api.hpp:22
API api() const override
Returns the API associated with a particular resource.
Definition resource_api.hpp:21
Definition resource.hpp:43
Definition resource_server_base.hpp:8
virtual std::string name() const
Return the resource's name.
Definition service.hpp:10
Definition dial.hpp:25
Defines the resource registry and associated types.
Defines a general-purpose resource manager.
Definition resource_api.hpp:46