У меня есть простая функция, которая обслуживается с помощью grp c, метод запуска этой службы такой:
void start_server() {
string addr("0.0.0.0:50002");
ImageServiceImpl service;
ServerBuilder builder;
builder.AddListeningPort(addr, grpc::InsecureServerCredentials());
builder.RegisterService(&service);
builder.SetMaxSendMessageSize(1L << 31);
builder.SetMaxReceiveMessageSize(1L << 31);
std::unique_ptr<grpc::Server> server(builder.BuildAndStart());
std::cout << "service started, listening to: " << addr << std::endl;
server->Wait();
}
Это стандартный сервер GRP c. Моя проблема в том, что мне нужен сервер для выполнения других программ, когда не вызывается запрос клиента. И когда приходит запрос клиента, серверная программа будет прервана, и сервер обработает запрос. После обработки запроса сервер продолжает выполнять свою программу «досуг». Проблема в том, что программа блокируется на server->Wait()
, поэтому, когда не поступает клиентский запрос, сервер ничего не может сделать, кроме как ждать, а это не то, что мне нужно.
Надеюсь, я выразил четко. Как я могу сделать это с GRP c?