2011-07-22 31 views
2

一個正找一個異步HTTP客戶端庫與一些特定的需要:異步HTTP客戶端庫和油腔滑調事件循環

  • 必須有可能它實現它作爲一個glibmm源
  • 它必須是單threated
  • 它必須有一個LGPL,BSD,MIT或類似的許可證

爲了impement它作爲glibmm源,一個必須能夠訪問它的文件描述符,創建一個油嘴::的pollfd objec噸,我應該很好去。

我一直在看幾個庫,它們都具有一些問題:

  • libcurl的,幾乎可以做我想做的,多源API它具有curl_multi_fdset功能,返回FD_SET在不在。問題是,我不知道如何將fd_set轉換爲一個或多個Glib :: PollFD的
  • Poco,有一個HttpSessionClient,它在istream中返回,我無法找到解除阻塞讀取的方法。
  • Boost :: Asio需要使用io_service作爲事件循環。

任何人都可以克服這些樹庫看到的問題,或建議替代庫嗎?

+0

我會編寫自己的庫。 – Mike

+0

我結束了移植代碼,以提升:: asio和cpp-netlib – Allan

回答

0

Glib :: PollFD :: PollFD(int fd)是你想要的構造函數。 fd_set只是一組整數fds。在數學意義上使用「set」一詞,即在一個集合中不能出現多次fd,因此他們不會將其稱爲數組或列表。一個fd_set只是一個固定大小的緩衝區。通過製作一個fd_set並添加一些fds來實現它,然後在調試器中查看它,或者只是在十六進制中將其轉儲出去。

這是異步編程中的一種常見模式,您需要連接兩個異步事件循環。雖然你可以用超時輪詢兩個循環,但通常最好從一個事件循環中取出原始fds,並添加它們。