コード例 #1
0
 internal Boolean RaiseCallback(tsip_dialog_event_type_t type, TSIP_Message message)
 {
     if (mCallback != null)
     {
         return(mCallback(type, message));
     }
     return(false);
 }
コード例 #2
0
        /// <summary>
        /// Callback function called to alert the dialog for new events from the transaction/transport layers
        /// </summary>
        /// <param name="type"></param>
        /// <param name="message"></param>
        /// <returns></returns>
        private Boolean OnCallbackEvent(tsip_dialog_event_type_t type, TSIP_Message message)
        {
            Boolean ret = false;

            switch (type)
            {
                case tsip_dialog_event_type_t.I_MSG:
                    {
                        if (message != null)
                        {
                            if (message.IsResponse)
                            {
                                TSIP_Response response = message as TSIP_Response;
                                //
                                //	RESPONSE
                                //
                                if (response.Is1xx)
                                {
                                    ret = base.ExecuteAction((Int32)FSMAction._1xx, message, null);
                                }
                                else if (response.Is2xx)
                                {
                                    ret = base.ExecuteAction((Int32)FSMAction._2xx, message, null);
                                }
                                else if (response.StatusCode == 401 || response.StatusCode == 407 || response.StatusCode == 421 || response.StatusCode == 494)
                                {
                                    ret = base.ExecuteAction((Int32)FSMAction._401_407_421_494, message, null);
                                }
                                else if (response.StatusCode == 423)
                                {
                                    ret = base.ExecuteAction((Int32)FSMAction._423, message, null);
                                }
                                else
                                {
                                    // Alert User
                                    ret = base.ExecuteAction((Int32)FSMAction.Error, message, null);
                                    /* TSK_DEBUG_WARN("Not supported status code: %d", TSIP_RESPONSE_CODE(msg)); */
                                }
                            }
                            else
                            {
                                //
                                //	REQUEST
                                //
                                if (message.IsREGISTER)
                                {
                                    ret = base.ExecuteAction((Int32)FSMAction.iREGISTER, message, null);
                                }
                            }
                        }
                        break;
                    }

                case tsip_dialog_event_type_t.CANCELED:
                    {
                        ret = base.ExecuteAction((Int32)FSMAction.Cancel, message, null);
                        break;
                    }

                case tsip_dialog_event_type_t.TERMINATED:
                case tsip_dialog_event_type_t.TIMEDOUT:
                case tsip_dialog_event_type_t.ERROR:
                case tsip_dialog_event_type_t.TRANSPORT_ERROR:
                    {
                        ret = base.ExecuteAction((Int32)FSMAction.TransportError, message, null);
                        break;
                    }
            }

            return true;
        }
コード例 #3
0
        /// <summary>
        /// Callback function called to alert the dialog for new events from the transaction/transport layers
        /// </summary>
        /// <param name="type"></param>
        /// <param name="message"></param>
        /// <returns></returns>
        private Boolean OnCallbackEvent(tsip_dialog_event_type_t type, TSIP_Message message)
        {
            Boolean ret = false;

            switch (type)
            {
            case tsip_dialog_event_type_t.I_MSG:
            {
                if (message != null)
                {
                    if (message.IsResponse)
                    {
                        TSIP_Response response = message as TSIP_Response;
                        //
                        //	RESPONSE
                        //
                        if (response.Is1xx)
                        {
                            ret = base.ExecuteAction((Int32)FSMAction._1xx, message, null);
                        }
                        else if (response.Is2xx)
                        {
                            ret = base.ExecuteAction((Int32)FSMAction._2xx, message, null);
                        }
                        else if (response.StatusCode == 401 || response.StatusCode == 407 || response.StatusCode == 421 || response.StatusCode == 494)
                        {
                            ret = base.ExecuteAction((Int32)FSMAction._401_407_421_494, message, null);
                        }
                        else if (response.StatusCode == 423)
                        {
                            ret = base.ExecuteAction((Int32)FSMAction._423, message, null);
                        }
                        else
                        {
                            // Alert User
                            ret = base.ExecuteAction((Int32)FSMAction.Error, message, null);
                            /* TSK_DEBUG_WARN("Not supported status code: %d", TSIP_RESPONSE_CODE(msg)); */
                        }
                    }
                    else
                    {
                        //
                        //	REQUEST
                        //
                        if (message.IsREGISTER)
                        {
                            ret = base.ExecuteAction((Int32)FSMAction.iREGISTER, message, null);
                        }
                    }
                }
                break;
            }

            case tsip_dialog_event_type_t.CANCELED:
            {
                ret = base.ExecuteAction((Int32)FSMAction.Cancel, message, null);
                break;
            }

            case tsip_dialog_event_type_t.TERMINATED:
            case tsip_dialog_event_type_t.TIMEDOUT:
            case tsip_dialog_event_type_t.ERROR:
            case tsip_dialog_event_type_t.TRANSPORT_ERROR:
            {
                ret = base.ExecuteAction((Int32)FSMAction.TransportError, message, null);
                break;
            }
            }

            return(true);
        }
コード例 #4
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());
        }
コード例 #5
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;
 }
コード例 #6
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();
 }
コード例 #7
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;
 }
コード例 #8
0
 internal Boolean RaiseCallback(tsip_dialog_event_type_t type)
 {
     return(this.RaiseCallback(type, null));
 }