mirror of
https://gitee.com/acl-dev/acl.git
synced 2024-12-16 01:40:52 +08:00
56 lines
1.2 KiB
C
56 lines
1.2 KiB
C
|
#pragma once
|
||
|
|
||
|
class http_stream;
|
||
|
|
||
|
class http_client
|
||
|
{
|
||
|
public:
|
||
|
http_client(acl::aio_handle& handle);
|
||
|
|
||
|
bool start(void);
|
||
|
|
||
|
public:
|
||
|
http_client& set_redirect_limit(int max);
|
||
|
http_client& set_addr(const char* addr);
|
||
|
http_client& set_timeout(int conn_timeout, int rw_timeout);
|
||
|
http_client& set_debug(bool on);
|
||
|
http_client& set_url(const char* url);
|
||
|
http_client& set_host(const char* host);
|
||
|
http_client& set_keep_alive(bool yes);
|
||
|
|
||
|
public:
|
||
|
void on_destroy(http_stream* conn);
|
||
|
void on_connect(http_stream& conn);
|
||
|
void on_disconnect(http_stream& conn);
|
||
|
void on_ns_failed(http_stream& conn);
|
||
|
void on_connect_timeout(http_stream& conn);
|
||
|
void on_connect_failed(http_stream& conn);
|
||
|
bool on_read_timeout(http_stream& conn);
|
||
|
|
||
|
bool on_http_res_hdr(http_stream& conn, const acl::http_header& header);
|
||
|
bool on_http_res_body(http_stream& conn, char* data, size_t dlen);
|
||
|
bool on_http_res_finish(http_stream& conn, bool success);
|
||
|
|
||
|
private:
|
||
|
~http_client(void);
|
||
|
|
||
|
bool redirect(const char* url);
|
||
|
bool open(void);
|
||
|
|
||
|
private:
|
||
|
acl::aio_handle& handle_;
|
||
|
int refered_;
|
||
|
|
||
|
acl::string addr_;
|
||
|
int conn_timeout_;
|
||
|
int rw_timeout_;
|
||
|
bool debug_;
|
||
|
|
||
|
int redirect_limit_;
|
||
|
int redirect_count_;
|
||
|
acl::string url_;
|
||
|
acl::string host_;
|
||
|
bool keep_alive_;
|
||
|
bool compressed_;
|
||
|
};
|