acl  3.5.3.0
acl::http_service_request类 参考abstract

#include <http_service.hpp>

+ 类 acl::http_service_request 继承关系图:
+ acl::http_service_request 的协作图:

Public 成员函数

 http_service_request (const char *domain, unsigned short port)
 
const char * get_domain (void) const
 
unsigned short get_port (void) const
 
virtual void destroy (void)
 
virtual const stringget_body (void)
 
virtual void on_hdr (const char *addr, const HTTP_HDR_RES *hdr)=0
 
virtual void on_body (const char *data, size_t dlen)=0
 
virtual void on_error (http_status_t errnum)=0
 
- Public 成员函数 继承自 acl::http_header
 http_header (dbuf_guard *dbuf=NULL)
 
 http_header (const char *url, dbuf_guard *dbuf=NULL, bool encoding=true)
 
 http_header (int status, dbuf_guard *dbuf=NULL)
 
 http_header (const HTTP_HDR_RES &hdr_res, dbuf_guard *dbuf=NULL)
 
 http_header (const HTTP_HDR_REQ &hdr_req, dbuf_guard *dbuf=NULL)
 
virtual ~http_header (void)
 
void reset (void)
 
http_headerset_proto_version (const char *version)
 
http_headerset_request_mode (bool onoff)
 
http_headeradd_entry (const char *name, const char *value, bool replace=true)
 
const char * get_entry (const char *name) const
 
http_headerset_content_length (long long int n)
 
long long int get_content_length () const
 
http_headerset_range (long long from, long long to)
 
http_headerset_range_total (long long total)
 
void get_range (long long int *from, long long int *to)
 
http_headerset_content_type (const char *value)
 
http_headerset_keep_alive (bool on)
 
bool get_keep_alive () const
 
http_headerset_upgrade (const char *value="websocket")
 
const char * get_upgrade (void) const
 
http_headeradd_cookie (const char *name, const char *value, const char *domain=NULL, const char *path=NULL, time_t expires=0)
 
http_headeradd_cookie (const HttpCookie *cookie)
 
const HttpCookieget_cookie (const char *name) const
 
bool is_request (void) const
 
bool build_request (string &buf) const
 
http_headerset_url (const char *url, bool encoding=true)
 
http_headerset_host (const char *value)
 
const char * get_host () const
 
http_headerset_method (http_method_t method)
 
http_headerset_method (const char *method)
 
http_method_t get_method (string *buf=NULL) const
 
http_headeraccept_gzip (bool on)
 
http_headerset_param_override (bool yes)
 
http_headeradd_param (const char *name, const char *value)
 
http_headeradd_int (const char *name, short value)
 
http_headeradd_int (const char *name, int value)
 
http_headeradd_int (const char *name, long value)
 
http_headeradd_int (const char *name, unsigned short value)
 
http_headeradd_int (const char *name, unsigned int value)
 
http_headeradd_int (const char *name, unsigned long value)
 
http_headeradd_format (const char *name, const char *fmt,...) ACL_CPP_PRINTF(3
 
http_header http_headeradd_int (const char *name, long long int value)
 
http_headeradd_int (const char *name, unsigned long long int value)
 
http_headerset_ws_origin (const char *url)
 
http_headerset_ws_key (const void *key, size_t len)
 
http_headerset_ws_key (const char *key)
 
http_headerset_ws_protocol (const char *proto)
 
http_headerset_ws_version (int ver)
 
const char * get_ws_origin (void) const
 
const char * get_ws_key (void) const
 
const char * get_ws_protocol (void) const
 
int get_ws_version (void) const
 
http_headerset_ws_accept (const char *key)
 
const char * get_ws_accept (void) const
 
bool redirect (const char *url)
 
http_headerset_redirect (unsigned int n=5)
 
unsigned int get_redirect (void) const
 
virtual void redicrect_reset (void)
 
bool build_response (string &buf) const
 
http_headerset_status (int status)
 
int get_status (void) const
 
http_headerset_chunked (bool on)
 
bool chunked_transfer (void) const
 
http_headerset_cgi_mode (bool on)
 
bool is_cgi_mode () const
 
http_headerset_transfer_gzip (bool on)
 
bool is_transfer_gzip () const
 
- Public 成员函数 继承自 acl::dbuf_obj
 dbuf_obj (dbuf_guard *guard=NULL)
 
virtual ~dbuf_obj ()
 
int pos () const
 
dbuf_guardget_guard () const
 

Protected 成员函数

virtual ~http_service_request (void)
 

额外继承的成员函数

- 静态 Public 成员函数 继承自 acl::http_header
static void date_format (char *out, size_t size, time_t t)
 
static void uri_unsafe_correct (bool on)
 

详细描述

HTTP 服务请求类,子类必须继承该类

在文件 http_service.hpp13 行定义.

构造及析构函数说明

◆ http_service_request()

acl::http_service_request::http_service_request ( const char *  domain,
unsigned short  port 
)

构造函数

参数
domain{const char*} HTTP 服务器的域名(也可以是IP),非空 如果传入了空值,则会 fatal
port{unsigned short} HTTP 服务端口

◆ ~http_service_request()

virtual acl::http_service_request::~http_service_request ( void  )
protectedvirtual

成员函数说明

◆ destroy()

virtual void acl::http_service_request::destroy ( void  )
inlinevirtual

当任务处理完毕或出错时,内部处理过程会自动调用 destroy 接口, 子类可以在该接口内进行一些释放过程,尤其当该对象是动态创建时, 子类应该在该函数内 delete this 以删除自己,因为该函数最终肯定 会被调用,所以子类不应在其它地方进行析构操作

在文件 http_service.hpp42 行定义.

42 {}

◆ get_body()

virtual const string* acl::http_service_request::get_body ( void  )
virtual

获得 HTTP 请求体数据,该函数会在请求过程中被循环调用,直到返回的数据 对象中的数据为空

返回
{const string*} 请求体结果数据,如果返回空指针或返回的缓冲区 对象的数据为空(即 string->empty()) 则表示 HTTP 请求体数据结束 注意:与其它函数不同,该虚接口是另外的子线程中被调用的,所以如果子类 实现了该接口,如果需要调用与原有线程具备竞争的资源时应该注意加锁保护

◆ get_domain()

const char* acl::http_service_request::get_domain ( void  ) const

获得由构造函数输入的 domain

返回
{const char*} 永不为空

◆ get_port()

unsigned short acl::http_service_request::get_port ( void  ) const

获得由构造函数输入的 port

返回
{unsigned short}

◆ on_body()

virtual void acl::http_service_request::on_body ( const char *  data,
size_t  dlen 
)
pure virtual

当获得 HTTP 服务器的 HTTP 响应体时的回调接口,当 HTTP 响应体数据 比较大时,该回调会被多次调用,直到出错(会调用 on_error)或数据读完 时,该回调的两个参数均 0,当 data 及 dlen 均为 0 时,表明读 HTTP 响应体结束

参数
data{const char*} 某次读操作时 HTTP 响应体数据
dlen{size_t} 某次读操作时 HTTP 响应体数据长度 注:如果 HTTP 响应只有头数据而没有数据体,则也会调用该函数通知用户 HTTP 会话结束

◆ on_error()

virtual void acl::http_service_request::on_error ( http_status_t  errnum)
pure virtual

在 HTTP 请求或响应过程中如果出错,则会调用此接口,通知子类出错, 在调用此接口后

参数
errnum{http_status_t} 出错码

◆ on_hdr()

virtual void acl::http_service_request::on_hdr ( const char *  addr,
const HTTP_HDR_RES hdr 
)
pure virtual

当获得 HTTP 服务器的 HTTP 响应头时的回调接口

参数
addr{const char*} 与服务器之间的连接地址,格式:IP:PORT
hdr{const HTTP_HDR_RES*} HTTP 响应头,该结构定义参见: acl_project/lib_protocol/include/http/lib_http_struct.h

该类的文档由以下文件生成: