3#include "absl/strings/str_cat.h"
9 : server_address_(server_address) {}
14 grpc::InsecureChannelCredentials());
15 stub_ = proto::CanvasAutomation::NewStub(channel);
16 return absl::OkStatus();
18 return absl::UnimplementedError(
"gRPC support not enabled");
24 if (!stub_)
return absl::FailedPreconditionError(
"Not connected");
26 grpc::ClientContext context;
27 proto::SetTileRequest request;
28 request.set_canvas_id(canvas_id);
31 request.set_tile_id(tile_id);
33 proto::SetTileResponse response;
34 grpc::Status status = stub_->SetTile(&context, request, &response);
37 return absl::InternalError(status.error_message());
39 if (!response.success()) {
40 return absl::InternalError(response.error());
42 return absl::OkStatus();
44 return absl::UnimplementedError(
"gRPC support not enabled");
50 if (!stub_)
return absl::FailedPreconditionError(
"Not connected");
52 grpc::ClientContext context;
53 proto::GetTileRequest request;
54 request.set_canvas_id(canvas_id);
58 proto::GetTileResponse response;
59 grpc::Status status = stub_->GetTile(&context, request, &response);
62 return absl::InternalError(status.error_message());
64 if (!response.success()) {
65 return absl::InternalError(response.error());
67 return response.tile_id();
69 return absl::UnimplementedError(
"gRPC support not enabled");
75 if (!stub_)
return absl::FailedPreconditionError(
"Not connected");
77 grpc::ClientContext context;
78 proto::SetTilesRequest request;
79 request.set_canvas_id(canvas_id);
81 for (
const auto& t : tiles) {
82 auto* tile = request.add_tiles();
85 tile->set_tile_id(t.tile_id);
88 proto::SetTilesResponse response;
89 grpc::Status status = stub_->SetTiles(&context, request, &response);
92 return absl::InternalError(status.error_message());
94 if (!response.success()) {
95 return absl::InternalError(response.error());
97 return absl::OkStatus();
99 return absl::UnimplementedError(
"gRPC support not enabled");
105 if (!stub_)
return absl::FailedPreconditionError(
"Not connected");
107 grpc::ClientContext context;
108 proto::SelectTileRequest request;
109 request.set_canvas_id(canvas_id);
113 proto::SelectTileResponse response;
114 grpc::Status status = stub_->SelectTile(&context, request, &response);
117 return absl::InternalError(status.error_message());
119 if (!response.success()) {
120 return absl::InternalError(response.error());
122 return absl::OkStatus();
124 return absl::UnimplementedError(
"gRPC support not enabled");
130 if (!stub_)
return absl::FailedPreconditionError(
"Not connected");
132 grpc::ClientContext context;
133 proto::SelectTileRectRequest request;
134 request.set_canvas_id(canvas_id);
135 auto* rect = request.mutable_rect();
141 proto::SelectTileRectResponse response;
142 grpc::Status status = stub_->SelectTileRect(&context, request, &response);
145 return absl::InternalError(status.error_message());
147 if (!response.success()) {
148 return absl::InternalError(response.error());
150 return absl::OkStatus();
152 return absl::UnimplementedError(
"gRPC support not enabled");
158 if (!stub_)
return absl::FailedPreconditionError(
"Not connected");
160 grpc::ClientContext context;
161 proto::ClearSelectionRequest request;
162 request.set_canvas_id(canvas_id);
164 proto::ClearSelectionResponse response;
165 grpc::Status status = stub_->ClearSelection(&context, request, &response);
168 return absl::InternalError(status.error_message());
170 if (!response.success()) {
178 if (!response.success())
return absl::InternalError(
"ClearSelection failed");
180 return absl::OkStatus();
182 return absl::UnimplementedError(
"gRPC support not enabled");
188 if (!stub_)
return absl::FailedPreconditionError(
"Not connected");
190 grpc::ClientContext context;
191 proto::ScrollToTileRequest request;
192 request.set_canvas_id(canvas_id);
195 request.set_center(center);
197 proto::ScrollToTileResponse response;
198 grpc::Status status = stub_->ScrollToTile(&context, request, &response);
201 return absl::InternalError(status.error_message());
203 if (!response.success()) {
204 return absl::InternalError(response.error());
206 return absl::OkStatus();
208 return absl::UnimplementedError(
"gRPC support not enabled");
214 if (!stub_)
return absl::FailedPreconditionError(
"Not connected");
216 grpc::ClientContext context;
217 proto::SetZoomRequest request;
218 request.set_canvas_id(canvas_id);
219 request.set_zoom(zoom);
221 proto::SetZoomResponse response;
222 grpc::Status status = stub_->SetZoom(&context, request, &response);
225 return absl::InternalError(status.error_message());
227 if (!response.success()) {
228 return absl::InternalError(response.error());
230 return absl::OkStatus();
232 return absl::UnimplementedError(
"gRPC support not enabled");
absl::Status SetTiles(const std::string &canvas_id, const std::vector< TileData > &tiles)
absl::Status SetZoom(const std::string &canvas_id, float zoom)
absl::Status SelectTile(const std::string &canvas_id, int x, int y)
absl::Status ClearSelection(const std::string &canvas_id)
absl::StatusOr< int > GetTile(const std::string &canvas_id, int x, int y)
absl::Status ScrollToTile(const std::string &canvas_id, int x, int y, bool center=true)
std::string server_address_
CanvasAutomationClient(const std::string &server_address)
absl::Status SelectTileRect(const std::string &canvas_id, int x1, int y1, int x2, int y2)
absl::Status SetTile(const std::string &canvas_id, int x, int y, int tile_id)