grpc_server.h 1002 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #ifndef GRPC_SERVER_H
  2. #define GRPC_SERVER_H
  3. #include "grpcpp/grpcpp.h"
  4. using grpc::ServerBuilder;
  5. using grpc::Server;
  6. using grpc::Service;
  7. using grpc::ServerCompletionQueue;
  8. class GrpcServer {
  9. public:
  10. GrpcServer(int port) : _port(port) {
  11. char srvaddr[128] = {0};
  12. snprintf(srvaddr, sizeof(srvaddr), "%s:%d", "0.0.0.0", _port);
  13. build_.AddListeningPort(srvaddr, grpc::InsecureServerCredentials());
  14. build_.AddChannelArgument(GRPC_ARG_KEEPALIVE_TIME_MS, 30000);
  15. build_.AddChannelArgument(GRPC_ARG_KEEPALIVE_TIMEOUT_MS, 5000);
  16. build_.AddChannelArgument(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS, 1);
  17. }
  18. void RegisterService(Service* service) {
  19. build_.RegisterService(service);
  20. }
  21. void Run(bool wait=true) {
  22. server_ = build_.BuildAndStart();
  23. if (wait) {
  24. server_->Wait();
  25. }
  26. }
  27. public:
  28. int _port;
  29. ServerBuilder build_;
  30. std::unique_ptr<Server> server_;
  31. };
  32. #endif // GRPC_SERVER_H