我正在編寫一個使用libwireshark
的應用程序,儘管這裏的具體內容並不完全相關。在單個函數中包裝來電/回調
我爲圖書館準備一個數據包進行解剖,因此調用epan_dissect_run(packet)
,依次解析給定的數據包,然後調用我指定的回調函數 - 使用register_tap_listener()
。
我的問題是:如何將這個過程包裝在一個函數中,dissected_information* MyDissectPacket(packet)
?正如我所概括的,這不僅適用於libwireshark
,而且適用於一般情況下明智地使用回調的庫。
答案取決於回調是異步執行的,在另一個線程還是兩者都執行?如果回調在同一個線程中同步執行,這是否會使包裝代碼更簡單?
也許這是我的Google-fu軟弱 - 我不知道我應該使用哪些術語,因爲這個問題肯定有很多次被問過。
在這種特殊情況下,工作是同步完成的。我想我正在尋找的是一種從稱爲解剖例程的函數中訪問解剖結果的方法。我知道這可以使用全局變量來完成,但是肯定有更好的方法嗎? – 2010-12-08 05:38:23