我在IDL中定义了节俭服务方法ImportantData GetImportantData()
。我想为此方法返回一个状态码。我想做一些类似Status GetImportantData(ImportantData&)
的事情吗?
我经历了多个节俭教程,例如
以节俭为例
最佳答案
最简单的方法-将Status
包含在ImportantData
中。
Thrift必须具有可移植性-并非每种语言都支持输出参数(引用等),因此Thrift也不支持。因此,只能有一个返回的对象。
通常最好的解决方案是创建FunctionReturn
结构(在您的示例中包含ImportantData
和Status
),以提供良好的 future 兼容性等。这样,如果需要,可以添加更多的返回值。
顺便说一句:如果存在Status
来指示可能的错误,并且在大多数情况下都是StatusOk
,请考虑如果发生错误,则返回ImportantData
并抛出异常(Thrift支持)。这样的解决方案在C++中看起来会更好(一如既往-特殊情况-错误-应该包含异常)。