mirror of
				https://gitee.com/jiuyilian/embedded-framework.git
				synced 2025-10-24 18:20:15 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef GRPC_SERVER_H
 | 
						|
#define GRPC_SERVER_H
 | 
						|
 | 
						|
#include "grpcpp/grpcpp.h"
 | 
						|
using grpc::ServerBuilder;
 | 
						|
using grpc::Server;
 | 
						|
using grpc::Service;
 | 
						|
using grpc::ServerCompletionQueue;
 | 
						|
 | 
						|
// GRPC_DEFAULT_MAX_RECV_MESSAGE_LENGTH = 4M
 | 
						|
// GRPC_DEFAULT_MAX_SEND_MESSAGE_LENGTH = 4M
 | 
						|
#define GRPC_MAX_RECV_MESSAGE_LENGTH    1<<24 // 16M
 | 
						|
#define GRPC_MAX_SEND_MESSAGE_LENGTH    1<<24 // 16M
 | 
						|
 | 
						|
class GrpcServer {
 | 
						|
public:
 | 
						|
    GrpcServer(int port) : _port(port) {
 | 
						|
        char srvaddr[128] = {0};
 | 
						|
        snprintf(srvaddr, sizeof(srvaddr), "%s:%d", "0.0.0.0", _port);
 | 
						|
        build_.AddListeningPort(srvaddr, grpc::InsecureServerCredentials());
 | 
						|
        build_.AddChannelArgument(GRPC_ARG_KEEPALIVE_TIME_MS,    30000);
 | 
						|
        build_.AddChannelArgument(GRPC_ARG_KEEPALIVE_TIMEOUT_MS, 5000);
 | 
						|
        build_.AddChannelArgument(GRPC_ARG_KEEPALIVE_PERMIT_WITHOUT_CALLS, 1);
 | 
						|
        build_.SetMaxReceiveMessageSize(GRPC_MAX_RECV_MESSAGE_LENGTH);
 | 
						|
        build_.SetMaxSendMessageSize(GRPC_MAX_SEND_MESSAGE_LENGTH);
 | 
						|
    }
 | 
						|
 | 
						|
    void RegisterService(Service* service) {
 | 
						|
        build_.RegisterService(service);
 | 
						|
    }
 | 
						|
 | 
						|
    void Run(bool wait=true) {
 | 
						|
        server_ = build_.BuildAndStart();
 | 
						|
        if (wait) {
 | 
						|
            server_->Wait();
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
public:
 | 
						|
    int _port;
 | 
						|
    ServerBuilder build_;
 | 
						|
    std::unique_ptr<Server> server_;
 | 
						|
};
 | 
						|
 | 
						|
#endif // GRPC_SERVER_H
 |