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大

示例

  1. char buf1[...] ;
  2. char buf2[...] ;
  3. ...
  4. if( STRNCMPSTRN( buf1 , strlen(buf1) , == , buf2 , strlen(buf2) ) )
  5. {
  6. ...
  7. }
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大

示例

  1. char buf1[...] ;
  2. char buf2[...] ;
  3. ...
  4. if( STRNCMPSTR( buf1 , strlen(buf1) , == , buf2 ) )
  5. {
  6. ...
  7. }
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大

示例

  1. char buf1[...] ;
  2. ...
  3. if( STRNCMPRSTR( buf1 , strlen(buf1) , == , "hello" ) )
  4. {
  5. ...
  6. }
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,… : 要追加的格式化串和参数集
返回值(无)

示例

  1. char buf[...] ;
  2. int buf_len ;
  3. int count ;
  4. ...
  5. 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,… : 要追加的格式化串和参数集
返回值(无)

示例

  1. char buf[...] ;
  2. int buf_len ;
  3. int count ;
  4. ...
  5. 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,… : 要追加的字符串
返回值(无)

示例

  1. char buf[...] ;
  2. int buf_len ;
  3. ...
  4. 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,… : 要追加的字符串
返回值(无)

示例

  1. char buf[...] ;
  2. int buf_len ;
  3. ...
  4. 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 : 用户自定义变量地址