SIPSorcery.Servers.SIPProxyDispatcher.LookupTransactionID C# (CSharp) Method

LookupTransactionID() public method

public LookupTransactionID ( SIPRequest sipRequest ) : SIPEndPoint
sipRequest SIPSorcery.SIP.SIPRequest
return SIPSorcery.SIP.SIPEndPoint
        public SIPEndPoint LookupTransactionID(SIPRequest sipRequest)
        {
            try
            {
                SIPEndPoint transactionEndPoint = LookupTransactionID(sipRequest.Header.CallId);
                if (transactionEndPoint != null)
                {
                    return transactionEndPoint;
                }
                else if (sipRequest.Method == SIPMethodsEnum.INVITE && !sipRequest.URI.User.IsNullOrBlank())
                {
                    string toUser = (sipRequest.URI.User.IndexOf('.') != -1) ? sipRequest.URI.User.Substring(sipRequest.URI.User.LastIndexOf('.') + 1) : sipRequest.URI.User;
                    if (m_userCallbacks.ContainsKey(toUser))
                    {
                        SIPEndPoint callbackEndPoint = null;
                        callbackEndPoint = SIPEndPoint.ParseSIPEndPoint(m_userCallbacks[toUser].DesintationEndPoint);
                        RecordDispatch(sipRequest, callbackEndPoint);
                        ProxyLogger_External(new SIPMonitorConsoleEvent(SIPMonitorServerTypesEnum.SIPProxy, SIPMonitorEventTypesEnum.DialPlan, "SIP Proxy directing incoming call for user " + toUser + " to application server " + callbackEndPoint.ToString() + ".", toUser));

                        lock (m_userCallbacks)
                        {
                            m_userCallbacks.Remove(toUser);
                        }

                        return callbackEndPoint;
                    }
                }

                return null;
            }
            catch (Exception excp)
            {
                logger.Error("Exception LookupTransactionID. " + excp.Message);
                return null;
            }
        }

Same methods

SIPProxyDispatcher::LookupTransactionID ( SIPResponse sipResponse ) : SIPEndPoint
SIPProxyDispatcher::LookupTransactionID ( string callID ) : SIPEndPoint

Usage Example

        public SIPEndPoint DispatcherLookup(SIPRequest sipRequest)
        {
            if (m_dispatcher != null &&
                (sipRequest.Method == SIPMethodsEnum.ACK || sipRequest.Method == SIPMethodsEnum.CANCEL || sipRequest.Method == SIPMethodsEnum.INVITE))
            {
                return(m_dispatcher.LookupTransactionID(sipRequest));
            }

            return(null);
        }