網(wǎng)站建設服務哪家好seo免費推廣
隨手記錄一下exosip的學習過程:
1. nist 非invite事件服務端處理,nict 非invite事件客戶端處理,ist invite服務器處理,ict invite客戶端處理。
2. 狀態(tài)機處理鏈表,每種狀態(tài)對應一個處理方式,當事務處于trying狀態(tài)時,根據(jù)超時類型處理,這種鏈表結構實屬優(yōu)秀了。。
typedef struct _transition_t transition_t;
struct _transition_t {
state_t state;
type_t type;
void (*method) (void *, void *);
struct _transition_t *next;
struct _transition_t *parent;
};
transition_t nict_transition[12] = {
{
NICT_PRE_TRYING,
SND_REQUEST,
(void (*)(void *, void *)) &nict_snd_request,
&nict_transition[1], NULL}
,
{
NICT_TRYING,
TIMEOUT_F,
(void (*)(void *, void *)) &osip_nict_timeout_f_event,
&nict_transition[2], NULL}
,
{
NICT_TRYING,
TIMEOUT_E,
(void (*)(void *, void *)) &osip_nict_timeout_e_event,
&nict_transition[3], NULL}
,
{
NICT_TRYING,
RCV_STATUS_1XX,
(void (*)(void *, void *)) &nict_rcv_1xx,
&nict_transition[4], NULL}
,
{
NICT_TRYING,
RCV_STATUS_2XX,
(void (*)(void *, void *)) &nict_rcv_23456xx,
&nict_transition[5], NULL}
,
{
NICT_TRYING,
RCV_STATUS_3456XX,
(void (*)(void *, void *)) &nict_rcv_23456xx,
&nict_transition[6], NULL}
,
{
NICT_PROCEEDING,
TIMEOUT_F,
(void (*)(void *, void *)) &osip_nict_timeout_f_event,
&nict_transition[7], NULL}
,
{
NICT_PROCEEDING,
TIMEOUT_E,
(void (*)(void *, void *)) &osip_nict_timeout_e_event,
&nict_transition[8], NULL}
,
{
NICT_PROCEEDING,
RCV_STATUS_1XX,
(void (*)(void *, void *)) &nict_rcv_1xx,
&nict_transition[9], NULL}
,
{
NICT_PROCEEDING,<