Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#ifndef __VEREIGN_GRPC_GEN_PASSPORT_API_HH
#define __VEREIGN_GRPC_GEN_PASSPORT_API_HH
#include <vereign/v1pb/passport_api.gen.grpc.pb.h>
namespace vereign {
namespace grpc {
namespace gen {
template <class VereignService>
class PassportAPI : public v1pb::PassportAPI::Service {
public:
using VereignServicePtr = std::unique_ptr<VereignService>;
PassportAPI(VereignServicePtr&& service)
: service_{std::move(service)}
{}
PassportAPI(const PassportAPI&) = delete;
PassportAPI& operator=(const PassportAPI&) = delete;
::grpc::Status ListPassports(
::grpc::ServerContext*,
const v1pb::ListPassportsForm* request,
v1pb::ListPassportsFormResponse* response
) override {
auto result_future = service_->ListPassports(request, response);
try {
result_future.get();
} catch (const std::exception& e) {
response->set_code("500");
response->set_status("Internal Service Error");
response->set_error(e.what());
} catch (...) {
response->set_code("500");
response->set_status("Internal Service Error");
response->set_error("Internal Service Error");
}
return ::grpc::Status::OK;
}
protected:
VereignServicePtr service_;
};
} // gen
} // namespace grpc
} // namespace vereign
#endif // __VEREIGN_GRPC_GEN_PASSPORT_API_HH