亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

第二人生的源碼分析(六十二)類Easy實現多協議文

系統 2089 0
從上一節里可以看到,在類 LLCurl聲明里主要聲明嵌套類Easy,最后通過嵌套類Easy來實現libcurl功能,下面就來仔細地分析它。它的類聲明如下:
#001?class LLCurl::Easy
#002?{
#003? ?? LOG_CLASS(Easy);
#004?
#005?private:
#006? ?? Easy();
#007? ??
#008?public:
?
用工廠模式來創建類實例。
#009? ?? static Easy* getEasy();
#010? ?? ~Easy();
#011?
?
返回當前 libcurl庫的句柄。
#012? ?? CURL* getCurlHandle() const { return mCurlEasyHandle; }
#013?
?
設置錯誤緩沖區。
#014? ?? void setErrorBuffer();
?
設置授權認證。
#015? ?? void setCA();
#016? ??
?
調用庫的函數 curl_easy_setopt。
#017? ?? void setopt(CURLoption option, S32 value);
#018? ?? // These assume the setter does not free value!
#019? ?? void setopt(CURLoption option, void* value);
#020? ?? void setopt(CURLoption option, char* value);
#021? ?? // Copies the string so that it is gauranteed to stick around
#022? ?? void setoptString(CURLoption option, const std::string& value);
#023? ??
?
調用庫函數 curl_slist_append來添加到列表頭里面。
#024? ?? void slist_append(const char* str);
?
設置 HTTP協議頭數據。
#025? ?? void setHeaders();
#026? ??
?
報告錯誤信息。
#027? ?? U32 report(CURLcode);
?
獲取傳送信息。
#028? ?? void getTransferInfo(LLCurl::TransferInfo* info);
#029?
?
在使用庫下載數據前的設置。
#030? ?? void prepRequest(const std::string& url, ResponderPtr, bool post = false);
#031? ??
#032? ?? const char* getErrorBuffer();
#033?
?
獲取輸入流對象。
#034? ?? std::stringstream& getInput() { return mInput; }
?
獲取輸出協議頭流對象。
#035? ?? std::stringstream& getHeaderOutput() { return mHeaderOutput; }
?
獲取輸出流對象。
#036? ?? LLIOPipe::buffer_ptr_t& getOutput() { return mOutput; }
#037? ?? const LLChannelDescriptors& getChannels() { return mChannels; }
#038? ??
?
清空所有流對象和一些狀態。
#039? ?? void resetState();
#040?
#041?private: ??
#042? ?? CURL*?????????????? mCurlEasyHandle;
#043? ?? struct curl_slist*?mHeaders;
#044? ??
#045? ?? std::stringstream?? mRequest;
#046? ?? LLChannelDescriptors mChannels;
#047? ?? LLIOPipe::buffer_ptr_t mOutput;
#048? ?? std::stringstream?? mInput;
#049? ?? std::stringstream?? mHeaderOutput;
#050? ?? char??????????????? mErrorBuffer[CURL_ERROR_SIZE];
#051?
#052? ?? // Note: char*'s not strings since we pass pointers to curl
#053? ?? std::vector<char*>?mStrings;
#054? ??
#055? ?? ResponderPtr??????? mResponder;
#056?};
?
上面的類Easy封裝了函數curl_easy_init來初始化一個協議實例,函數curl_easy_cleanup來刪除相應的實例,函數curl_easy_reset來復位相關狀態,通過函數curl_easy_getinfo來獲取信息。最后通過函數curl_easy_setopt來設置不同的參數,這樣才實現libcurl庫的功能調用。

第二人生的源碼分析(六十二)類Easy實現多協議文件傳送


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 成年女人视频在线观看免费 | 日韩在线 | 中文 | 久久这里只有精品首页 | 99热国产这里只有精品99 | 日本免费特黄aa毛片 | 一级国产20岁美女毛片 | 欧美精品色视频 | 91亚洲视频在线观看 | 五月天色中色 | 亚洲情区 | 亚洲综合国产精品 | 哥也操| 久久综合伊人77777 | 成年女人黄小视频 | 久操伊人| 手机看片福利盒子久久 | 欧美日韩一级片在线观看 | 亚洲va欧美va国产 | 成人在线免费观看视频 | 久久国产高清一区二区三区 | 九九婷婷| 深夜激情网 | 国产精品视频一区国模私拍 | 亚洲欧美卡通成人制服动漫 | 九九精品视频免费 | 天天操中文字幕 | 久草免费在线 | 99久久免费看国产精品 | 国产成人福利夜色影视 | 成人网在线看 | 伊人黄色| 国产自愉自愉全免费高清 | 欧美高清在线视频在线99精品 | 99久久精品国产麻豆 | 在线欧美日韩 | 伊人久久婷婷丁香六月综合基地 | 久久精品国产久精国产果冻传媒 | 99热久久这里只精品 | 精品视频日本 | 久久国产视频精品 | 97精品视频在线观看 |