如何在Thrift服务方法中返回多个值?

时间:2015-10-01 08:43:49

标签: c++ thrift

我在IDL中定义了一个thrift服务方法ImportantData GetImportantData()。我想返回此方法的状态代码。我想做一些事情,比如Status GetImportantData(ImportantData&)有没有办法做到这一点?

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

1 个答案:

答案 0 :(得分:2)

最简单的方法 - 在Status内添加ImportantData

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

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

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