📄 inet_msg_sip.c
字号:
*param++ = '\0';
}
ss = inet_malloc(mem_func, sizeof(inet_subscription_state_struct));
if (!ss)
{
goto ss_error;
}
ss->state = inet_msg_strdup(mem_func, text);
if (!ss->state)
{
goto ss_error;
}
if (param)
{
ss->param_list = (inet_param_list_struct*) inet_msg_unpack_param(mem_func, param);
if (!ss->param_list)
{
goto ss_error;
}
}
return (kal_uint32) ss;
ss_error:
inet_subscription_state_struct_free_fn(mem_func, ss);
return 0;
} /* end of inet_msg_unpack_subscription_state */
/*****************************************************************************
* FUNCTION
* inet_msg_unpack_answer_mode
* DESCRIPTION
* This function unpacks the Event.
* GRAMMER
*
* Answer-Mode = "Answer-Mode" HCOLON answer-mode (SEMI options)
* Priv-Answer-Mode = "Priv-Answer-Mode" HCOLON answer-mode (SEMI* options)
* answer-mode = "Manual" / "Auto"
* options=option *( COMMA am-option)
* am-option = "Require" / token*
* example:
*
* Answer-Mode: Auto; Require
* Pri-Answer-Mode: Manual
* PARAMETERS
* mem_func [IN] Memory function
* text [IN] String of field value
* RETURNS
* inet_answer_mode_struct pointer
*****************************************************************************/
kal_uint32 inet_msg_unpack_answer_mode(inet_mem_func_struct *mem_func, kal_char *text)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_char *param;
inet_answer_mode_struct *ss = NULL;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
param = strchr(text, ';');
if (param)
{
*param++ = '\0';
}
ss = inet_malloc(mem_func, sizeof(inet_answer_mode_struct));
if (!ss)
{
goto ss_error;
}
ss->answer_mode = inet_msg_strdup(mem_func, text);
if (!ss->answer_mode)
{
goto ss_error;
}
if (param)
{
ss->param_list = (inet_param_list_struct*) inet_msg_unpack_param(mem_func, param);
if (!ss->param_list)
{
goto ss_error;
}
}
return (kal_uint32) ss;
ss_error:
inet_answer_mode_struct_free_fn(mem_func, ss);
return 0;
} /* end of inet_msg_unpack_answer_mode */
/*****************************************************************************
* Pack functions
*****************************************************************************/
/*****************************************************************************
* FUNCTION
* inet_msg_pack_session_expires
* DESCRIPTION
* This function packs the inet_session_expires_struct header value.
* PARAMETERS
* app_type [IN] application type
* arg [IN] pointer of header value
* buf [IN] buffer to store packed header value
* buf_len [IN] available data size of buffer
* r_size [IN/OUT] real data size to pack
* RETURNS
* INET result code
*****************************************************************************/
inet_result_enum inet_msg_pack_session_expires(
kal_uint8 app_type,
void *arg,
kal_char *buf,
kal_int32 buf_len,
kal_int32 *r_size)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_int32 l;
kal_int32 size = 0;
inet_result_enum ret;
inet_session_expires_struct *se = (inet_session_expires_struct*) arg;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
CHECK_INET_PARAM(arg, INET_RESULT_ERROR) if (se->expires != 0)
{
l = _snprintf(buf, buf_len, "%d", se->expires);
CHECK_INET_PACK_ENBUF(l) size += l;
}
if (se->param_list)
{
if ((ret = inet_msg_pack_param_list(
app_type,
(void*)se->param_list,
buf + size,
buf_len - size,
&l)) != INET_RESULT_OK)
{
return ret;
}
size += l;
}
*r_size = size;
return INET_RESULT_OK;
} /* end of inet_msg_pack_session_expires */
/*****************************************************************************
* FUNCTION
* inet_msg_pack_event
* DESCRIPTION
* This function packs the inet_event_struct header value.
* PARAMETERS
* app_type [IN] application type
* arg [IN] pointer of header value
* buf [IN] buffer to store packed header value
* buf_len [IN] available data size of buffer
* r_size [IN/OUT] real data size to pack
* RETURNS
* INET result code
*****************************************************************************/
inet_result_enum inet_msg_pack_event(
kal_uint8 app_type,
void *arg,
kal_char *buf,
kal_int32 buf_len,
kal_int32 *r_size)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_int32 l;
kal_int32 size = 0;
inet_result_enum ret;
inet_event_struct *evt = (inet_event_struct*) arg;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
CHECK_INET_PARAM(arg, INET_RESULT_ERROR) if (evt->event)
{
l = _snprintf(buf, buf_len, "%s", evt->event);
CHECK_INET_PACK_ENBUF(l) size += l;
}
if (evt->param_list)
{
if ((ret = inet_msg_pack_param_list(
app_type,
(void*)evt->param_list,
buf + size,
buf_len - size,
&l)) != INET_RESULT_OK)
{
return ret;
}
size += l;
}
*r_size = size;
return INET_RESULT_OK;
} /* end of inet_msg_pack_event */
/*****************************************************************************
* FUNCTION
* inet_msg_pack_subscription_state
* DESCRIPTION
* This function packs the inet_event_struct header value.
* PARAMETERS
* app_type [IN] application type
* arg [IN] pointer of header value
* buf [IN] buffer to store packed header value
* buf_len [IN] available data size of buffer
* r_size [IN/OUT] real data size to pack
* RETURNS
* INET result code
*****************************************************************************/
inet_result_enum inet_msg_pack_subscription_state(
kal_uint8 app_type,
void *arg,
kal_char *buf,
kal_int32 buf_len,
kal_int32 *r_size)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_int32 l;
kal_int32 size = 0;
inet_result_enum ret;
inet_subscription_state_struct *ss = (inet_subscription_state_struct*) arg;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
CHECK_INET_PARAM(arg, INET_RESULT_ERROR) if (ss->state)
{
l = _snprintf(buf, buf_len, "%s", ss->state);
CHECK_INET_PACK_ENBUF(l) size += l;
}
if (ss->param_list)
{
if ((ret = inet_msg_pack_param_list(
app_type,
(void*)ss->param_list,
buf + size,
buf_len - size,
&l)) != INET_RESULT_OK)
{
return ret;
}
size += l;
}
*r_size = size;
return INET_RESULT_OK;
} /* end of inet_msg_pack_subscription_state */
/*****************************************************************************
* FUNCTION
* inet_msg_pack_answer_mode
* DESCRIPTION
* This function packs the inet_answer_mode_struct header value.
* PARAMETERS
* app_type [IN] application type
* arg [IN] pointer of header value
* buf [IN] buffer to store packed header value
* buf_len [IN] available data size of buffer
* r_size [IN/OUT] real data size to pack
* RETURNS
* INET result code
*****************************************************************************/
inet_result_enum inet_msg_pack_answer_mode(
kal_uint8 app_type,
void *arg,
kal_char *buf,
kal_int32 buf_len,
kal_int32 *r_size)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_int32 l;
kal_int32 size = 0;
inet_result_enum ret;
inet_answer_mode_struct *ss = (inet_answer_mode_struct*) arg;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
CHECK_INET_PARAM(arg, INET_RESULT_ERROR) if (ss->answer_mode)
{
l = _snprintf(buf, buf_len, "%s", ss->answer_mode);
CHECK_INET_PACK_ENBUF(l) size += l;
}
if (ss->param_list)
{
if ((ret = inet_msg_pack_param_list(
app_type,
(void*)ss->param_list,
buf + size,
buf_len - size,
&l)) != INET_RESULT_OK)
{
return ret;
}
size += l;
}
*r_size = size;
return INET_RESULT_OK;
} /* end of inet_msg_pack_answer_mode */
/*****************************************************************************
* Copy functions
*****************************************************************************/
/*****************************************************************************
* FUNCTION
* inet_session_expires_struct_copy_fn
* DESCRIPTION
*
* PARAMETERS
* mem_func [?]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -