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; }
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); }
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; }
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"); } }
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()); }
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_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(); }
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()); }
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; }
internal void AddSession(TSip_Session session) { if (session != null && !mSipSessions.ContainsKey(session.Id)) { mSipSessions.Add(session.Id, session); } }
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(); }
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; }