我在IDL中定义了节俭服务方法ImportantData GetImportantData()。我想为此方法返回一个状态码。我想做一些类似Status GetImportantData(ImportantData&)的事情吗?

我经历了多个节俭教程,例如
以节俭为例

  • Thrift By Example
  • Apache Thrift Documentation
  • Thrift the missing guide
  • 最佳答案

    最简单的方法-将Status包含在ImportantData中。

    Thrift必须具有可移植性-并非每种语言都支持输出参数(引用等),因此Thrift也不支持。因此,只能有一个返回的对象。

    通常最好的解决方案是创建FunctionReturn结构(在您的示例中包含ImportantDataStatus),以提供良好的 future 兼容性等。这样,如果需要,可以添加更多的返回值。

    顺便说一句:如果存在Status来指示可能的错误,并且在大多数情况下都是StatusOk,请考虑如果发生错误,则返回ImportantData并抛出异常(Thrift支持)。这样的解决方案在C++中看起来会更好(一如既往-特殊情况-错误-应该包含异常)。

    10-06 02:28