📄 transutil.h
字号:
*
* Input/Output: hsTransHost - The host to be deleted.
* killHost - Should the host be removed from the hash and close
* its TPKT element or just disconnect from session?
*
* Output: None.
*
**************************************************************************************/
void transHostClose(HSTRANSHOST hsTransHost, RvBool killHost);
/**************************************************************************************
* findSessionByMessage
*
* Purpose: looks according to the CRV and callID of the message for an entry of the session
* in the host's hash table. If none was found, creates an entry.
* In case of non-session releated messages (CRV = 0) the routine treats it
* as an error and expect the upper layer to handle the case.
*
* Input: transGlobals - The global data of the transport module.
* host - The host on which the message arrived.
* pvtNode - The decoded message.
* isAnnexE - is the host on which the message came is an annex E host?
*
* Output: session - The session found or created.
*
* returned value: RV_TRUE - an error occured, RV_FALSE - all is OK (that doesn't mean that we
* have a session ).
*
**************************************************************************************/
RvBool findSessionByMessage(
cmTransGlobals *transGlobals,
cmTransHost *host,
int pvtNode,
RvBool isAnnexE,
cmTransSession **session);
/**************************************************************************************
* setRemoteAddress
*
* Purpose: sets the remote address to the host and adds an entry to the host hash table
*
* Input: host - The host to which the address is to be set.
* remoteAddress - The address to be set.
*
* Return Value: cmTransOK - if all is well; cmTranErr - otherwise
*
**************************************************************************************/
TRANSERR setRemoteAddress(cmTransHost *host, cmTransportAddress *remoteAddress);
/************************************************************************************
* canWeAcceptTheCall
*
* Purpose: to check if this is the first call on this host, or if this host supports
* multiplexing. If this host doesn't support multiplexing and already has a
* session attached to it, refuse the message and send releaseComplete on
* the call.
*
* Input: transGlobals - The global variables of the module
* host - the host through which the message was received.
* pvtNode - the decoded message
*
* Output: None
*
* returned value: RV_TRUE - accept the message
* RV_FALSE - refuse it and disconnect the call.
*
**************************************************************************************/
RvBool canWeAcceptTheCall(cmTransGlobals *transGlobals, cmTransHost *host, int pvtNode);
/************************************************************************************
* encodeAndSend
*
* Purpose: encodes and sends a given decoded message on a given host. No checks and
* no processing is done on the message.
* Note: The node of the decoded message remains untouched.
*
* Input: transGlobals - The global variables of the module
* host - the host through which the message is to be sent.
* newMessage - the decoded message.
*
* Output: None
*
* return value: RV_TRUE: messahe was sent, RV_FALSE: sending failed.
*
**************************************************************************************/
RvBool encodeAndSend(cmTransGlobals *transGlobals, cmTransHost *host, int newMessage);
/************************************************************************************
* sendGeneralFacility
*
* Purpose: creates a general purpose faclity message with CRV and callId set to zero.
* sets in itthe host's current multiplex parameters, encodes it and send it
* on the host.
*
* Input: transGlobals - The global variables of the module
* host - the host through which the message is to be sent.
*
* Output: None
*
**************************************************************************************/
void sendGeneralFacility(cmTransGlobals *transGlobals, cmTransHost *host);
/************************************************************************************
* initiateTunnelingFacility
*
* Purpose: if we are in a 'stable' state we need to initiate a facility send
* to get rid of the tunneled messages, and initiate it.
* The condition for that are:
* a. We have tunneled messages to send
* b. At least one message was already sent from this end
* c. Tunneling was approved
*
* Input: transGlobals - The global variables of the module
* session - the session whose state is tested.
* host - the related locked host, if at all
*
* Output: None
*
**************************************************************************************/
void initiateTunnelingFacility(cmTransGlobals *transGlobals,
cmTransSession *session,
cmTransHost *host);
/************************************************************************************
* sendReleaseCompleteMessage
*
* Purpose: initiate a send of releaseComplete in case that:
* a. A call was initiated on a non multiplexed connection that
* has already other call(s).
* b. We ran out of resources (mainly sessions)
*
* Input: transGlobals - The global variables of the module
* host - the host through which the message is to be sent.
* CRV - the CRV to attach to the message
* callId - the call identifier to attach to th emessage
* cause - The call release cause
* reasonNameId - field Id of the disconnect reason.
*
* Output: None
*
**************************************************************************************/
void sendReleaseCompleteMessage(cmTransGlobals *transGlobals,
cmTransHost *host,
RvUint16 CRV,
RvUint8 *callId,
int cause,
RvPstFieldId reasonNameId);
/************************************************************************************
* getGoodAddress
*
* Purpose: Calculate the ip address as follows:
*
* a. Try and get the allocated ip address from the TCP/IP stack.
* b. if 0, try and get the Q.931 connection ip address.
* c. if 0, use the localIPAddress as was given in cmTransStart.
* d. if 0, just leave it as 0 since we might want to use different
* lan interface than the one of the first IP address.
*
* Note: for Q.931 connections, step a is being skipped.
*
* Input: transGlobals - The global variables of the module.
* hTpkt - The tpkt element of the socket whose address we want to find.
* q931 - The Q.931 connection of a given H.245 socket (relevent only when
* type is cmTransH245Conn).
* type - The type of the connection: Q.931, H.245 or annexE.
*
* Output: addr - The calculated good ip address.
*
**************************************************************************************/
void getGoodAddress(cmTransGlobals *transGlobals,
HTPKT hTpkt,
cmTransHost *q931Host,
TRANSCONNTYPE type,
cmTransportAddress *addr);
/************************************************************************************
* sendStartH245Facility
*
* Purpose: to create and send a facility message with reason startH245.
*
*
* Input: transGlobals - The global variables of the module.
* session - The session on which the facility is to be sent.
*
* Output: None.
*
**************************************************************************************/
void sendStartH245Facility(cmTransGlobals *transGlobals, cmTransSession *session);
/************************************************************************************
* transCompareAddresses
*
* Purpose: compare to addresses according to their type.
*
*
* Input: addr1, addr2 - teh cmTransportAddress to compare.
*
* Output: None.
*
* Returned Value: RV_TRUE - the addresses are identical; RV_FALSE - Otherwise
**************************************************************************************/
RvBool transCompareAddresses(cmTransportAddress *addr1, cmTransportAddress *addr2);
/**************************************************************************************
* closeHostInternal
*
* Purpose: Deletes a host element. Will notify all its associates sessions.
*
* Input: hsTranHost - An handle to the host element
*
* Output: None.
*
**************************************************************************************/
TRANSERR closeHostInternal(IN HSTRANSHOST hsTransHost, IN RvBool reportToUser);
#ifdef __cplusplus
}
#endif
#endif /* _TRANSUTIL_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -