private IConnection BuildConnectionFromData(DuplicateContext duplicateContext, int connectionBufferSize)
 {
     if (this.isTcp)
     {
         return(this.BuildDuplicatedTcpConnection((TcpDuplicateContext)duplicateContext, connectionBufferSize));
     }
     return(this.BuildDuplicatedNamedPipeConnection((NamedPipeDuplicateContext)duplicateContext, connectionBufferSize));
 }
 private bool HandleOnVia(DuplicateContext duplicateContext)
 {
     if (this.onDuplicatedViaCallback != null)
     {
         lock (this.ThisLock)
         {
             if (this.onDuplicatedViaCallback == null)
             {
                 return(true);
             }
             if (this.onDuplicatedViaCallback != null)
             {
                 try
                 {
                     int num = this.onDuplicatedViaCallback(duplicateContext.Via);
                     this.connectionBufferSize    = num;
                     this.onDuplicatedViaCallback = null;
                 }
                 catch (Exception exception)
                 {
                     if (DiagnosticUtility.ShouldTraceInformation)
                     {
                         DiagnosticUtility.ExceptionUtility.TraceHandledException(exception, TraceEventType.Information);
                     }
                     string faultCode = null;
                     if (exception is ServiceActivationException)
                     {
                         faultCode = "http://schemas.microsoft.com/ws/2006/05/framing/faults/ServiceActivationFailed";
                     }
                     else if (exception is EndpointNotFoundException)
                     {
                         faultCode = "http://schemas.microsoft.com/ws/2006/05/framing/faults/EndpointNotFound";
                     }
                     IConnection connection = this.BuildConnectionFromData(duplicateContext, 0x2000);
                     if (faultCode != null)
                     {
                         this.SendFault(connection, faultCode);
                         return(false);
                     }
                     connection.Abort();
                     if (!(exception is CommunicationObjectAbortedException))
                     {
                         throw;
                     }
                     return(false);
                 }
             }
         }
     }
     return(true);
 }
            IAsyncResult IConnectionDuplicator.BeginDuplicate(DuplicateContext duplicateContext, AsyncCallback callback, object state)
            {
                IAsyncResult result2;

                try
                {
                    if (!this.HandleOnVia(duplicateContext))
                    {
                        return(new SharedConnectionListener.DuplicateConnectionAsyncResult(callback, state));
                    }
                    SharedConnectionListener.DuplicateConnectionAsyncResult result = new SharedConnectionListener.DuplicateConnectionAsyncResult(this.BuildConnectionFromData(duplicateContext, this.connectionBufferSize), callback, state);
                    this.parent.OnConnectionAvailable(result);
                    result2 = result;
                }
                catch (Exception exception)
                {
                    if (DiagnosticUtility.ShouldTraceError)
                    {
                        DiagnosticUtility.ExceptionUtility.TraceHandledException(exception, TraceEventType.Error);
                    }
                    throw;
                }
                return(result2);
            }
Exemplo n.º 4
0
 private void DuplicateCategoryButton_Click(object sender, EventArgs e)
 {
     DuplicateContext.Show(DuplicateCategoryButton, new Point(1, DuplicateCategoryButton.Height - 1));
 }