网站建设服务哪家好上海网优化seo公司
随手记录一下exosip的学习过程:
1. nist 非invite事件服务端处理,nict 非invite事件客户端处理,ist invite服务器处理,ict invite客户端处理。
2. 状态机处理链表,每种状态对应一个处理方式,当事务处于trying状态时,根据超时类型处理,这种链表结构实属优秀了。。
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,<
