apache-frift是否支持函数变量作为参数

Does apache thrift support function variable as parameter?

本文关键字:参数 变量 函数 是否 支持 apache-frift      更新时间:2023-10-16

我想使用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)
}

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

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

如果您想要一个具有多个处理选项的函数,请创建一些枚举并将其传递给该函数。更好的是,在您的服务中定义多个功能。如果你想真正允许用户逐个样本处理:要么将所有样本返回给用户,并在客户端进行相应的处理,要么,如果有太多数据无法通过网络一次传递,则提供"迭代器"服务:

struct MyPair {
i32 first;
i32 second;
}
typedef i32 QueryId;
service MyService {
QueryId startProcessing();
MyPair getNextSample(1: QueryId id);
}