⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fsm_uas4req.c

📁 一个有限状态机的实现源代码。C语言实现。
💻 C
📖 第 1 页 / 共 2 页
字号:
      ((osip_t *)transaction->config)->cb_sndoptions1xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"REGISTER")) {    if (((osip_t *)transaction->config)->cb_sndregister1xx != NULL)      ((osip_t *)transaction->config)->cb_sndregister1xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"PRACK")) {    if (((osip_t *)transaction->config)->cb_sndprack1xx != NULL)      ((osip_t *)transaction->config)->cb_sndprack1xx(sipevent,transaction);  } else {    if (((osip_t *)transaction->config)->cb_sndunkrequest1xx != NULL)      ((osip_t *)transaction->config)->cb_sndunkrequest1xx(sipevent,transaction);  }#endif  if (transaction->lastresponse!=NULL)    {    msg_free(transaction->lastresponse);    sfree(transaction->lastresponse);    }  transaction->lastresponse = sipevent->sip;}intuas_send23456XX(sipevent_t *sipevent,transaction_t *transaction){  int i;  i = udp_send_response(sipevent->sip);  if (i==-1)    {    TRACE(trace(__FILE__,__LINE__,TRACE_LEVEL1,NULL,"response not sent.\n"));    if (((osip_t *)transaction->config)->cb_network_error != NULL)      ((osip_t *)transaction->config)->cb_network_error(transaction);     msg_free(sipevent->sip);    sfree(sipevent->sip);    return -1;    }    if (transaction->lastresponse!=NULL)    {    msg_free(transaction->lastresponse);    sfree(transaction->lastresponse);    }  transaction->lastresponse = sipevent->sip;  /* AMD/ bug: fixed 26/09/2001 */  if (MSG_IS_INVITE(transaction->lastrequest))      transaction->state = ANSWERED;  else /* for other requests type, it's all done! */    {      transaction->state = COMPLETED;      transaction->completed_time = time(NULL);    }  /* invoke the right callback! */  if (MSG_IS_STATUS_2XX(sipevent->sip))    {#ifndef EXTENDED_CALLBACKS  if (((osip_t *)transaction->config)->cb_snd2xx != NULL)    ((osip_t *)transaction->config)->cb_snd2xx(sipevent,transaction);#else  if (MSG_IS_RESPONSEFOR(sipevent->sip,"INVITE")) {    if (((osip_t *)transaction->config)->cb_sndinvite2xx != NULL)      ((osip_t *)transaction->config)->cb_sndinvite2xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"BYE")) {    if (((osip_t *)transaction->config)->cb_sndbye2xx != NULL)      ((osip_t *)transaction->config)->cb_sndbye2xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"CANCEL")) {    if (((osip_t *)transaction->config)->cb_sndcancel2xx != NULL)      ((osip_t *)transaction->config)->cb_sndcancel2xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"INFO")) {    if (((osip_t *)transaction->config)->cb_sndinfo2xx != NULL)      ((osip_t *)transaction->config)->cb_sndinfo2xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"OPTIONS")) {    if (((osip_t *)transaction->config)->cb_sndoptions2xx != NULL)      ((osip_t *)transaction->config)->cb_sndoptions2xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"REGISTER")) {    if (((osip_t *)transaction->config)->cb_sndregister2xx != NULL)      ((osip_t *)transaction->config)->cb_sndregister2xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"PRACK")) {    if (((osip_t *)transaction->config)->cb_sndprack2xx != NULL)      ((osip_t *)transaction->config)->cb_sndprack2xx(sipevent,transaction);  } else {    if (((osip_t *)transaction->config)->cb_sndunkrequest2xx != NULL)      ((osip_t *)transaction->config)->cb_sndunkrequest2xx(sipevent,transaction);  }#endif    }  else if (MSG_IS_STATUS_3XX(sipevent->sip))    {#ifndef EXTENDED_CALLBACKS  if (((osip_t *)transaction->config)->cb_snd3xx != NULL)    ((osip_t *)transaction->config)->cb_snd3xx(sipevent,transaction);#else  if (MSG_IS_RESPONSEFOR(sipevent->sip,"INVITE")) {    if (((osip_t *)transaction->config)->cb_sndinvite3xx != NULL)      ((osip_t *)transaction->config)->cb_sndinvite3xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"BYE")) {    if (((osip_t *)transaction->config)->cb_sndbye3xx != NULL)      ((osip_t *)transaction->config)->cb_sndbye3xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"CANCEL")) {    if (((osip_t *)transaction->config)->cb_sndcancel3xx != NULL)      ((osip_t *)transaction->config)->cb_sndcancel3xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"INFO")) {    if (((osip_t *)transaction->config)->cb_sndinfo3xx != NULL)      ((osip_t *)transaction->config)->cb_sndinfo3xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"OPTIONS")) {    if (((osip_t *)transaction->config)->cb_sndoptions3xx != NULL)      ((osip_t *)transaction->config)->cb_sndoptions3xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"REGISTER")) {    if (((osip_t *)transaction->config)->cb_sndregister3xx != NULL)      ((osip_t *)transaction->config)->cb_sndregister3xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"PRACK")) {    if (((osip_t *)transaction->config)->cb_sndprack3xx != NULL)      ((osip_t *)transaction->config)->cb_sndprack3xx(sipevent,transaction);  } else {    if (((osip_t *)transaction->config)->cb_sndunkrequest3xx != NULL)      ((osip_t *)transaction->config)->cb_sndunkrequest3xx(sipevent,transaction);  }#endif    }  else if (MSG_IS_STATUS_4XX(sipevent->sip))    {#ifndef EXTENDED_CALLBACKS  if (((osip_t *)transaction->config)->cb_snd4xx != NULL)    ((osip_t *)transaction->config)->cb_snd4xx(sipevent,transaction);#else  if (MSG_IS_RESPONSEFOR(sipevent->sip,"INVITE")) {    if (((osip_t *)transaction->config)->cb_sndinvite4xx != NULL)      ((osip_t *)transaction->config)->cb_sndinvite4xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"BYE")) {    if (((osip_t *)transaction->config)->cb_sndbye4xx != NULL)      ((osip_t *)transaction->config)->cb_sndbye4xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"CANCEL")) {    if (((osip_t *)transaction->config)->cb_sndcancel4xx != NULL)      ((osip_t *)transaction->config)->cb_sndcancel4xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"INFO")) {    if (((osip_t *)transaction->config)->cb_sndinfo4xx != NULL)      ((osip_t *)transaction->config)->cb_sndinfo4xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"OPTIONS")) {    if (((osip_t *)transaction->config)->cb_sndoptions4xx != NULL)      ((osip_t *)transaction->config)->cb_sndoptions4xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"REGISTER")) {    if (((osip_t *)transaction->config)->cb_sndregister4xx != NULL)      ((osip_t *)transaction->config)->cb_sndregister4xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"PRACK")) {    if (((osip_t *)transaction->config)->cb_sndprack4xx != NULL)      ((osip_t *)transaction->config)->cb_sndprack4xx(sipevent,transaction);  } else {    if (((osip_t *)transaction->config)->cb_sndunkrequest4xx != NULL)      ((osip_t *)transaction->config)->cb_sndunkrequest4xx(sipevent,transaction);  }#endif    }  else if (MSG_IS_STATUS_5XX(sipevent->sip))    {#ifndef EXTENDED_CALLBACKS  if (((osip_t *)transaction->config)->cb_snd5xx != NULL)    ((osip_t *)transaction->config)->cb_snd5xx(sipevent,transaction);#else  if (MSG_IS_RESPONSEFOR(sipevent->sip,"INVITE")) {    if (((osip_t *)transaction->config)->cb_sndinvite5xx != NULL)      ((osip_t *)transaction->config)->cb_sndinvite5xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"BYE")) {    if (((osip_t *)transaction->config)->cb_sndbye5xx != NULL)      ((osip_t *)transaction->config)->cb_sndbye5xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"CANCEL")) {    if (((osip_t *)transaction->config)->cb_sndcancel5xx != NULL)      ((osip_t *)transaction->config)->cb_sndcancel5xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"INFO")) {    if (((osip_t *)transaction->config)->cb_sndinfo5xx != NULL)      ((osip_t *)transaction->config)->cb_sndinfo5xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"OPTIONS")) {    if (((osip_t *)transaction->config)->cb_sndoptions5xx != NULL)      ((osip_t *)transaction->config)->cb_sndoptions5xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"REGISTER")) {    if (((osip_t *)transaction->config)->cb_sndregister5xx != NULL)      ((osip_t *)transaction->config)->cb_sndregister5xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"PRACK")) {    if (((osip_t *)transaction->config)->cb_sndprack5xx != NULL)      ((osip_t *)transaction->config)->cb_sndprack5xx(sipevent,transaction);  } else {    if (((osip_t *)transaction->config)->cb_sndunkrequest5xx != NULL)      ((osip_t *)transaction->config)->cb_sndunkrequest5xx(sipevent,transaction);  }#endif    }  else if (MSG_IS_STATUS_6XX(sipevent->sip))    {#ifndef EXTENDED_CALLBACKS  if (((osip_t *)transaction->config)->cb_snd6xx != NULL)    ((osip_t *)transaction->config)->cb_snd6xx(sipevent,transaction);#else  if (MSG_IS_RESPONSEFOR(sipevent->sip,"INVITE")) {    if (((osip_t *)transaction->config)->cb_sndinvite6xx != NULL)      ((osip_t *)transaction->config)->cb_sndinvite6xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"BYE")) {    if (((osip_t *)transaction->config)->cb_sndbye6xx != NULL)      ((osip_t *)transaction->config)->cb_sndbye6xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"CANCEL")) {    if (((osip_t *)transaction->config)->cb_sndcancel6xx != NULL)      ((osip_t *)transaction->config)->cb_sndcancel6xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"INFO")) {    if (((osip_t *)transaction->config)->cb_sndinfo6xx != NULL)      ((osip_t *)transaction->config)->cb_sndinfo6xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"OPTIONS")) {    if (((osip_t *)transaction->config)->cb_sndoptions6xx != NULL)      ((osip_t *)transaction->config)->cb_sndoptions6xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"REGISTER")) {    if (((osip_t *)transaction->config)->cb_sndregister6xx != NULL)      ((osip_t *)transaction->config)->cb_sndregister6xx(sipevent,transaction);  } else if (MSG_IS_RESPONSEFOR(sipevent->sip,"PRACK")) {    if (((osip_t *)transaction->config)->cb_sndprack6xx != NULL)      ((osip_t *)transaction->config)->cb_sndprack6xx(sipevent,transaction);  } else {    if (((osip_t *)transaction->config)->cb_sndunkrequest6xx != NULL)      ((osip_t *)transaction->config)->cb_sndunkrequest6xx(sipevent,transaction);  }#endif    }  else    { TRACE(trace(__FILE__,__LINE__,TRACE_LEVEL1,NULL,"Unknown response code?\n"));}  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -