從前面看到類
Easy是封裝了一個請求,但往往需要傳送多個請求的情況,這樣就需要實現(xiàn)多個請求能同時工作的類,在第二人生里是把這部份功能放在類Multi里的,同樣它也是LLCurl類的嵌套類。它的聲明如下:
#001?class LLCurl::Multi
#002?{
#003?
?? LOG_CLASS(Multi);
#004?public:
#005?
??
#006?
?? Multi();
#007?
?? ~Multi();
#008?
?
分配一個傳送的請求。
#009?
?? Easy* allocEasy();
?
添加一個請求到庫操作隊列里。
#010?
?? bool addEasy(Easy* easy);
#011?
??
?
從庫操作隊列里刪除一個請求。
#012?
?? void removeEasy(Easy* easy);
#013?
?
讓外面的線程可以調(diào)用庫函數(shù)來收發(fā)網(wǎng)絡數(shù)據(jù)。
#014?
?? S32 process();
?
調(diào)用
libcurl庫來接收或發(fā)送網(wǎng)絡數(shù)據(jù)。
#015?
?? S32 perform();
#016?
??
?
調(diào)庫函數(shù)
curl_multi_info_read來讀取信息。
#017?
?? CURLMsg* info_read(S32* msgs_in_queue);
#018?
#019?
?? S32 mQueued;
#020?
?? S32 mErrorCount;
#021?
??
#022?private:
#023?
?? void easyFree(Easy*);
#024?
??
#025?
?? CURLM* mCurlMultiHandle;
#026?
#027?
?? typedef std::set<Easy*> easy_active_list_t;
#028?
?? easy_active_list_t mEasyActiveList;
#029?
?? typedef std::map<CURL*, Easy*> easy_active_map_t;
#030?
?? easy_active_map_t mEasyActiveMap;
#031?
?? typedef std::set<Easy*> easy_free_list_t;
#032?
?? easy_free_list_t mEasyFreeList;
#033?};
?
這個類主要把多個
Easy請求放到一起操作,這樣提供多個請求的處理,方便開發(fā)更多功能。實現(xiàn)這些功能通過調(diào)用庫函數(shù)curl_multi_init創(chuàng)建句柄、curl_multi_remove_handle刪除句柄、curl_multi_info_read函數(shù)讀取數(shù)據(jù)或者是否成功失敗信息、curl_multi_perform函數(shù)來傳送數(shù)據(jù)、curl_multi_add_handle添加操作的請求。
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
