如何强制 gRPC(protobuf3) 传递等于 0 的变量c++ 插件?

问题描述

原型文件

    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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...