问题描述
原型文件
Syntax = "proto3";
service ConfiguratorDasService {
rpc GetController(GetControllerReq) returns (GetControllerRes) {};
}
message GetControllerReq {
uint32 number = 1;
}
message GetControllerRes {
string value = 1;
bool done = 2;
}
cpp 文件
CDeviceSh CConfiguration::GetController(uint32_t id)
{
GetControllerReq request;
request.set_number(id);
auto dump = request.SerializeAsstring();
GetControllerRes reply;
ClientContext context;
Status status = m_stub->GetController(&context,request,&reply);
if(status.ok())
return !reply.done() ? CreateController(reply.value()) : nullptr;
m_Debug->FormatStrToFile("GRPC::%s",status.error_message());
return nullptr;
}
如果在 GetController(id) id > 0 中,则 status.ok() = true 和变量“dump" 有一些字节。 如果在 GetController(id) id = 0 中,则 status.ok() = false 和变量“dump " 为空且 status.error_message() = "validationError"。如果您查看服务器日志,则会收到一个空请求。如果替换
request.set_number(id); <-> auto res = google::protobuf::textformat::ParseFromString("number: 0",&request);
结果不变
BloomrPC 正确处理来自 0
的请求{
"number": 0
}
回答
{
"value": "dev.1-4.fk","done": false
}
如何强制 gRPC(c++) 将 number = 0 发送到服务器而不是空请求?预先感谢您... gRPC 1.33 protoc 3.13
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)