public WebSocketDuplexChannelListener(WebSocketTransportBindingElement bindingElement, BindingContext context) : base(context.Binding) { // populate members from binding element this.bufferManager = BufferManager.CreateBufferManager(WebSocketTransportBindingElement.MaxBufferSize * 10, WebSocketTransportBindingElement.MaxBufferSize); //Collection<MessageEncodingBindingElement> messageEncoderBindingElements // = context.BindingParameters.FindAll<MessageEncodingBindingElement>(); //if (messageEncoderBindingElements.Count > 1) //{ // throw new InvalidOperationException("More than one MessageEncodingBindingElement was found in the BindingParameters of the BindingContext"); //} //else if (messageEncoderBindingElements.Count == 1) //{ // this.encoderFactory = messageEncoderBindingElements[0].CreateMessageEncoderFactory(); //} //else //{ this.encoderFactory = new TextMessageEncodingBindingElement(MessageVersion.Soap12WSAddressing10, Encoding.UTF8).CreateMessageEncoderFactory(); //BinaryMessageEncodingBindingElement encodingBindingElement = new BinaryMessageEncodingBindingElement(); //encodingBindingElement.MessageVersion = MessageVersion.Soap12WSAddressing10; //this.encoderFactory = encodingBindingElement.CreateMessageEncoderFactory(); //} this.uri = new Uri(context.ListenUriBaseAddress, context.ListenUriRelativeAddress); }
public WseTcpChannelListener(WseTcpTransportBindingElement bindingElement, BindingContext context) : base(context.Binding) { // populate members from binding element int maxBufferSize = (int)bindingElement.MaxReceivedMessageSize; this.bufferManager = BufferManager.CreateBufferManager(bindingElement.MaxBufferPoolSize, maxBufferSize); Collection <MessageEncodingBindingElement> messageEncoderBindingElements = context.BindingParameters.FindAll <MessageEncodingBindingElement>(); if (messageEncoderBindingElements.Count > 1) { throw new InvalidOperationException("More than one MessageEncodingBindingElement was found in the BindingParameters of the BindingContext"); } else if (messageEncoderBindingElements.Count == 1) { this.encoderFactory = messageEncoderBindingElements[0].CreateMessageEncoderFactory(); } else { this.encoderFactory = new MtomMessageEncodingBindingElement().CreateMessageEncoderFactory(); } // TODO, kennyw, context.ListenUriMode this.uri = new Uri(context.ListenUriBaseAddress, context.ListenUriRelativeAddress); }
private bool hostStarted; // Indicates whether call to ChannelHost.Start() is current //--------------------------------------------------------------------- // Implementation /// <summary> /// Constructor. /// </summary> /// <param name="context">The <see cref="BindingContext" /> holding the information necessary to construct the channel stack.</param> /// <exception cref="InvalidOperationException">Thrown if problems were found with the binding parameters.</exception> internal LillTekChannelListener(BindingContext context) { this.maxAcceptedChannels = ServiceModelHelper.MaxAcceptedChannels; // $todo(jeff.lill): Hardcoded bkTaskInterval = ServiceModelHelper.DefaultBkTaskInterval; // This too this.context = context; this.uri = GetListenUri(context); this.ep = ServiceModelHelper.ToMsgEP(uri); this.onBkTask = new AsyncCallback(OnBkTask); this.sessionMode = false; this.hostStarted = false; // Initialize the message encoder factory from the binding context if // one was specified. Use the binary message encoding factory otherwise. if (context.BindingParameters.FindAll <MessageEncodingBindingElement>().Count > 1) { throw new InvalidOperationException("Multiple MessageEncodingBindingElements were found in the BindingParameters of the BindingContext."); } MessageEncodingBindingElement element = context.BindingParameters.Find <MessageEncodingBindingElement>(); if (element != null) { messageEncoderFactory = element.CreateMessageEncoderFactory(); } else { messageEncoderFactory = new BinaryMessageEncodingBindingElement().CreateMessageEncoderFactory(); } }
public MockChannelFactory(BindingContext context, MessageEncoderFactory encoderFactory) : base(context.Binding) { MessageEncoderFactory = encoderFactory; OnCreateChannelOverride = DefaultOnCreateChannel; OpenAsyncResult = new MockAsyncResult(); CloseAsyncResult = new MockAsyncResult(); // Each overrideable method has a delegate property that // can be set to override it, please a default handler. // CommunicationObject overrides DefaultCloseTimeoutOverride = DefaultDefaultCloseTimeout; DefaultOpenTimeoutOverride = DefaultDefaultOpenTimeout; OnAbortOverride = DefaultOnAbort; OnOpenOverride = DefaultOnOpen; OnCloseOverride = DefaultOnClose; OnBeginOpenOverride = DefaultOnBeginOpen; OnEndOpenOverride = DefaultOnEndOpen; OnBeginCloseOverride = DefaultOnBeginClose; OnEndCloseOverride = DefaultOnEndClose; // All the virtuals OnOpeningOverride = DefaultOnOpening; OnOpenedOverride = DefaultOnOpened; OnClosingOverride = DefaultOnClosing; OnClosedOverride = DefaultOnClosed; OnFaultedOverride = DefaultOnFaulted; }
/// <summary> /// SerialChannel Base /// </summary> /// <param name="bufferManager"> /// Buffer manager created by factory and listener</param> /// <param name="encoderFactory"> /// Referece to encoder factory as returned by encoder element</param> /// <param name="address">Remote address</param> /// <param name="portNumber">COM port number</param> /// <param name="parent">reference to factory/listener</param> /// <param name="maxReceivedMessageSize"> /// Some settings for transport channel</param> public SerialChannelBase(BufferManager bufferManager, MessageEncoderFactory encoderFactory, EndpointAddress address, string portNumber, ChannelManagerBase parent, long maxReceivedMessageSize) : base(parent) { this.address = address; this.bufferManager = bufferManager; this.encoder = encoderFactory.CreateSessionEncoder(); this.maxReceivedMessageSize = maxReceivedMessageSize; this.portNumber = portNumber; // Create port serialPort = new SerialPort(); // Set the appropriate properties. serialPort.PortName = this.portNumber; //TODO: Read these settings from configuration file serialPort.BaudRate = 9600; serialPort.Parity = Parity.None; serialPort.DataBits = 8; serialPort.StopBits = StopBits.One; serialPort.Handshake = Handshake.None; // Set the read/write timeouts serialPort.ReadTimeout = 500; serialPort.WriteTimeout = 500; }
public ServerDuplexSessionChannel(MessageEncoderFactory messageEncoderFactory, BufferManager bufferManager, int maxBufferSize, IAsyncDvcChannel socket, EndpointAddress localAddress, ChannelManagerBase channelManager) : base(messageEncoderFactory, bufferManager, maxBufferSize, AnonymousAddress, localAddress, AnonymousAddress.Uri, channelManager) { base.InitializeSocket(socket); }
public ServiceChannelProxy(Uri address, MessageVersion messageVersion, MessageEncoderFactory encoderFactory) : base(typeof(TChannel)) { this.Address = address; this.MessageVersion = messageVersion; this.MessageEncoderFactory = encoderFactory; this.MessageFormatters = new Dictionary <string, IClientMessageFormatter>(); }
public SsbChannelFactory(SsbBindingElement bindingElement, BindingContext context) : base(context.Binding) { this.connstr = bindingElement.SqlConnectionString; this.bufferManager = BufferManager.CreateBufferManager(bindingElement.MaxBufferPoolSize, int.MaxValue); this.endConversationOnClose = bindingElement.SenderEndsConversationOnClose; this.useEncryption = bindingElement.UseEncryption; this.contract = bindingElement.Contract; this.useActionForSsbMessageType = bindingElement.UseActionForSsbMessageType; this.binding = context.Binding; Collection <MessageEncodingBindingElement> messageEncoderBindingElements = context.BindingParameters.FindAll <MessageEncodingBindingElement>(); if (messageEncoderBindingElements.Count > 1) { throw new InvalidOperationException("More than one MessageEncodingBindingElement was found in the BindingParameters of the BindingContext"); } else if (messageEncoderBindingElements.Count == 1) { this.messageEncoderFactory = messageEncoderBindingElements[0].CreateMessageEncoderFactory(); } else { this.messageEncoderFactory = SsbConstants.DefaultMessageEncoderFactory; } }
public SizedTcpChannelFactory(SizedTcpTransportBindingElement bindingElement, BindingContext context) : base(context.Binding) { // populate members from binding element int maxBufferSize = (int)bindingElement.MaxReceivedMessageSize; this.bufferManager = BufferManager.CreateBufferManager(bindingElement.MaxBufferPoolSize, maxBufferSize); Collection <MessageEncodingBindingElement> messageEncoderBindingElements = context.BindingParameters.FindAll <MessageEncodingBindingElement>(); if (messageEncoderBindingElements.Count > 1) { throw new InvalidOperationException("More than one MessageEncodingBindingElement was found in the BindingParameters of the BindingContext"); } else if (messageEncoderBindingElements.Count == 1) { if (!(messageEncoderBindingElements[0] is ByteStreamMessageEncodingBindingElement)) { throw new InvalidOperationException("This transport must be used with the ByteStreamMessageEncodingBindingElement."); } this.encoderFactory = messageEncoderBindingElements[0].CreateMessageEncoderFactory(); } else { this.encoderFactory = new ByteStreamMessageEncodingBindingElement().CreateMessageEncoderFactory(); } }
public TableRequestChannelFactory(BindingContext context, TableTransportBindingElement element) : base(context.Binding) { this.encoderFactory = context.BindingParameters.Remove <MessageEncodingBindingElement>().CreateMessageEncoderFactory(); this.bufferManager = BufferManager.CreateBufferManager(element.MaxBufferPoolSize, int.MaxValue); this.targetPartitionKey = element.TargetPartitionKey; this.storageAccount = CloudStorageAccount.Parse(element.ConnectionString); }
public ServerTcpDuplexSessionChannel(MessageEncoderFactory messageEncoderFactory, BufferManager bufferManager, Socket socket, EndpointAddress localAddress, ChannelManagerBase channelManager) : base(messageEncoderFactory, bufferManager, WseTcpDuplexSessionChannel.AnonymousAddress, localAddress, WseTcpDuplexSessionChannel.AnonymousAddress.Uri, channelManager) { base.InitializeSocket(socket); }
internal AmqpChannelFactory(AmqpTransportBindingElement bindingElement, BindingContext context) : base(context.Binding) { this.bindingElement = bindingElement; this.bindingContext = context; this.channelProperties = bindingElement.ChannelProperties.Clone(); this.shared = bindingElement.Shared; this.prefetchLimit = bindingElement.PrefetchLimit; this.maxBufferPoolSize = bindingElement.MaxBufferPoolSize; Collection <MessageEncodingBindingElement> messageEncoderBindingElements = context.BindingParameters.FindAll <MessageEncodingBindingElement>(); if (messageEncoderBindingElements.Count > 1) { throw new InvalidOperationException("More than one MessageEncodingBindingElement was found in the BindingParameters of the BindingContext"); } else if (messageEncoderBindingElements.Count == 1) { this.messageEncoderFactory = messageEncoderBindingElements[0].CreateMessageEncoderFactory(); } else { this.messageEncoderFactory = new TextMessageEncodingBindingElement().CreateMessageEncoderFactory(); } openChannels = new List <AmqpTransportChannel>(); }
public SizedTcpDuplexChannelFactory(SizedTcpDuplexTransportBindingElement bindingElement, BindingContext context) : base(context.Binding) { // populate members from binding element int maxBufferSize = (int)bindingElement.MaxReceivedMessageSize; this.bufferManager = BufferManager.CreateBufferManager(bindingElement.MaxBufferPoolSize, maxBufferSize); Collection <MessageEncodingBindingElement> messageEncoderBindingElements = context.BindingParameters.FindAll <MessageEncodingBindingElement>(); if (messageEncoderBindingElements.Count > 1) { throw new InvalidOperationException("More than one MessageEncodingBindingElement was found in the BindingParameters of the BindingContext"); } else if (messageEncoderBindingElements.Count == 1) { if (messageEncoderBindingElements[0].MessageVersion != MessageVersion.Soap12WSAddressing10) { throw new InvalidOperationException("This transport must be used with the an encoding with MessageVersion.Soap12WSAddressing10."); } this.encoderFactory = messageEncoderBindingElements[0].CreateMessageEncoderFactory(); } else { this.encoderFactory = new TextMessageEncodingBindingElement(MessageVersion.Soap12WSAddressing10, Encoding.UTF8).CreateMessageEncoderFactory(); } }
public SolaceChannelListener(SolaceTransportBindingElement bindingElement, BindingContext context) : base(context.Binding) { // populate members from binding element int maxBufferSize = (int)bindingElement.MaxReceivedMessageSize; bufferManager = BufferManager.CreateBufferManager(bindingElement.MaxBufferPoolSize, maxBufferSize); enpointCache = bindingElement.EndpointCache; converters = context.BindingParameters.FindAll <IMessageConverter>(); var messageEncoderBindingElements = context.BindingParameters.FindAll <MessageEncodingBindingElement>(); if (messageEncoderBindingElements.Count > 1) { throw new InvalidOperationException("More than one MessageEncodingBindingElement was found in the BindingParameters of the BindingContext"); } else if (messageEncoderBindingElements.Count == 1) { if (!(messageEncoderBindingElements[0] is ByteStreamMessageEncodingBindingElement)) { throw new InvalidOperationException("This transport must be used with the ByteStreamMessageEncodingBindingElement."); } encoderFactory = messageEncoderBindingElements[0].CreateMessageEncoderFactory(); } else { encoderFactory = new ByteStreamMessageEncodingBindingElement().CreateMessageEncoderFactory(); } uri = new Uri(context.ListenUriBaseAddress, context.ListenUriRelativeAddress); }
public WebSocketDuplexChannelFactory(WebSocketTransportBindingElement bindingElement, BindingContext context) : base(context.Binding) { // populate members from binding element this.bufferManager = BufferManager.CreateBufferManager(WebSocketTransportBindingElement.MaxBufferSize * 10, WebSocketTransportBindingElement.MaxBufferSize); //Collection<MessageEncodingBindingElement> messageEncoderBindingElements // = context.BindingParameters.FindAll<MessageEncodingBindingElement>(); //if (messageEncoderBindingElements.Count > 1) //{ // throw new InvalidOperationException("More than one MessageEncodingBindingElement was found in the BindingParameters of the BindingContext"); //} //else if (messageEncoderBindingElements.Count == 1) //{ // this.encoderFactory = messageEncoderBindingElements[0].CreateMessageEncoderFactory(); //} //else //{ this.encoderFactory = new TextMessageEncodingBindingElement(MessageVersion.Soap12WSAddressing10, Encoding.UTF8).CreateMessageEncoderFactory(); //BinaryMessageEncodingBindingElement encodingBindingElement = new BinaryMessageEncodingBindingElement(); //encodingBindingElement.MessageVersion = MessageVersion.Soap12WSAddressing10; //this.encoderFactory = encodingBindingElement.CreateMessageEncoderFactory(); //} this.useProxy = bindingElement.UseProxy; this.proxyUri = string.IsNullOrEmpty(bindingElement.ProxyUri) ? null : new Uri(bindingElement.ProxyUri); this.proxyAuthUserName = bindingElement.ProxyAuthUserName; this.proxyAuthPassword = bindingElement.ProxyAuthPassword; }
private static HandshakeDelegate BuildHandshakeDelegateForDispatcher(IServiceDispatcher dispatcher) { var be = dispatcher.Binding.CreateBindingElements(); var mebe = be.Find <MessageEncodingBindingElement>(); MessageEncoderFactory mefact = mebe.CreateMessageEncoderFactory(); var tbe = be.Find <TransportBindingElement>(); int maxReceivedMessageSize = (int)Math.Min(tbe.MaxReceivedMessageSize, int.MaxValue); var bufferManager = BufferManager.CreateBufferManager(tbe.MaxBufferPoolSize, maxReceivedMessageSize); var upgradeBindingElements = (from element in be where element is StreamUpgradeBindingElement select element).Cast <StreamUpgradeBindingElement>().ToList(); StreamUpgradeProvider streamUpgradeProvider = null; ISecurityCapabilities securityCapabilities = null; if (upgradeBindingElements.Count > 1) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException(SR.MultipleStreamUpgradeProvidersInParameters)); } // TODO: Limit NamedPipes to prevent it using SslStreamSecurityUpgradeProvider else if ((upgradeBindingElements.Count == 1) /*&& this.SupportsUpgrade(upgradeBindingElements[0])*/) { var bindingContext = new BindingContext(new CustomBinding(dispatcher.Binding), new BindingParameterCollection()); streamUpgradeProvider = upgradeBindingElements[0].BuildServerStreamUpgradeProvider(bindingContext); streamUpgradeProvider.OpenAsync().GetAwaiter().GetResult(); securityCapabilities = upgradeBindingElements[0].GetProperty <ISecurityCapabilities>(bindingContext); } return((connection) => { connection.MessageEncoderFactory = mefact; connection.StreamUpgradeAcceptor = streamUpgradeProvider?.CreateUpgradeAcceptor(); connection.SecurityCapabilities = securityCapabilities; connection.ServiceDispatcher = dispatcher; connection.BufferManager = bufferManager; return Task.CompletedTask; }); }
public MockChannelBase(ChannelManagerBase manager, MessageEncoderFactory encoderFactory, EndpointAddress address) : base(manager) { _address = address; _manager = manager; _encoder = encoderFactory.CreateSessionEncoder(); OpenAsyncResult = new MockAsyncResult(); CloseAsyncResult = new MockAsyncResult(); GetEndpointPropertyOverride = DefaultGetEndpointProperty; // CommunicationObject overrides DefaultCloseTimeoutOverride = DefaultDefaultCloseTimeout; DefaultOpenTimeoutOverride = DefaultDefaultOpenTimeout; OnAbortOverride = DefaultOnAbort; OnOpenOverride = DefaultOnOpen; OnCloseOverride = DefaultOnClose; OnBeginOpenOverride = DefaultOnBeginOpen; OnEndOpenOverride = DefaultOnEndOpen; OnBeginCloseOverride = DefaultOnBeginClose; OnEndCloseOverride = DefaultOnEndClose; // All the virtuals OnOpeningOverride = DefaultOnOpening; OnOpenedOverride = DefaultOnOpened; OnClosingOverride = DefaultOnClosing; OnClosedOverride = DefaultOnClosed; OnFaultedOverride = DefaultOnFaulted; }
internal AmqpChannelListener(AmqpTransportBindingElement bindingElement, BindingContext context) : base(context.Binding) { this.bindingElement = bindingElement; this.channelProperties = bindingElement.ChannelProperties.Clone(); this.bindingContext = context; this.shared = bindingElement.Shared; this.prefetchLimit = bindingElement.PrefetchLimit; this.maxBufferPoolSize = bindingElement.MaxBufferPoolSize; // TODO: review this. Should be unique hostname based this.uri = context.ListenUriBaseAddress; this.asyncOnAcceptCaller = new AsyncOnAcceptCaller(this.OnAcceptChannel); this.acceptWaitEvent = new ManualResetEvent(false); Collection <MessageEncodingBindingElement> messageEncoderBindingElements = context.BindingParameters.FindAll <MessageEncodingBindingElement>(); if (messageEncoderBindingElements.Count > 1) { throw new InvalidOperationException("More than one MessageEncodingBindingElement was found in the BindingParameters of the BindingContext"); } else if (messageEncoderBindingElements.Count == 1) { this.messageEncoderFactory = messageEncoderBindingElements[0].CreateMessageEncoderFactory(); } else { this.messageEncoderFactory = new TextMessageEncodingBindingElement().CreateMessageEncoderFactory(); } }
private bool hostStarted; // Indicates whether call to ChannelHost.Start() is current /// <summary> /// Constructor. /// </summary> /// <param name="context">The <see cref="BindingContext" />.</param> /// <exception cref="InvalidOperationException">Thrown if problems were found with the binding parameters.</exception> public LillTekChannelFactory(BindingContext context) : base() { this.channels = new Dictionary <string, TInternal>(); this.hostStarted = false; // Initialize the message encoder factory from the binding context if // one was specified. Use the binary message encoding factory otherwise. if (context.BindingParameters.FindAll <MessageEncodingBindingElement>().Count > 1) { throw new InvalidOperationException("Multiple MessageEncodingBindingElements were found in the BindingParameters of the BindingContext."); } MessageEncodingBindingElement element = context.BindingParameters.Find <MessageEncodingBindingElement>(); if (element != null) { messageEncoderFactory = element.CreateMessageEncoderFactory(); } else { messageEncoderFactory = new BinaryMessageEncodingBindingElement().CreateMessageEncoderFactory(); } }
public WcfHandler(Type serviceType, MessageEncoderFactory messageEncoderFactory) { ServiceType = ServiceType; MessageEncoderFactory = messageEncoderFactory; Methods = new Dictionary <string, MethodInfo>(); OperationInvokers = new Dictionary <string, IOperationInvoker>(); DispatchMessageFormatters = new Dictionary <string, IDispatchMessageFormatter>(); }
//The WcfCompress encoder wraps an inner encoder //We require a factory to be passed in that will create this inner encoder public WcfCompressMessageEncoderFactory(MessageEncoderFactory messageEncoderFactory, CompressionFormat compressionFormat) { if (messageEncoderFactory == null) { throw new ArgumentNullException("messageEncoderFactory", "A valid message encoder factory must be passed to the WcfCompressEncoder"); } encoder = new WcfCompressMessageEncoder(messageEncoderFactory.Encoder, compressionFormat); }
public ChannelProxy(Uri uri, MessageVersion mv, MessageEncoderFactory encoder) : base(typeof(TChannel)) { this.Address = uri; this.MessageEncoderFactory = encoder; this.MessageVersion = mv; this.MessageFormatter = new Dictionary <string, IClientMessageFormatter>(); }
public BankConnectMessageEncoderFactory(MessageEncoderFactory messageEncoderFactory) { if (messageEncoderFactory == null) { throw new ArgumentNullException(nameof(messageEncoderFactory)); } encoder = new BankConnectMessageEncoder(messageEncoderFactory.Encoder); }
//The GZip encoder wraps an inner encoder //We require a factory to be passed in that will create this inner encoder public GZipMessageEncoderFactory(MessageEncoderFactory messageEncoderFactory) { if (messageEncoderFactory == null) { throw new ArgumentNullException("messageEncoderFactory", "A valid message encoder factory must be passed to the GZipEncoder"); } encoder = new GZipMessageEncoder(messageEncoderFactory.Encoder); }
public void CreateMessageEncoderFactory_Returns_An_HttpMessageEncoderFactory() { HttpMessageEncodingBindingElement encoding = new HttpMessageEncodingBindingElement(); MessageEncoderFactory encoderFactory = encoding.CreateMessageEncoderFactory(); Assert.IsNotNull(encoderFactory, "HttpMessageEncodingBindingElement.CreateMessageEncoderFactory should not have returned null."); Assert.IsInstanceOfType(encoderFactory, typeof(HttpMessageEncoderFactory), "HttpMessageEncodingBindingElement.CreateMessageEncoderFactory should have returned an instance of a HttpMessageEncoderFactory."); }
/// <summary> /// ServicesMessageEncoderFactory Class /// </summary> public ServicesMessageEncoderFactory(MessageEncoderFactory messageEncoderFactory) { if (messageEncoderFactory == null) { throw new ArgumentNullException("messageEncoderFactory", "A valid message encoder factory must be passed to the Replay Encoder"); } encoder = new SercicesMessageEncoder(messageEncoderFactory.Encoder); }
internal MsmqInputChannelListenerBase(MsmqBindingElementBase bindingElement, BindingContext context, MsmqReceiveParameters receiveParameters, MessageEncoderFactory encoderFactory) : base(bindingElement, context, receiveParameters, encoderFactory) { this.acceptor = new InputQueueChannelAcceptor <IInputChannel>(this); }
public LoggingMessageEncoderFactory(MessageEncoderFactory messageEncoderFactory) { if (messageEncoderFactory == null) { throw new ArgumentNullException("messageEncoderFactory"); } this.loggingEncoder = new LoggingMessageEncoder(messageEncoderFactory.Encoder); }
public MockRequestChannel(ChannelManagerBase manager, MessageEncoderFactory encoderFactory, EndpointAddress address, Uri via) : base(manager, encoderFactory, address) { this._via = via; RequestOverride = DefaultRequest; BeginRequestOverride = DefaultBeginRequest; EndRequestOverride = DefaultEndRequest; }
/// <summary> /// Constructor called by factory. /// </summary> /// <param name="bufferManager"> /// Buffer manager used to send receive messages</param> /// <param name="encoderFactory"> /// Encoder factory as received by parent</param> /// <param name="address">Remote address</param> /// <param name="parent">Reference to parent</param> /// <param name="via">via in case of routing</param> public SerialRequestChannel(BufferManager bufferManager, MessageEncoderFactory encoderFactory, EndpointAddress address, SerialRequestChannelFactory parent, Uri via) : base(bufferManager, encoderFactory, address, parent.PortNumber, parent, parent.MaxReceivedMessageSize) { this.via = via; this.writeLock = new object(); }