5 #include <condition_variable>
7 #include <grpcpp/grpcpp.h>
8 #include <grpcpp/server.h>
9 #include <grpcpp/server_builder.h>
10 #include <grpcpp/server_context.h>
12 #include <grpcpp/ext/proto_server_reflection_plugin.h>
13 #include <grpcpp/health_check_service_interface.h>
15 #include "AglShellGrpcClient.h"
16 #include "agl_shell.grpc.pb.h"
19 const char kDefaultGrpcServiceAddress[] = "127.0.0.1:14005";
22 GrpcClient::GrpcClient()
24 auto channel = grpc::CreateChannel(kDefaultGrpcServiceAddress,
25 grpc::InsecureChannelCredentials());
28 m_stub = agl_shell_ipc::AglShellManagerService::NewStub(channel);
29 reader = new Reader(m_stub.get());
34 GrpcClient::ActivateApp(const std::string& app_id, const std::string& output_name)
36 agl_shell_ipc::ActivateRequest request;
38 request.set_app_id(app_id);
39 request.set_output_name(output_name);
41 grpc::ClientContext context;
42 ::agl_shell_ipc::ActivateResponse reply;
44 grpc::Status status = m_stub->ActivateApp(&context, request, &reply);
49 GrpcClient::DeactivateApp(const std::string& app_id)
51 agl_shell_ipc::DeactivateRequest request;
53 request.set_app_id(app_id);
55 grpc::ClientContext context;
56 ::agl_shell_ipc::DeactivateResponse reply;
58 grpc::Status status = m_stub->DeactivateApp(&context, request, &reply);
63 GrpcClient::SetAppFloat(const std::string& app_id, int32_t x_pos, int32_t y_pos)
65 agl_shell_ipc::FloatRequest request;
67 request.set_app_id(app_id);
68 request.set_x_pos(x_pos);
69 request.set_y_pos(y_pos);
71 grpc::ClientContext context;
72 ::agl_shell_ipc::FloatResponse reply;
74 grpc::Status status = m_stub->SetAppFloat(&context, request, &reply);
79 GrpcClient::SetAppNormal(const std::string& app_id)
81 agl_shell_ipc::NormalRequest request;
83 request.set_app_id(app_id);
85 grpc::ClientContext context;
86 ::agl_shell_ipc::NormalResponse reply;
88 grpc::Status status = m_stub->SetAppNormal(&context, request, &reply);
93 GrpcClient::SetAppFullscreen(const std::string& app_id)
95 agl_shell_ipc::FullscreenRequest request;
97 request.set_app_id(app_id);
99 grpc::ClientContext context;
100 ::agl_shell_ipc::FullscreenResponse reply;
102 grpc::Status status = m_stub->SetAppFullscreen(&context, request, &reply);
107 GrpcClient::SetAppOnOutput(const std::string& app_id, const std::string &output)
109 agl_shell_ipc::AppOnOutputRequest request;
111 request.set_app_id(app_id);
112 request.set_output(output);
114 grpc::ClientContext context;
115 ::agl_shell_ipc::AppOnOutputResponse reply;
117 grpc::Status status = m_stub->SetAppOnOutput(&context, request, &reply);
122 GrpcClient::SetAppPosition(const std::string& app_id, int32_t x, int32_t y)
124 agl_shell_ipc::AppPositionRequest request;
126 request.set_app_id(app_id);
130 grpc::ClientContext context;
131 ::agl_shell_ipc::AppPositionResponse reply;
133 grpc::Status status = m_stub->SetAppPosition(&context, request, &reply);
138 GrpcClient::SetAppScale(const std::string& app_id, int32_t width, int32_t height)
140 agl_shell_ipc::AppScaleRequest request;
142 request.set_app_id(app_id);
143 request.set_width(width);
144 request.set_height(height);
146 grpc::ClientContext context;
147 ::agl_shell_ipc::AppScaleResponse reply;
149 grpc::Status status = m_stub->SetAppScale(&context, request, &reply);
155 GrpcClient::SetAppSplit(const std::string& app_id, uint32_t orientation,
156 int32_t width, int32_t sticky, const std::string& output_name)
158 agl_shell_ipc::SplitRequest request;
160 request.set_app_id(app_id);
161 request.set_output_name(output_name);
162 request.set_tile_orientation(orientation);
163 request.set_width(width);
164 request.set_sticky(sticky);
166 grpc::ClientContext context;
167 ::agl_shell_ipc::SplitResponse reply;
169 grpc::Status status = m_stub->SetAppSplit(&context, request, &reply);
174 GrpcClient::Wait(void)
176 return reader->Await();
180 GrpcClient::AppStatusState(Callback callback)
182 reader->AppStatusState(callback);
185 std::vector<std::string>
186 GrpcClient::GetOutputs()
188 grpc::ClientContext context;
189 std::vector<std::string> v;
191 ::agl_shell_ipc::OutputRequest request;
192 ::agl_shell_ipc::ListOutputResponse response;
194 grpc::Status status = m_stub->GetOutputs(&context, request, &response);
196 return std::vector<std::string>();
198 for (int i = 0; i < response.outputs_size(); i++) {
199 ::agl_shell_ipc::OutputResponse rresponse = response.outputs(i);
200 v.push_back(rresponse.name());