mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-06-15 04:25:58 +08:00
HTTP: 重写http相关超时管理机制
This commit is contained in:
@@ -61,9 +61,8 @@ public:
|
||||
/**
|
||||
* 发送http[s]请求
|
||||
* @param url 请求url
|
||||
* @param timeout_sec 超时时间
|
||||
*/
|
||||
virtual void sendRequest(const string &url, float timeout_sec, float recv_timeout_sec = 3);
|
||||
virtual void sendRequest(const string &url);
|
||||
|
||||
/**
|
||||
* 重置对象
|
||||
@@ -111,6 +110,30 @@ public:
|
||||
*/
|
||||
bool waitResponse() const;
|
||||
|
||||
/**
|
||||
* 判断是否为https
|
||||
*/
|
||||
bool isHttps() const;
|
||||
|
||||
/**
|
||||
* 设置从发起连接到接收header完毕的延时,默认10秒
|
||||
* 此参数必须大于0
|
||||
*/
|
||||
void setHeaderTimeout(size_t timeout_ms);
|
||||
|
||||
/**
|
||||
* 设置接收body数据超时时间, 默认5秒
|
||||
* 此参数可以用于处理超大body回复的超时问题
|
||||
* 此参数可以等于0
|
||||
*/
|
||||
void setBodyTimeout(size_t timeout_ms);
|
||||
|
||||
/**
|
||||
* 设置整个链接超时超时时间, 默认0
|
||||
* 该值设置不为0后,HeaderTimeout和BodyTimeout无效
|
||||
*/
|
||||
void setCompleteTimeout(size_t timeout_ms);
|
||||
|
||||
protected:
|
||||
/**
|
||||
* 收到http回复头
|
||||
@@ -174,28 +197,34 @@ private:
|
||||
void checkCookie(HttpHeader &headers);
|
||||
void clearResponse();
|
||||
|
||||
protected:
|
||||
bool _is_https;
|
||||
|
||||
private:
|
||||
//for http response
|
||||
bool _complete = false;
|
||||
string _url;
|
||||
HttpHeader _header;
|
||||
HttpHeader _user_set_header;
|
||||
HttpBody::Ptr _body;
|
||||
string _method;
|
||||
string _path;
|
||||
string _last_host;
|
||||
Ticker _recv_timeout_ticker;
|
||||
Ticker _total_timeout_ticker;
|
||||
float _timeout_second = 0;
|
||||
float _recv_timeout_second = 0;
|
||||
|
||||
//recv
|
||||
bool _header_recved = false;
|
||||
size_t _recved_body_size;
|
||||
ssize_t _total_body_size;
|
||||
Parser _parser;
|
||||
std::shared_ptr<HttpChunkedSplitter> _chunked_splitter;
|
||||
|
||||
//for request args
|
||||
bool _is_https;
|
||||
string _url;
|
||||
HttpHeader _user_set_header;
|
||||
HttpBody::Ptr _body;
|
||||
string _method;
|
||||
string _last_host;
|
||||
|
||||
//for this request
|
||||
string _path;
|
||||
HttpHeader _header;
|
||||
|
||||
//for timeout
|
||||
size_t _wait_header_ms = 10 * 1000;
|
||||
size_t _wait_body_ms = 10 * 1000;
|
||||
size_t _wait_complete_ms = 0;
|
||||
Ticker _wait_header;
|
||||
Ticker _wait_body;
|
||||
Ticker _wait_complete;
|
||||
};
|
||||
|
||||
} /* namespace mediakit */
|
||||
|
||||
Reference in New Issue
Block a user