Newer
Older
#ifndef __VEREIGN_GRPC_PASSPORT_API_HH
#define __VEREIGN_GRPC_PASSPORT_API_HH
#include <vereign/grpc/gen/passport_api.hh>
namespace vereign {
namespace grpc {
template <class VereignService>
class PassportAPI final : public gen::PassportAPI<VereignService> {
public:
using VereignServicePtr = std::unique_ptr<VereignService>;
PassportAPI(VereignServicePtr&& service)
: gen::PassportAPI<VereignService>{std::move(service)}
{}
PassportAPI(const PassportAPI&) = delete;
PassportAPI& operator=(const PassportAPI&) = delete;
::grpc::Status ListPassportsManually(
::grpc::ServerContext*,
const client_library::ListPassportsForm* request,
client_library::ListPassportsFormResponse* response
) override {
auto result_future = this->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;
}
};
} // namespace grpc
} // namespace vereign
#endif // __VEREIGN_GRPC_PASSPORT_API_HH