基本的报文描述,可以描述多种报文数据结构,如请求报文的起始行、报文头部、报文主体等,length
表示该报文被分配的内存空间,used
表示已使用的内存空间,data
是内存区域。
typedef struct http_message_buffer {
size_t length; /* number of bytes allocated */
size_t used; /* strlen(data) + 1 */
char *data; /* contents: NUL-terminated string */
} http_message_buffer_t;
- 初始化报文并分配指定大小size的内存空间,如果不指定(size为0)则分配默认的内存空间
HTTP_MESSAGE_BUFFER_GROWTH
,该宏在http_defconfig.h
被定义,可由用户修改。
http_message_buffer_t *http_message_buffer_init(size_t size)
- 报文重新初始化,清除报文的data字段内容
int http_message_buffer_reinit(http_message_buffer_t *buf)
- 释放报文,此操作会释放报文的data字段的内存空间,还会释放报文本身的内存空间(如果该报文是通过**http_message_buffer_init()**函数得到的)。
void http_message_buffer_release(http_message_buffer_t *buf)
- 将字符串连接到报文中,可变参数,字符串必须以
NULL
结束,自动处理内存不足的问题,增长的内存大小是HTTP_MESSAGE_BUFFER_GROWTH
的倍数。
void http_message_buffer_concat(http_message_buffer_t *buf, ...)
- 通过覆盖写入的方式将数据写入到报文中,参数可变,字符串必须以
NULL
结束,会自动处理内存不足的问题。
void http_message_buffer_cover(http_message_buffer_t *buf, ...)
- 追加指定的
str
字符串数据到报文中,len
是追加的字符串长度,可自动处理内存不足的问题。
void http_message_buffer_append(http_message_buffer_t *buf, const char *str, size_t len
- 通过指针引用的方式去引用指定的数据。
int http_message_buffer_pointer(http_message_buffer_t *buf, const char *str, size_t len)
- 给buf增长内存空间,增长的内存大小是
HTTP_MESSAGE_BUFFER_GROWTH
的倍数。当buf的剩余空间不足以存放指定newsize
大小的数据时,自动分配内存。
void http_message_buffer_grow(http_message_buffer_t *buf, size_t newsize)
platform_memory.c
:平台层的内存管理
上一篇:url解析器
下一篇: HTTP请求