25 #ifndef SRC_COMMUNICATION_INCLUDE_CORBO_COMMUNICATION_MAIN_SERVICE_CLIENT_H_ 26 #define SRC_COMMUNICATION_INCLUDE_CORBO_COMMUNICATION_MAIN_SERVICE_CLIENT_H_ 30 #include <corbo-communication/services/master_service.grpc.pb.h> 32 #include <grpc++/grpc++.h> 52 class MasterServiceClient
56 MasterServiceClient() =
default;
59 virtual ~MasterServiceClient() =
default;
70 explicit MasterServiceClient(std::shared_ptr<grpc::Channel> channel) : _stub(services::MasterService::NewStub(channel)) {}
73 void setChannel(std::shared_ptr<grpc::Channel> channel) { _stub = services::MasterService::NewStub(channel); }
89 virtual std::unique_ptr<google::protobuf::Message> createParameterMsg()
const;
101 virtual bool setParameters(
const google::protobuf::Message& parameters,
messages::Status& status_msg,
int timeout_ms = 1000);
110 virtual bool getParameters(google::protobuf::Message& parameters,
int timeout_ms = 1000);
119 bool setPlant(
const messages::Plant& plant_msg,
messages::Status& status_msg,
int timeout_ms = 500);
127 bool getPlant(messages::Plant& plant_msg,
int timeout_ms = 500);
136 bool setController(
const messages::Controller& ctrl_msg,
messages::Status& status_msg,
int timeout_ms = 500);
144 bool getController(messages::Controller& ctrl_msg,
int timeout_ms = 500);
153 bool setObserver(
const messages::Observer& obs_msg,
messages::Status& status_msg,
int timeout_ms = 500);
161 bool getObserver(messages::Observer& obs_msg,
int timeout_ms = 500);
170 bool setTask(
const messages::Task& task_msg,
messages::Status& status_msg,
int timeout_ms = 500);
178 bool getTask(messages::Task& task_msg,
int timeout_ms = 500);
193 bool getAvailableSignals(std::function<
void(
const messages::Signal&)> feedback,
int timeout_ms = 500);
216 bool performTask(std::function<
void(
const messages::Signal&)> feedback, std::string* msg =
nullptr,
217 int timeout_ms = 99999999);
236 bool ping(
int timeout_ms);
247 bool stopTask(
int timeout_ms = 2000);
250 std::unique_ptr<services::MasterService::Stub> _stub;
255 #endif // RPC_SUPPORT 257 #endif // SRC_COMMUNICATION_INCLUDE_CORBO_COMMUNICATION_MAIN_SERVICE_CLIENT_H_