Commit c2b11e38 by xiongziliang

完善http超时管理

parent d9dea060
...@@ -35,7 +35,7 @@ HttpClient::HttpClient(){ ...@@ -35,7 +35,7 @@ HttpClient::HttpClient(){
} }
HttpClient::~HttpClient(){ HttpClient::~HttpClient(){
} }
void HttpClient::sendRequest(const string &strUrl){ void HttpClient::sendRequest(const string &strUrl,float fTimeOutSec){
auto protocol = FindField(strUrl.data(), NULL , "://"); auto protocol = FindField(strUrl.data(), NULL , "://");
uint16_t defaultPort; uint16_t defaultPort;
bool isHttps; bool isHttps;
...@@ -84,7 +84,7 @@ void HttpClient::sendRequest(const string &strUrl){ ...@@ -84,7 +84,7 @@ void HttpClient::sendRequest(const string &strUrl){
if(!alive() || bChanged){ if(!alive() || bChanged){
//InfoL << "reconnet:" << _lastHost; //InfoL << "reconnet:" << _lastHost;
startConnect(host, port); startConnect(host, port,fTimeOutSec);
}else{ }else{
SockException ex; SockException ex;
onConnect(ex); onConnect(ex);
......
...@@ -68,7 +68,7 @@ public: ...@@ -68,7 +68,7 @@ public:
typedef std::shared_ptr<HttpClient> Ptr; typedef std::shared_ptr<HttpClient> Ptr;
HttpClient(); HttpClient();
virtual ~HttpClient(); virtual ~HttpClient();
virtual void sendRequest(const string &url); virtual void sendRequest(const string &url,float fTimeOutSec);
void clear(){ void clear(){
_header.clear(); _header.clear();
_body.clear(); _body.clear();
......
...@@ -37,8 +37,8 @@ HttpClientImp::HttpClientImp() { ...@@ -37,8 +37,8 @@ HttpClientImp::HttpClientImp() {
HttpClientImp::~HttpClientImp() { HttpClientImp::~HttpClientImp() {
} }
void HttpClientImp::sendRequest(const string& url) { void HttpClientImp::sendRequest(const string& url,float fTimeOutSec) {
HttpClient::sendRequest(url); HttpClient::sendRequest(url,fTimeOutSec);
if(_isHttps){ if(_isHttps){
#ifndef ENABLE_OPENSSL #ifndef ENABLE_OPENSSL
shutdown(); shutdown();
......
...@@ -41,7 +41,7 @@ public: ...@@ -41,7 +41,7 @@ public:
typedef std::shared_ptr<HttpClientImp> Ptr; typedef std::shared_ptr<HttpClientImp> Ptr;
HttpClientImp(); HttpClientImp();
virtual ~HttpClientImp(); virtual ~HttpClientImp();
virtual void sendRequest(const string &url) override; virtual void sendRequest(const string &url,float fTimeOutSec) override;
#if defined(__GNUC__) && (__GNUC__ < 5) #if defined(__GNUC__) && (__GNUC__ < 5)
void public_onRecvBytes(const char *data,int len){ void public_onRecvBytes(const char *data,int len){
......
...@@ -41,7 +41,7 @@ HttpDownloader::~HttpDownloader() { ...@@ -41,7 +41,7 @@ HttpDownloader::~HttpDownloader() {
closeFile(); closeFile();
} }
void HttpDownloader::startDownload(const string& url, const string& filePath,bool bAppend,uint32_t timeOutSecond) { void HttpDownloader::startDownload(const string& url, const string& filePath,bool bAppend,float timeOutSecond) {
_filePath = filePath; _filePath = filePath;
_timeOutSecond = timeOutSecond; _timeOutSecond = timeOutSecond;
_downloadTicker.resetTime(); _downloadTicker.resetTime();
...@@ -64,7 +64,7 @@ void HttpDownloader::startDownload(const string& url, const string& filePath,boo ...@@ -64,7 +64,7 @@ void HttpDownloader::startDownload(const string& url, const string& filePath,boo
addHeader("Range", StrPrinter << "bytes=" << currentLen << "-" << endl); addHeader("Range", StrPrinter << "bytes=" << currentLen << "-" << endl);
} }
setMethod("GET"); setMethod("GET");
sendRequest(url); sendRequest(url,timeOutSecond);
} }
void HttpDownloader::onResponseHeader(const string& status,const HttpHeader& headers) { void HttpDownloader::onResponseHeader(const string& status,const HttpHeader& headers) {
......
...@@ -39,11 +39,10 @@ public: ...@@ -39,11 +39,10 @@ public:
HttpDownloader(); HttpDownloader();
virtual ~HttpDownloader(); virtual ~HttpDownloader();
//开始下载文件,默认断点续传方式下载 //开始下载文件,默认断点续传方式下载
void startDownload(const string &url,const string &filePath = "",bool bAppend = false,uint32_t timeOutSecond = 10 ); void startDownload(const string &url,const string &filePath = "",bool bAppend = false, float timeOutSecond = 10 );
void startDownload(const string &url,const onDownloadResult &cb,uint32_t timeOutSecond = 10){ void startDownload(const string &url,const onDownloadResult &cb,float timeOutSecond = 10){
_timeOutSecond = timeOutSecond;
setOnResult(cb); setOnResult(cb);
startDownload(url); startDownload(url,"",false,timeOutSecond);
} }
void setOnResult(const onDownloadResult &cb){ void setOnResult(const onDownloadResult &cb){
_onResult = cb; _onResult = cb;
......
...@@ -57,11 +57,11 @@ void HttpRequester::onDisconnect(const SockException &ex){ ...@@ -57,11 +57,11 @@ void HttpRequester::onDisconnect(const SockException &ex){
} }
} }
void HttpRequester::startRequester(const string &url,const HttpRequesterResult &onResult , uint32_t timeOutSecond){ void HttpRequester::startRequester(const string &url,const HttpRequesterResult &onResult , float timeOutSecond){
_onResult = onResult; _onResult = onResult;
_resTicker.resetTime(); _resTicker.resetTime();
_timeOutSecond = timeOutSecond; _timeOutSecond = timeOutSecond;
sendRequest(url); sendRequest(url,timeOutSecond);
} }
void HttpRequester::onManager(){ void HttpRequester::onManager(){
......
...@@ -40,7 +40,7 @@ public: ...@@ -40,7 +40,7 @@ public:
HttpRequester(); HttpRequester();
virtual ~HttpRequester(); virtual ~HttpRequester();
void startRequester(const string &url,const HttpRequesterResult &onResult,uint32_t timeOutSecond = 10); void startRequester(const string &url,const HttpRequesterResult &onResult,float timeOutSecond = 10);
private: private:
void onResponseHeader(const string &status,const HttpHeader &headers) override; void onResponseHeader(const string &status,const HttpHeader &headers) override;
void onResponseBody(const char *buf,size_t size,size_t recvedSize,size_t totalSize) override; void onResponseBody(const char *buf,size_t size,size_t recvedSize,size_t totalSize) override;
...@@ -50,7 +50,7 @@ private: ...@@ -50,7 +50,7 @@ private:
string _strRecvBody; string _strRecvBody;
HttpRequesterResult _onResult; HttpRequesterResult _onResult;
Ticker _resTicker; Ticker _resTicker;
uint32_t _timeOutSecond; float _timeOutSecond;
}; };
}//namespace Http }//namespace Http
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论