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