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); }
private void DuplicateCategoryButton_Click(object sender, EventArgs e) { DuplicateContext.Show(DuplicateCategoryButton, new Point(1, DuplicateCategoryButton.Height - 1)); }