Example #1
0
 /// <summary>
 /// Called when a channel state changes.
 /// </summary>
 /// <param name="sender">Event sender object.</param>
 /// <param name="eventArgs">A <see cref="ChannelStateEventArgs"/> object.</param>
 protected virtual void OnChannelStateChanged(object sender, ChannelStateEventArgs eventArgs)
 {
     if (ChannelStateChanged != null)
     {
         ChannelStateChanged(sender, eventArgs);
     }
 }
Example #2
0
        /// <summary>
        /// Sets new channel state.
        /// The method updates the <see cref="State"/> property and invokes the <see cref="OnChannelStateChanged"/> method.
        /// </summary>
        /// <param name="state">The new <see cref="ChannelState"/> value.</param>
        protected void SetChannelState(ChannelState state)
        {
            if (state == State)
            {
                return;
            }

            var eventArgs = new ChannelStateEventArgs(State, state);

            if (state == ChannelState.Disconnected)
            {
                lock (_subscriptions)
                {
                    _subscriptions.Clear();
                }
            }
            else if (state == ChannelState.Reconnecting)
            {
                _reconnectTaskCompletionSource = new TaskCompletionSource <object>();
            }

            State = state;
            Task.Run(() => OnChannelStateChanged(eventArgs));

            if (eventArgs.OldState == ChannelState.Reconnecting)
            {
                _reconnectTaskCompletionSource.TrySetResult(true);
            }
        }
Example #3
0
        /// <summary>
        /// Fires the <see cref="StateChanged"/> event.
        /// </summary>
        /// <param name="eventArgs">The <see cref="ChannelStateEventArgs"/> object.</param>
        protected virtual void OnChannelStateChanged(ChannelStateEventArgs eventArgs)
        {
            if (eventArgs == null)
            {
                throw new ArgumentNullException("eventArgs");
            }

            if (StateChanged != null)
            {
                StateChanged(this, eventArgs);
            }
        }
 /// <summary>
 /// Called when a channel state changes.
 /// </summary>
 /// <param name="sender">Event sender object.</param>
 /// <param name="eventArgs">A <see cref="ChannelStateEventArgs"/> object.</param>
 protected virtual void OnChannelStateChanged(object sender, ChannelStateEventArgs eventArgs)
 {
     if (ChannelStateChanged != null)
         ChannelStateChanged(sender, eventArgs);
 }