4.2. SOCGI应用开发参考
4.2.1. 工具宏
4.2.1.1. 简单缓冲区格式化宏
4.2.1.1.1. STRNCMPSTRN
宏定义 | #define STRNCMPSTRN(str1,str1_len,cmp,str2,str2_len) ( (str1_len) cmp (str2_len) && STRNCMP( (str1) , cmp , (str2) , (str2_len) ) ) |
---|
宏说明 | 带长度的比较两个字符数组 |
输入参数 | str1 : 字符数组1str1_len : 字符数组1长度cmp : 比较符str2 : 字符数组2str2_len : 字符数组2长度 |
返回值 | 0 : 构造成功大于0 : 字符数组1大小于0 : 字符数组2大 |
示例
- char buf1[...] ;
- char buf2[...] ;
- ...
- if( STRNCMPSTRN( buf1 , strlen(buf1) , == , buf2 , strlen(buf2) ) )
- {
- ...
- }
4.2.1.1.2. STRNCMPSTR
宏定义 | #define STRNCMPSTRN(str1,str1_len,cmp,str2) STRNCMPSTRN( (str1) , (str1_len) , cmp , (str2) , (strlen(str2)) ) |
---|
宏说明 | 带长度的比较两个字符数组,其中第二个字符数组自动计算长度 |
输入参数 | str1 : 字符数组1str1_len : 字符数组1长度cmp : 比较符str2 : 字符数组2 |
返回值 | 0 : 构造成功大于0 : 字符数组1大小于0 : 字符数组2大 |
示例
- char buf1[...] ;
- char buf2[...] ;
- ...
- if( STRNCMPSTR( buf1 , strlen(buf1) , == , buf2 ) )
- {
- ...
- }
4.2.1.1.3. STRNCMPRSTR
宏定义 | #define STRNCMPRSTR(str1,str1_len,cmp,const_str2) STRNCMPSTRN( (str1) , (str1_len) , cmp , (literal_str2) , (sizeof(literal_str2)-1) ) |
---|
宏说明 | 带长度的比较两个字符数组,其中第二个字符数组为字面量 |
输入参数 | str1 : 字符数组1str1_len : 字符数组1长度cmp : 比较符literal_str2 : 字符数组2 |
返回值 | 0 : 构造成功大于0 : 字符数组1大小于0 : 字符数组2大 |
示例
- char buf1[...] ;
- ...
- if( STRNCMPRSTR( buf1 , strlen(buf1) , == , "hello" ) )
- {
- ...
- }
4.2.1.1.4. HTTP_RETURN_NEWLINE
宏定义 | #define HTTP_RETURN_NEWLINE "\r\n" |
---|
宏说明 | 便于格式化HTTP时加入换行 |
4.2.1.1.5. HTML_NEWLINE
宏定义 | #define HTML_NEWLINE "" |
---|
宏说明 | 便于格式化HTML时加入小换行 |
4.2.1.1.6. HTML_RETURN_NEWLINE
宏定义 | #define HTML_RETURN_NEWLINE "" |
---|
宏说明 | 便于格式化HTML时加入大换行 |
4.2.1.1.7. BUFNPRINTF
宏定义 | #define BUFNPRINTF(buf_base,buf_size,str_len,format,…) … |
---|
宏说明 | 格式化字符串追加到缓冲区 |
输入参数 | buf_base : 缓冲区buf_size : 缓冲区大小str_len: 缓冲区内有效字符串长度format,… : 要追加的格式化串和参数集 |
返回值 | (无) |
示例
- char buf[...] ;
- int buf_len ;
- int count ;
- ...
- BUFNPRINTF( buf , sizeof(buf) , buf_len , "count[%d]" , count )
注意:buf_len会自动累加和封顶。
4.2.1.1.8. BUFPRINTF
宏定义 | #define BUFPRINTF(buf_base,str_len,format,…) BUFNPRINTF(buf_base,sizeof(buf_base),str_len,format,VA_ARGS) |
---|
宏说明 | 格式化字符串追加到缓冲区,不用给sizeof(buf_base) |
输入参数 | buf_base : 缓冲区str_len: 缓冲区内有效字符串长度format,… : 要追加的格式化串和参数集 |
返回值 | (无) |
示例
- char buf[...] ;
- int buf_len ;
- int count ;
- ...
- BUFPRINTF( buf , buf_len , "count[%d]" , count )
注意:buf_len会自动累加和封顶。
4.2.1.1.9. BUFNSTRCAT
宏定义 | #define BUFNSTRCAT(buf_base,buf_size,str_len,cat_str) … |
---|
宏说明 | 格式化字符串追加到缓冲区 |
输入参数 | buf_base : 缓冲区buf_size : 缓冲区大小str_len: 缓冲区内有效字符串长度cat_str,… : 要追加的字符串 |
返回值 | (无) |
示例
- char buf[...] ;
- int buf_len ;
- ...
- BUFNSTRCAT( buf , sizeof(buf) , buf_len , "ok" )
注意:buf_len会自动累加和封顶。
4.2.1.1.10. BUFSTRCAT
宏定义 | #define BUFSTRCAT(buf_base,str_len,cat_str) BUFNSTRCAT(buf_base,sizeof(buf_base),str_len,cat_str) |
---|
宏说明 | 格式化字符串追加到缓冲区 |
输入参数 | buf_base : 缓冲区str_len: 缓冲区内有效字符串长度cat_str,… : 要追加的字符串 |
返回值 | (无) |
示例
- char buf[...] ;
- int buf_len ;
- ...
- BUFSTRCAT( buf , buf_len , "ok" )
注意:buf_len会自动累加和封顶。
4.2.2. 函数原型
4.2.2.1. 应用动态库函数原型
4.2.2.1.1. funcInitHttpApplication
函数原型 | typedef int funcInitHttpApplication( struct HttpServerContext ctx ); |
---|
函数说明 | 当应用动态库第一次装载时被调用 |
输入参数 | struct HttpServerContext ctx : HTTP环境上下文环境 |
输出参数 | (无) |
返回值 | 0 : 构造成功非0 : 失败,具体失败原因见错误宏 |
4.2.2.1.2. funcCallHttpApplication
函数原型 | typedef int funcCallHttpApplication( struct HttpServerContext ctx ); |
---|
函数说明 | 当每次HTTP请求到来时被调用 |
输入参数 | struct HttpServerContext ctx : HTTP环境上下文环境 |
输出参数 | (无) |
返回值 | 0 : 构造成功非0 : 失败,具体失败原因见错误宏 |
4.2.2.1.3. funcCleanHttpApplication
函数原型 | typedef int funcCleanHttpApplication( struct HttpServerContext ctx ); |
---|
函数说明 | 当应用动态库最后卸载时被调用 |
输入参数 | struct HttpServerContext ctx : HTTP环境上下文环境 |
输出参数 | (无) |
返回值 | 0 : 构造成功非0 : 失败,具体失败原因见错误宏 |
4.2.3. API函数
4.2.3.1. 构造HTTP响应信息类
4.2.3.1.1. SOCGIFormatHttpResponse
函数原型 | int SOCGIFormatHttpResponse( struct HttpApplicationContext ctx , char http_response_body , int http_response_body_len , char http_header_format , … ); |
---|
函数说明 | 构造HTTP响应 |
输入参数 | struct HttpApplicationContext ctx : HTTP环境上下文环境char http_response_body : HTTP响应体int http_response_body_len : HTTP响应体长度char http_header_format , … : HTTP响应头;如果有多行的话,要用"\r\n"分隔 |
输出参数 | (无) |
返回值 | 0 : 构造成功非0 : 失败,具体失败原因见错误宏 |
4.2.3.2. 其它类
4.2.3.2.1. SOCGIGetHttpEnv
函数原型 | struct HttpEnv SOCGIGetHttpEnv( struct HttpApplicationContext ctx ); |
---|
函数说明 | 从HTTP环境上下文环境中得到HTTP结构,后续可以使用fasterhttp库操作该结构,编译时包含其头文件,链接时包含其库文件 |
输入参数 | struct HttpApplicationContext *ctx : HTTP环境上下文环境 |
输出参数 | (无) |
返回值 | HTTP环境 |
4.2.3.2.2. SOCGISetUserData
函数原型 | void SOCGISetUserData( struct HttpApplicationContext ctx , void user_data ); |
---|
函数说明 | 设置用户自定义变量到平台上下文环境中 |
输入参数 | struct HttpApplicationContext ctx : HTTP环境上下文环境void user_data : 用户自定义变量地址 |
输出参数 | (无) |
返回值 | (无) |
4.2.3.2.3. SOCGIGetUserData
函数原型 | void SOCGIGetUserData( struct HttpApplicationContext ctx ); |
---|
函数说明 | 从平台上下文环境中拿出某个用户自定义变量 |
输入参数 | struct HttpApplicationContext ctx : HTTP环境上下文环境 |
输出参数 | (无) |
返回值 | viud : 用户自定义变量地址 |