我正在尝试编写一个在服务器中应用过滤器的 finagle-thrift 服务。
finagle-thrift 从您实现的 thrift IDL 生成一个服务接口 (Iface),然后传递给该Thrift.serveIface(addr, Iface)
方法。还有另一种方法Thrift.serve(addr, Service[Req, Rep])
可用于提供更通用的服务。可以组合服务,所以我想做类似的事情,Thrift.service(addr, myFilter andThen myService)
但我不知道如何将 Iface 转换为服务。
该Thrift.serveIface
方法使用了一个私有方法,该方法serverFromIface
执行 Iface 到服务的转换,这将允许我在将服务传递给Thrift.serve
. 见:https ://github.com/twitter/finagle/blob/master/finagle-thrift/src/main/scala/com/twitter/finagle/rich.scala
由于该转换是私有的,我不知道应该如何在服务器中应用过滤器。