поддерживать состояние между функцией обратного вызова - PullRequest
3 голосов
/ 16 января 2012

Перефразировать

Я новичок в Хаскеле. Я пытаюсь проанализировать файл pcap с помощью сетевого пакета pcap.

У меня есть поток байтов в качестве входных данных, поэтому я использовал функцию dispatchBS со своей собственной функцией обратного вызова.

Моя цель - получить объединенный результат от всех обратных вызовов. [a] из всех проанализированных пакетов. Как я могу отслеживать все пакеты, полученные до сих пор, когда dispatchBS не имеет ничего в своей подписи, чтобы поддерживать состояние всех проанализированных пакетов до сих пор?

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

1 Ответ

1 голос
/ 16 января 2012

Например, вы можете использовать функцию «loop» и предоставить свой собственный обратный вызов.Этот обратный вызов должен быть действием ввода-вывода, поэтому одним из простых решений будет добавление аргумента пакета в последовательность (см. Data.Sequence), хранящуюся в IORef.Как только вы получили достаточно пакетов, просто прочитайте IOVar.Или вы можете сделать что-то более сложное с потоками и очередями, в зависимости от того, чего вы пытаетесь достичь.

...