Ejemplo n.º 1
0
        /// <summary>
        /// Conversation event handler.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ConversationStateChanged(object sender, Microsoft.Rtc.Signaling.StateChangedEventArgs <ConversationState> e)
        {
            Conversation conversation = sender as Conversation;

            if (e.State == ConversationState.Terminating)
            {
                this.UnregisterConversationEventHandlers(conversation);
                this.Terminate();
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Ucma conversation state changed handler.
        /// </summary>
        /// <param name="sender">Sender.</param>
        /// <param name="e">Event args.</param>
        private void UcmaConversation_StateChanged(object sender, Microsoft.Rtc.Signaling.StateChangedEventArgs <ConversationState> e)
        {
            if (e.State == ConversationState.Terminating)
            {
                Conversation    conversation    = sender as Conversation;
                WebConversation webConversation = null;
                //If conversation is terminating remove it from local dictionary.
                lock (m_conversationDictionary)
                {
                    conversation.StateChanged -= this.UcmaConversation_StateChanged;
                    if (!m_conversationDictionary.TryGetValue(conversation.Id, out webConversation))
                    {
                        webConversation = null;
                    }
                    m_conversationDictionary.Remove(conversation.Id);
                }

                if (webConversation != null)
                {
                    ConversationTerminationNotification conversationTerminationNotification = new ConversationTerminationNotification();
                    conversationTerminationNotification.Conversation = webConversation;

                    IConversationCallback convCallback = WebConversationManager.GetActiveConversationCallback(webConversation);
                    if (convCallback != null)
                    {
                        try
                        {
                            convCallback.ConversationTerminated(conversationTerminationNotification);
                        }
                        catch (System.TimeoutException)
                        {
                        }
                    }
                }
            }
        }