【问题标题】:maintain state between callback function保持回调函数之间的状态
【发布时间】:2012-01-26 02:22:46
【问题描述】:

改写

我是haskell的新手。我正在尝试使用网络 pcap 包解析 pcap 文件。

我有字节流作为输入,所以我使用了 dispatchBS 函数和我自己的回调函数。

我的目标是从所有回调中获取串联结果。 [a] 解析的所有数据包。当 dispatchBS 的签名中没有任何内容来维护迄今为止解析的所有数据包的状态时,我如何跟踪到目前为止获得的所有数据包?

http://hackage.haskell.org/packages/archive/pcap/0.4.5/doc/html/Network-Pcap.html#t:CallbackBS

【问题讨论】:

  • 投反对票的人能否解释他们的理由,以便提问者改进他的问题?

标签: haskell pcap


【解决方案1】:

例如,您可以使用“循环”函数并提供自己的回调。此回调必须是一个 IO 操作,因此一个简单的解决方案是将其数据包参数附加到 IORef 中保存的序列(请参阅 Data.Sequence)。收到足够的数据包后,只需读取 IOVar。或者你可以用线程和队列做一些更复杂的事情,这取决于你想要实现的目标。

【讨论】:

  • 感谢您的回复。你能给我一些关于 IOVar 的参考吗?
  • 我认为他的意思是 IORef,在Data.IORef。它是标准库的一部分,我认为 GHC 甚至是原子的。
  • 不,它不是原子的。有一些原子更新操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-01
  • 1970-01-01
相关资源
最近更新 更多