Newer
Older
#ifndef __VEREIGN_GRPC_GEN_PASSPORT_API_HH
#define __VEREIGN_GRPC_GEN_PASSPORT_API_HH
#include <vereign/client_library/passport_api.gen.grpc.pb.h>
namespace vereign {
namespace grpc {
namespace gen {
template <class VereignService>
class PassportAPI : public client_library::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 client_library::ListPassportsForm* request,
client_library::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