Ejemplo n.º 1
0
        internal TSIP_Dialog CreateDialog(TSIP_Dialog.tsip_dialog_type_t type, TSip_Session sipSession)
        {
            TSIP_Dialog dialog = null;

            switch (type)
            {
                case TSIP_Dialog.tsip_dialog_type_t.REGISTER:
                    {
                        dialog = new TSIP_DialogRegister(sipSession as TSIP_SessionRegister);
                        break;
                    }

                default:
                    {
                        TSK_Debug.Error("{0} not support as dialog type", type);
                        break;
                    }
            }

            if (dialog != null && !mDialogs.ContainsKey(dialog.Id))
            {
                mMutex.WaitOne();
                mDialogs.Add(dialog.Id, dialog);
                mMutex.ReleaseMutex();
            }

            return dialog;
        }
Ejemplo n.º 2
0
        internal TSIP_Dialog CreateDialog(TSIP_Dialog.tsip_dialog_type_t type, TSip_Session sipSession)
        {
            TSIP_Dialog dialog = null;

            switch (type)
            {
            case TSIP_Dialog.tsip_dialog_type_t.REGISTER:
            {
                dialog = new TSIP_DialogRegister(sipSession as TSIP_SessionRegister);
                break;
            }

            default:
            {
                TSK_Debug.Error("{0} not support as dialog type", type);
                break;
            }
            }

            if (dialog != null && !mDialogs.ContainsKey(dialog.Id))
            {
                mMutex.WaitOne();
                mDialogs.Add(dialog.Id, dialog);
                mMutex.ReleaseMutex();
            }

            return(dialog);
        }
Ejemplo n.º 3
0
 protected TSIP_Event(TSip_Session sipSession, ushort code, String phrase, TSIP_Message sipMessage, tsip_event_type_t type)
 {
     mSipSession = sipSession;
     mCode = code;
     mPhrase = phrase;
     mSipMessage = sipMessage;
     mType = type;
 }
Ejemplo n.º 4
0
        internal const Int64 SHUTDOWN_TIMEOUT = 2000; /* miliseconds. */

        internal TSIP_Dialog(tsip_dialog_type_t type, String callId, TSip_Session session)
        {
            mId           = sUniqueId++;
            mRecordRoutes = new List <TSIP_HeaderRecordRoute>();
            mChallenges   = new List <TSIP_Challenge>();

            mPaths          = new List <TSIP_Uri>();
            mServiceRoutes  = new List <TSIP_Uri>();
            mAssociatedUris = new List <TSIP_Uri>();

            mState = tsip_dialog_state_t.Initial;
            mType  = type;

            mCallId     = String.IsNullOrEmpty(callId) ? TSIP_HeaderCallId.RandomCallId() : callId;
            mSipSession = session;

            /* Sets some default values */
            mExpires   = TSip_Session.DEFAULT_EXPIRES;
            mTagLocal  = TSK_String.Random();
            mCSeqValue = (UInt32) new Random().Next();

            /*=== SIP Session ===*/
            if (mSipSession != null)
            {
                mExpires  = mSipSession.Expires;
                mUriLocal = !String.IsNullOrEmpty(callId) /* Server Side */ ? mSipSession.UriTo : mSipSession.UriFrom;
                if (mSipSession.UriTo != null)
                {
                    mUriRemote       = mSipSession.UriTo;
                    mUriRemoteTarget = mSipSession.UriTo;
                }
                else
                {
                    mUriRemote       = mSipSession.UriFrom;
                    mUriRemoteTarget = mSipSession.Stack.Realm;
                }
            }
            else
            {
                TSK_Debug.Error("Invalid Sip Session");
            }
        }
Ejemplo n.º 5
0
        internal static Boolean Signal(tsip_dialog_event_type_t eventType, TSip_Session sipSession, String phrase, TSIP_Message sipMessage)
        {
            TSIP_EventDialog @event = new TSIP_EventDialog(eventType, sipSession, phrase, sipMessage);

            return(@event.Signal());
        }
Ejemplo n.º 6
0
 internal TSIP_EventDialog(tsip_dialog_event_type_t eventType, TSip_Session sipSession, String phrase, TSIP_Message sipMessage)
     : base(sipSession, 0, phrase, sipMessage, tsip_event_type_t.DIALOG)
 {
     mEventType = eventType;
 }
Ejemplo n.º 7
0
 internal static Boolean Signal(tsip_dialog_event_type_t eventType, TSip_Session sipSession, String phrase, TSIP_Message sipMessage)
 {
     TSIP_EventDialog @event = new TSIP_EventDialog(eventType, sipSession, phrase, sipMessage);
     return @event.Signal();
 }
Ejemplo n.º 8
0
 internal TSIP_EventDialog(tsip_dialog_event_type_t eventType, TSip_Session sipSession, String phrase, TSIP_Message sipMessage)
     : base(sipSession, 0, phrase, sipMessage, tsip_event_type_t.DIALOG)
 {
     mEventType = eventType;
 }
        internal static Boolean Signal(tsip_register_event_type_t eventType, TSip_Session sipSession, ushort code, String phrase, TSIP_Message sipMessage)
        {
            TSIP_EventRegister @event = new TSIP_EventRegister(eventType, sipSession, code, phrase, sipMessage);

            return(@event.Signal());
        }
Ejemplo n.º 10
0
 internal TSIP_EventRegister(tsip_register_event_type_t eventType, TSip_Session sipSession, ushort code, String phrase, TSIP_Message sipMessage)
     : base(sipSession, code, phrase, sipMessage, tsip_event_type_t.REGISTER)
 {
     mEventType = eventType;
 }
Ejemplo n.º 11
0
 internal void AddSession(TSip_Session session)
 {
     if (session != null && !mSipSessions.ContainsKey(session.Id))
     {
         mSipSessions.Add(session.Id, session);
     }
 }
Ejemplo n.º 12
0
 internal static Boolean Signal(tsip_register_event_type_t eventType, TSip_Session sipSession, ushort code, String phrase, TSIP_Message sipMessage)
 {
     TSIP_EventRegister @event = new TSIP_EventRegister(eventType, sipSession, code, phrase, sipMessage);
     return @event.Signal();
 }
Ejemplo n.º 13
0
 internal TSIP_EventRegister(tsip_register_event_type_t eventType, TSip_Session sipSession, ushort code, String phrase, TSIP_Message sipMessage)
     : base(sipSession, code, phrase, sipMessage, tsip_event_type_t.REGISTER)
 {
     mEventType = eventType;
 }