📄 stackcb.h
字号:
/********************************************************************* * MGCP message used in message list *********************************************************************//* Message data of outgoing command message from EndpointCtrl to TranacManager */#define MAX_PIGGY_MSG_NUM 10 /* Maximum command number can be piggybacked, if the outgoing piggyback command number over this limit, the overflowed will no be piggybacked */typedef struct{ DWORD dwCmdId; /* Command ID of this outgoing command */ WORD wPiggyCmdNum; /* Piggybacked command number */ /* Command IDs piggybacked with this cmd */ DWORD PiggybackCmdIDTable[MAX_PIGGY_MSG_NUM]; H_MGCP_ENDPOINT hEndpointHandle; /* Handle of the endpoint sending this command */ NOTIFIED_ENTITY NotifiedEntity; /* Current NE to which for this command to send */ DWORD dwInitRTO; /* Initial retransmission timer value of this command, used for calculate RTO */ E_MGCP_CMD eType; union { MGCP_RSIP_CMD *pRsipCmd; MGCP_NTFY_CMD *pNtfyCmd; MGCP_DLCX_CMD *pDlcxCmd; } u;} MGCP_CMD_OUT;/* Outgoing command struct used only when buffering the command in Disconnected procedure */typedef struct{ DWORD dwTimwDuration; /* Time elaplse after initally be buffered, will be deleted after T-MAX if still in disconnecdted procedure*/ MGCP_CMD_OUT *pCmdOut;} MGCP_BUF_CMD;/* Message data of outgoing response message from EndpointCtrl to TranacManager */typedef struct { WORD wRspCode; /* Response code */ char *pcRspString; /* Response string */ DWORD dwTransacId; /* Transaction id */ WORD wPiggyCmdNum; /* Command number piggybacked with this response */ DWORD PiggybackCmdIDTable[MAX_PIGGY_MSG_NUM]; DWORD dwDesIpAddr; /* IP address of this response */ WORD wDesPort; /* UDP port of this response */ E_MGCP_RSP eType; union { MGCP_EPCF_RSP *pEpcfRsp; MGCP_RQNT_RSP *pRqntRsp; MGCP_CRCX_RSP *pCrcxRsp; MGCP_MDCX_RSP *pMdcxRsp; MGCP_DLCX_RSP *pDlcxRsp; MGCP_AUEP_RSP *pAuepRsp; MGCP_AUCX_RSP *pAucxRsp; } u;} MGCP_RSP_OUT;/* Command sent out */typedef struct{ DWORD dwTransacId; DWORD dwTimeDuration; /* Time elapse after initial transimission */ WORD wRetranCounter; /* Retransmission times */ DWORD dwRTO; /* Retransmission timer value*/ MGCP_CMD_OUT *pCmdOut;} TRANSAC_CMD_OUT;/* Command sent out and receive the response waiting ack */typedef struct{ DWORD dwTransacId; DWORD dwTimeDuration; /* Time elapse after initial transimission */} TRANSAC_RSPACK_OUT;/* Incoming command */typedef struct{ DWORD dwTransacId; BOOL bProvisionalRspOut; /* Whether has sent a provisonal response to this command, used for provisonal response procedure */} TRANSAC_CMD_IN;/* Response to incoming command sent out */typedef struct{ DWORD dwTimeDuration; /* Time elapse after initial transimission */ MGCP_RSP_OUT *pRspOut;} TRANSAC_RSP_OUT;/* Response to incoming command sent out and wait ack */typedef struct{ DWORD dwTimeDuration; /* Time elapse after initial transimission */ WORD wRetranCounter; /* Retransmission times */ DWORD dwRTO; /* Retransmission timer */ MGCP_RSP_OUT *pRspOut;} TRANSAC_RSP_WAIT_ACK;/* Response to incoming command sent out and acked */typedef struct{ DWORD dwTransacId;} TRANSAC_RSP_ACKED;/******************************************************************** * Endpoint control structure ********************************************************************//* MGCP Connection */typedef struct{ DWORD dwConnectionID; /* MGCP Connection ID used between stack and app */ CONNECTION_MODE ConnecMode; LOCAL_CONNEC_OPTS LocalConnecOpt; /* Most recent Local connection option, only used for AUCX response */ CONNECTION_DESCRIPTOR LocalConnecDesc; /* SDP info of local connecteion */ CONNECTION_DESCRIPTOR *pRemoteConnecDesc; /* SDP info of remote connecteion */ } MGCP_CONNECTION;/* MGCP Call */ typedef struct{ char *pcCallId; /* MGCP call ID used in mgcp message */ SLIST ConnectionList; /* Connections associated to this call */} MGCP_CALL;/* Message data of incoming response message from TranacManager to EndpointCtrl */typedef struct{ WORD wRspCode; /* Response code */ DWORD dwCmdId; /* Command id of this response */ H_MGCP_ENDPOINT hEndpointHandle; /* Target endpoint handle receive this response */ DWORD dwRTTDelay; /* Round trip time delay of response the command */ E_MGCP_RSP eType; /* The response type(RSIP/NTFY/DLCX) */ union /* Response data */ { MGCP_RSIP_RSP *pRsipRsp; MGCP_NTFY_RSP *pNtfyRsp; MGCP_DLCX_RSP *pDlcxRsp; } u;} MGCP_RSP_IN;/* Message type used between threads */typedef enum{ /* Messages from TransacManager to EndpointCtrl */ M_INCOMING_CMD = 100, /* Incoming MGCP command */ M_INCOMING_RSP, /* Incoming MGCP response */ M_DISCONNECTED, /* Disconnected indication */ /* Messages from Application to EndpointCtrl */ M_APPLICATION_MSG = 200, /* Messages from EndpointCtrl to TransacManager */ M_OUTGOING_CMD = 300, /* Outgoing MGCP command */ M_OUTGOING_RSP, /* Outgoing MGCP response */ M_UPDATE_NE, /* Notifed entity updatation */ /* Messages from Timer Handler */ M_TIMEOUT = 400 /* Timout message from timer */} E_MSG_CODE;/* Message data for M_UPDATE_NE message */typedef struct{ H_MGCP_ENDPOINT hEndpoint; NOTIFIED_ENTITY NewNotifiedEntity;} MSG_DATA_UPDATE_NE;/* Message data for M_DISCONNECTED message */typedef struct{ H_MGCP_ENDPOINT hEndpoint; E_MGCP_CMD eCmdType;} MSG_DATA_DISCONNECTED;/* Message struct for thread message queue */typedef struct{ E_MSG_CODE eMsgCode; /* Code of the message */ void *pMsgData; /* Message data */} MGCP_STACK_MSG;/* Incoming MGCP command defination *//* Message data of incoming command from TranacManager to EndpointCtrl */typedef struct{ DWORD dwTransacId; /* Used for sending corresponding response */ ENDPOINT_NAME EndpointName; /* Endpoing name to receive this command */ DWORD dwSrcIpAddr; /* IP address of this command */ WORD wSrcPort; /* UDP port of this command */ E_MGCP_CMD eType; /* Command type */ union /* Command data */ { MGCP_EPCF_CMD *pEpcfCmd; MGCP_RQNT_CMD *pRqntCmd; MGCP_CRCX_CMD *pCrcxCmd; MGCP_MDCX_CMD *pMdcxCmd; MGCP_DLCX_CMD *pDlcxCmd; MGCP_AUEP_CMD *pAuepCmd; MGCP_AUCX_CMD *pAucxCmd; MGCP_EXPR_CMD *pExprCmd; } u;} MGCP_CMD_IN;/*Message date from application to EndpointCtrl *//* Message data of event notify command */typedef struct{ MGCP_OBSERVED_EVENT Event; EXPERIMENTAL_PARAMS *pExperiParamList;} ENDPOINT_EVENT;/* Message data of event notify command */typedef struct{ MGCP_OBSERVED_EVENT Event; E_MGCP_EVENT eSigID; /* Signal ID of operation */ DWORD dwConnecID; /* Connection ID of the signal */ EXPERIMENTAL_PARAMS *pExperiParamList;} ENDPOINT_OPERATION_EVENT;/* Message data delete connection command */typedef struct{ char *pcCallId; char *pcConnecId; REASON_CODE *pReasonCode; CONNECTION_PARAMETERS *pConnecParam; EXPERIMENTAL_PARAMS *pExperiParamList;} ENDPOINT_DLCX;/* Message data of CRCX/MDCX accept response */typedef struct{ DWORD dwConnecID; CONNECTION_DESCRIPTOR *pLocalConnDes; EXPERIMENTAL_PARAMS *pExperiParamList;} ENDPOINT_CONNECTION_OK;/* Message data of CRCX/MDCX reject response */typedef struct{ DWORD dwConnecID; /* Connection ID */ WORD wRspCode; /* Response code */ EXPERIMENTAL_PARAMS *pExperiParamList;} ENDPOINT_CONNECTION_FAIL;typedef enum{ M_ENDPOINT_NOTIFY = 1, /* NTFY event, except OC/OF */ M_ENDPOINT_OPERATION_NOTIFY, /* NTFY event, only for OC/OF */ M_ENDPOINT_DLCX_REQ, /* DLCX command */ M_ENDPOINT_CRCX_OK, /* Response to CRCX */ M_ENDPOINT_CRCX_FAIL, /* Response to CRCX */ M_ENDPOINT_MDCX_OK, /* Response to MDCX */ M_ENDPOINT_MDCX_FAIL /* Response to MDCX */} E_ENDPOINT_MSG;typedef struct{ H_MGCP_ENDPOINT hEndpointHandle; /* Endpoint handle */ E_ENDPOINT_MSG eType; /* Message type */ union { ENDPOINT_EVENT *pEventNotify; /* NTFY event(except OC/OF) */ ENDPOINT_OPERATION_EVENT *pOperationEvent; /* NTFY OC/OF event */ ENDPOINT_DLCX *pDeleteConnectReq; /* DLCX command */ ENDPOINT_CONNECTION_OK *pAcceptConnection; /* Accept CRCX/MDCX */ ENDPOINT_CONNECTION_FAIL *pRejectConnection; /* Reject CRCX/MDCX */ } u;} MGCP_ENDPOINT_MSG;/* Incoming MGCP pending RQNT command */typedef struct{ SLIST PendingSigReq; /* Requested signal list */ SLIST PendingReqEvents; /* Requested event list */ SLIST PendingDetEvents; /* Detect event list */ char *pcReqID; /* Requested ID */ DIGIT_MAP *pDigitMap; /* Digit map */ QUARANTINE_HANDLING *pQuarantineHandling;} MGCP_PENDING_RQNT;typedef DWORD H_MGCP_CONNECTION;typedef struct{ /* This field is only used for MDCX */ H_MGCP_CONNECTION hConnection; /* Handle of the connection to be modified, only used in MDCX, must not to be freed! */ char *pcCallId; /* MGCP call ID used in mgcp message */ DWORD dwConnectionID; /* MGCP Connection ID used between stack and app */ CONNECTION_MODE *pConnecMode; LOCAL_CONNEC_OPTS *pLocalConnecOpt; /* Most recent Local connection option, only used for AUCX response */ CONNECTION_DESCRIPTOR *pRemoteConnecDesc; /* SDP info of remote connecteion */ /* Below fields are only used for CRCX */ H_MGCP_ENDPOINT pSpecificEndPnt; /* If not NULL, the CRCX use ANY wildcard, so response to CRCX must contain the SpecificEndpoint parameter */ H_MGCP_ENDPOINT pSecondEndPnt; /* If not NULL, the CRCX is a to create two local connections */ DWORD dwSecondConnectionId;} MGCP_PENDING_CONNEC;typedef struct{ DWORD dwTransacID; /* Transaction ID of the CRCX/MDCX */ DWORD dwSrcIpAddr; /* Source IP address of the CRCX/MDCX */ WORD wSrcPort; /* Source port of the CRCX/MDCX */ MGCP_PENDING_RQNT *pPendingRqnt; /* Encap RQNT of the CRCX/MDCX */ MGCP_PENDING_CONNEC PendingConn; /* Connection info of the pending CRCX/MDCX */} MGCP_PENDING_CONNEC_CMD;void ClearPendingRqnt(MGCP_PENDING_RQNT *pData);void ClearPendingConnection(MGCP_PENDING_CONNEC *pData);void ClearPendingConnectionCmd(MGCP_PENDING_CONNEC_CMD *pData);void ClearPendingConnectionCmdlist(SLIST *pData);void ClearMgcpRspIn(MGCP_RSP_IN* pData);void ClearMgcpRspOut(MGCP_RSP_OUT* pData);void ClearMgcpCmdOut(MGCP_CMD_OUT* pData);void ClearMgcpCmdIn(MGCP_CMD_IN* pData);void ClearTranRspOut(TRANSAC_RSP_OUT *pData);void ClearTranRspOutWaitAck(TRANSAC_RSP_WAIT_ACK *pData);void ClearTranCmdOut(TRANSAC_CMD_OUT *pData);void ClearMgcpConnection(MGCP_CONNECTION *pData);void ClearMgcpCall(MGCP_CALL *pData);void ClearMgcpCallList(SLIST *pData);void ClearMgcpBufferCmdList(SLIST *pData);void ClearMgcpEndpoint(MGCP_ENDPOINT *pData);void ClearEndpointEventNotify(ENDPOINT_EVENT *pData);void ClearEndpointDlcxRequest(ENDPOINT_DLCX *pData);void ClearEndpointAcceptConnection(ENDPOINT_CONNECTION_OK *pData);void ClearEndpointRejectConnection(ENDPOINT_CONNECTION_FAIL *pData);void ClearMgcpEndpointMsg(MGCP_ENDPOINT_MSG *pData);void ClearMgcpStackMessage(MGCP_STACK_MSG *pData);void ClearMgcpMessageList(MGCP_MSG_LIST *pMsgList);/* Only used for Debug */void PrintStackMSG(MGCP_STACK_MSG *pMsg);#ifdef __cplusplus}#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -