Ejemplo n.º 1
0
            private static void WaitOverCallback(object state, Exception asyncException)
            {
                DatagramChannelDemuxer <TInnerChannel, TInnerItem> .OpenAsyncResult result = (DatagramChannelDemuxer <TInnerChannel, TInnerItem> .OpenAsyncResult)state;
                Exception exception = asyncException;
                bool      flag      = false;

                if (exception != null)
                {
                    flag = true;
                }
                else
                {
                    try
                    {
                        flag = result.OnWaitOver();
                    }
                    catch (Exception exception2)
                    {
                        if (Fx.IsFatal(exception2))
                        {
                            throw;
                        }
                        flag      = true;
                        exception = exception2;
                    }
                }
                if (flag)
                {
                    result.Cleanup();
                    result.Complete(false, exception);
                }
            }
Ejemplo n.º 2
0
 public OpenAsyncResult(DatagramChannelDemuxer <TInnerChannel, TInnerItem> channelDemuxer, ChannelDemuxerFilter filter, IChannelListener listener, TimeSpan timeout, AsyncCallback callback, object state) : base(callback, state)
 {
     this.channelDemuxer = channelDemuxer;
     this.filter         = filter;
     this.listener       = listener;
     this.timeoutHelper  = new TimeoutHelper(timeout);
     if (this.channelDemuxer.openSemaphore.EnterAsync(this.timeoutHelper.RemainingTime(), DatagramChannelDemuxer <TInnerChannel, TInnerItem> .OpenAsyncResult.waitOverCallback, this))
     {
         bool flag  = false;
         bool flag2 = false;
         try
         {
             flag2 = this.OnWaitOver();
             flag  = true;
         }
         finally
         {
             if (!flag)
             {
                 this.Cleanup();
             }
         }
         if (flag2)
         {
             this.Cleanup();
             base.Complete(true);
         }
     }
 }
Ejemplo n.º 3
0
 public CloseAsyncResult(DatagramChannelDemuxer <TInnerChannel, TInnerItem> channelDemuxer, TimeSpan timeout, AsyncCallback callback, object state) : base(callback, state)
 {
     this.channelDemuxer = channelDemuxer;
     this.timeoutHelper  = new TimeoutHelper(timeout);
     if (channelDemuxer.innerChannel != null)
     {
         bool flag = false;
         try
         {
             IAsyncResult result = channelDemuxer.innerChannel.BeginClose(this.timeoutHelper.RemainingTime(), DatagramChannelDemuxer <TInnerChannel, TInnerItem> .CloseAsyncResult.sharedCallback, this);
             if (!result.CompletedSynchronously)
             {
                 flag = true;
                 return;
             }
             channelDemuxer.innerChannel.EndClose(result);
             flag = true;
         }
         finally
         {
             if (!flag)
             {
                 this.channelDemuxer.AbortState();
             }
         }
     }
     if (this.OnInnerChannelClosed())
     {
         base.Complete(true);
     }
 }
Ejemplo n.º 4
0
 private static void OpenListenerCallback(IAsyncResult result)
 {
     if (!result.CompletedSynchronously)
     {
         DatagramChannelDemuxer <TInnerChannel, TInnerItem> .OpenAsyncResult asyncState = (DatagramChannelDemuxer <TInnerChannel, TInnerItem> .OpenAsyncResult)result.AsyncState;
         Exception exception = null;
         try
         {
             asyncState.OnInnerListenerEndOpen(result);
         }
         catch (Exception exception2)
         {
             if (Fx.IsFatal(exception2))
             {
                 throw;
             }
             exception = exception2;
         }
         if (exception != null)
         {
             asyncState.channelDemuxer.pendingInnerListenerOpenException = exception;
         }
         asyncState.Cleanup();
         asyncState.Complete(false, exception);
     }
 }
Ejemplo n.º 5
0
 private static void SharedCallback(IAsyncResult result)
 {
     if (!result.CompletedSynchronously)
     {
         DatagramChannelDemuxer <TInnerChannel, TInnerItem> .CloseAsyncResult asyncState = (DatagramChannelDemuxer <TInnerChannel, TInnerItem> .CloseAsyncResult)result.AsyncState;
         bool      flag      = false;
         Exception exception = null;
         bool      flag2     = false;
         try
         {
             if (!asyncState.closedInnerChannel)
             {
                 asyncState.channelDemuxer.innerChannel.EndClose(result);
                 flag  = asyncState.OnInnerChannelClosed();
                 flag2 = true;
             }
             else
             {
                 asyncState.channelDemuxer.innerListener.EndClose(result);
                 flag  = true;
                 flag2 = true;
             }
         }
         catch (Exception exception2)
         {
             if (Fx.IsFatal(exception2))
             {
                 throw;
             }
             flag      = true;
             exception = exception2;
         }
         finally
         {
             if (!flag2)
             {
                 asyncState.channelDemuxer.AbortState();
             }
         }
         if (flag)
         {
             asyncState.Complete(false, exception);
         }
     }
 }