mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2024-11-22 19:00:01 +08:00
Http客户端添加超时功能
This commit is contained in:
parent
c801de9965
commit
ae1b62c78f
@ -41,8 +41,9 @@ HttpDownloader::~HttpDownloader() {
|
||||
closeFile();
|
||||
}
|
||||
|
||||
void HttpDownloader::startDownload(const string& url, const string& filePath,bool bAppend) {
|
||||
void HttpDownloader::startDownload(const string& url, const string& filePath,bool bAppend,uint32_t timeOutSecond) {
|
||||
_filePath = filePath;
|
||||
_timeOutSecond = timeOutSecond;
|
||||
if(_filePath.empty()){
|
||||
_filePath = exeDir() + "HttpDownloader/" + MD5(url).hexdigest();
|
||||
}
|
||||
@ -124,5 +125,14 @@ void HttpDownloader::closeFile() {
|
||||
}
|
||||
}
|
||||
|
||||
void HttpDownloader::onManager(){
|
||||
if(elapsedTime() > _timeOutSecond * 1000){
|
||||
//超时
|
||||
onDisconnect(SockException(Err_timeout,"download timeout"));
|
||||
shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} /* namespace Http */
|
||||
} /* namespace ZL */
|
||||
|
@ -39,8 +39,9 @@ public:
|
||||
HttpDownloader();
|
||||
virtual ~HttpDownloader();
|
||||
//开始下载文件,默认断点续传方式下载
|
||||
void startDownload(const string &url,const string &filePath = "",bool bAppend = false);
|
||||
void startDownload(const string &url,const onDownloadResult &cb){
|
||||
void startDownload(const string &url,const string &filePath = "",bool bAppend = false,uint32_t timeOutSecond = 10 );
|
||||
void startDownload(const string &url,const onDownloadResult &cb,uint32_t timeOutSecond = 10){
|
||||
_timeOutSecond = timeOutSecond;
|
||||
setOnResult(cb);
|
||||
startDownload(url);
|
||||
}
|
||||
@ -52,11 +53,14 @@ private:
|
||||
void onResponseBody(const char *buf,size_t size,size_t recvedSize,size_t totalSize) override;
|
||||
void onResponseCompleted() override;
|
||||
void onDisconnect(const SockException &ex) override;
|
||||
void closeFile();
|
||||
void onManager() override;
|
||||
|
||||
void closeFile();
|
||||
|
||||
FILE *_saveFile = nullptr;
|
||||
string _filePath;
|
||||
onDownloadResult _onResult;
|
||||
uint32_t _timeOutSecond;
|
||||
bool _bDownloadSuccess = false;
|
||||
};
|
||||
|
||||
|
@ -57,10 +57,19 @@ void HttpRequester::onDisconnect(const SockException &ex){
|
||||
}
|
||||
}
|
||||
|
||||
void HttpRequester::startRequester(const string &url,const HttpRequesterResult &onResult){
|
||||
void HttpRequester::startRequester(const string &url,const HttpRequesterResult &onResult , uint32_t timeOutSecond){
|
||||
_onResult = onResult;
|
||||
_resTicker.resetTime();
|
||||
_timeOutSecond = timeOutSecond;
|
||||
sendRequest(url);
|
||||
|
||||
}
|
||||
|
||||
void HttpRequester::onManager(){
|
||||
if(_onResult && _resTicker.elapsedTime() > _timeOutSecond * 1000){
|
||||
//超时
|
||||
onDisconnect(SockException(Err_timeout,"wait http response timeout"));
|
||||
shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -40,17 +40,17 @@ public:
|
||||
HttpRequester();
|
||||
virtual ~HttpRequester();
|
||||
|
||||
void startRequester(const string &url,const HttpRequesterResult &onResult);
|
||||
void startRequester(const string &url,const HttpRequesterResult &onResult,uint32_t timeOutSecond = 10);
|
||||
private:
|
||||
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 onResponseCompleted() override;
|
||||
void onDisconnect(const SockException &ex) override;
|
||||
|
||||
void onManager() override;
|
||||
string _strRecvBody;
|
||||
HttpRequesterResult _onResult;
|
||||
|
||||
|
||||
Ticker _resTicker;
|
||||
uint32_t _timeOutSecond;
|
||||
};
|
||||
|
||||
}//namespace Http
|
||||
|
Loading…
Reference in New Issue
Block a user