Haskell:网络管道“回调”问题

时间:2013-05-23 01:00:25

标签: networking haskell conduit

我正在使用network-conduit和runTCPServer为我的搁浅服务器供电。

在这种情况下:

-- | Helper which represents a conduit chain for each client connection
serverApp :: Application SessionIO
serverApp appdata = do
    -- blah blah blah initializer code
    appSource appdata $$ decoder =$= protocol =$= encoder =$ appSink appdata

...

-- | Handles an input stream of 'Packet' objects and dispatches them
protocol :: Conduit Packet SessionIO Packet
protocol = undefined

协议执行的频率是多少?如果我希望在客户端套接字上经常执行某些操作,那么将其逻辑放在协议中是安全的,还是每次数据实际到达时都会调用它?

如果您解释管道“回调”工作的方式,我将不胜感激。 :)

问候。

1 个答案:

答案 0 :(得分:2)

FP Complete的Conduit Overview结束解释了Conduit的流量控制:特别是当需要数据时,管道只会上升。因此,如果你依赖于基于时间的副作用,那么依靠被调用的管道就不是这样做的。

这在很大程度上取决于您的用例和管道链的结构,但是,因为您可以将延迟放入Conduit以对其进行速率限制或类似的事情。