acl/lib_acl_cpp/samples/aio/http_client/http_client.h

56 lines
1.3 KiB
C
Raw Normal View History

2020-11-05 15:16:35 +08:00
#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_;
};