apache thrift是否支持函数变量作为参数?

时间:2016-05-21 15:40:26

标签: c++ c++11 rpc thrift idl

我想使用FuncType作为foo函数的参数类型。节俭支持这个吗?如何在FuncType中定义类型?

struct FuncType {
  // std::function<std::vector<std::pair<int, int>>(const std::string &)>;
  // how to define here?
}

service WorkerService {
  bool foo(1:FuncType func)
}

1 个答案:

答案 0 :(得分:1)

Apache Thrift旨在允许在不同平台和环境之间进行RPC调用 。因此,不能传递像std::function<int(int)>这样的东西:如何将C ++中定义的本机函数转移到JavaScript,反之亦然?

(顺便说一下:即使在某种程度上可能,但是出于安全原因,允许服务器用户向ii注入一些代码通常是个坏主意。)

如果您想要具有多个处理选项的单个函数 - 创建一些枚举并将其传递给该函数。更好 - 在您的服务中定义多个功能。如果您想真正允许用户逐个样本处理:要么将所有样本返回给用户并在客户端中相应地处理它,要么,如果有太多数据要一次通过网络传递,请提供&#34; iterator&# 34;服务:

struct MyPair {
   i32 first;
   i32 second;
}

typedef i32 QueryId;

service MyService {
  QueryId startProcessing();
  MyPair getNextSample(1: QueryId id);
}