📄 casim.c
字号:
/* * Copyright (C) 1999-2000 Computer & Communications Research Laboratories, * Industrial Technology Research Institute *//* * CASim.c */
/*////////String Handle/////////////////////////////////////////////
#include <windows.h>
#include <iostream.h>
#include "Shlwapi.h"
*////////////////////////////////////////////////////////////////////////////#include "mgcp.h"#include "trace.h"#include "tools.h"#include <stdio.h>#include <stdlib.h>#include <string.h>#ifdef WIN32#include <winsock.h>#include <time.h>#endif#ifdef SOLARIS#include <unistd.h>#endif#include <ctype.h>#include "CASim.h"static void enterMSGQ(struct MSGQ* mqe, mgcMsg msg){ struct MSGDATA* mqd = (struct MSGDATA*)malloc(sizeof(struct MSGDATA)); if ( mqe==NULL ) { free(mqd); return; } mqd->m = strdup(mgcStrAsCStr(mgcMsgAsStr(msg))); mqd->tid = ATOI(mgcMsgGetTId(msg)); mqd->ack = NULL; mqd->next = NULL; if( mqe->headQ==NULL ) mqe->headQ = mqd; else mqe->tailQ->next = mqd; mqe->tailQ = mqd; mqe->sizeQ++;}static struct MSGDATA* leaveMSGQ(struct MSGQ* mqe) { struct MSGDATA* mqd = NULL; if( mqe->headQ==NULL ) { fprintf(stderr, "\n[MSGQ] attempt to leave empty queue\n"); /* ??? nothing appropriate to return */ return NULL; } mqd = mqe->headQ; mqe->headQ = mqd->next; mqe->sizeQ--; return mqd;}mgcMsg setAckMSGQ(struct MSGQ* mqe, mgcAck ack){ struct MSGDATA* mqd = NULL; struct MSGDATA* pre = NULL; int tid = ATOI(mgcAckGetTId(ack)); pre = mqd = mqe->headQ; while ( mqd!=NULL ) { if ( mqd->tid==tid ) { mgcMsg msg = mgcMsgNew(getMsgType(mqd->m)); mgcMsgParse(msg, mqd->m); pre->next = mqd->next; mqe->sizeQ--; if ( mqe->headQ==pre ) mqe->headQ = mqd->next; freeMSGDATA(mqd); return msg; /* TID is found in this message queue, return message */ } pre = mqd; mqd = mqd->next; } return 0;}void freeMSGDATA(struct MSGDATA* mqd){ if (mqd) { free(mqd->m); if (mqd->ack) free(mqd->ack); free(mqd); }}mgcMsgType getMsgType(char* _this){ if ( strncmp(_this,"EPCF",4) ) return mgcEPtConfig; else if ( strncmp(_this,"CRCX",4) ) return mgcCreatConn; else if ( strncmp(_this,"MDCX",4) ) return mgcModConn; else if ( strncmp(_this,"DLCX",4) ) return mgcDelConn; else if ( strncmp(_this,"RQNT",4) ) return mgcNotifReq; else if ( strncmp(_this,"NTFY",4) ) return mgcNotify; else if ( strncmp(_this,"AUEP",4) ) return mgcAuditEPt; else if ( strncmp(_this,"AUCX",4) ) return mgcAuditConn; else if ( strncmp(_this,"RSIP",4) ) return mgcRstrInPrgs; else return mgcUnknown;}void myDupCB(mgcMsg m, mgcAck s) { fprintf(stderr, "Dup ack %d set for %s\n", mgcAckGetType(s), mgcMsgGetTId(m));}int main(int argc, char**argv){
char logfname[20]; char *epfname; struct mgcExtEvents listenTo[2];///////////////////for UI////////////////////
int recv_flag;
char recv_stepbystep[3];
///////////////////////////////////////////// sprintf(logfname, "calog_%s.txt", gettime()); TRACE_BEGIN(logfname)#ifdef WIN32 initSockLib();#endif if (argc != 2) { usage("usage error: specify initfile.\n"); exit(1); } loadInitVars(argv[1]); /*use tidLog to log tid*/ tidLog[0] = mgcHashNew(10, 1, MGCHASH_POINTER); calls = mgcHashNew(10, 0 , MGCHASH_POINTER);
traceLevel = ATOI(getInitVar("trace")); logFlag = ATOI(getInitVar("log")); callAgentPort = ATOI(getInitVar("caPort")); if( callAgentPort <= 0 ) { usage("error in caPort"); } gethostname(myHostName,99);
//////////////////////////////////////////////////for UI //////////////
UIIP = getInitVar("UIIP");
UIport = atoi(getInitVar("UIport"));
printf("\nUIIP=%s\n",UIIP);
printf("\nUIport=%d\n",UIport);
OpenClientSocket(UIIP,UIport);
////////////////////////////////////////////////////////////
/////钡
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -