#ifndef	__HTTP_SERVICE_INCLUDE_H__
#define	__HTTP_SERVICE_INCLUDE_H__

#include "lib_acl.h"
#include "lib_protocol.h"

#ifdef	__cplusplus
extern "C" {
#endif

/* in http_service.c */

/**
 * HTTP 协议方式处理方法
 * @param client {ACL_VSTREAM*} 客户端流
 * @return {int} 0：表示正常，1：表示正常且保持长连接，-1：表示出错
 */
int http_service(ACL_VSTREAM *client);

/**
 * 服务端返回 HTTP 响应给客户端
 * @param client {ACL_VSTREAM*} 客户端流
 * @param status {int} HTTP 响应状态码，1xx, 2xx, 3xx, 4xx, 5xx
 * @param keep_alive {int} 是否与客户端保持长连接
 * @param body {const char*} 数据体内容
 * @param len {int} 数据体长度
 */
int http_server_send_respond(ACL_VSTREAM* client, int status,
	int keep_alive, char* body, int len);

/* in http_json.c */

/**
 * 请求数据的格式为 JSON 格式的处理
 * @param client {ACL_VSTREAM*}
 * @param hdr_req {HTTP_HDR_REQ*} HTTP 请求协议头对象
 * @param json {ACL_JSON*} json 解析器对象
 * @return {int} 0：表示正常，1：表示正常且保持长连接，-1：表示出错
 */
int http_json_service(ACL_VSTREAM *client,
	HTTP_HDR_REQ *hdr_req, ACL_JSON *json);

/* in http_xml.c */

/**
 * 请求数据的格式为 XML 格式的处理
 * @param client {ACL_VSTREAM*}
 * @param hdr_req {HTTP_HDR_REQ*} HTTP 请求协议头对象
 * @param xml {ACL_XML*} xml 解析器对象
 * @return {int} 0：表示正常，1：表示正常且保持长连接，-1：表示出错
 */
int http_xml_service(ACL_VSTREAM *client,
        HTTP_HDR_REQ *hdr_req, ACL_XML *xml);

#ifdef	__cplusplus
}
#endif

#endif
