// static constructor static ClusterKey() { var defaultTcpStreamSettings = new TcpStreamSettings(); __defaultReceiveBufferSize = defaultTcpStreamSettings.ReceiveBufferSize; __defaultSendBufferSize = defaultTcpStreamSettings.SendBufferSize; }
public void SocketConfigurator_can_be_used_to_set_keepAlive( [Values(false, true)] bool async) { Action <Socket> socketConfigurator = s => s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true); var settings = new TcpStreamSettings(socketConfigurator: socketConfigurator); var subject = new TcpStreamFactory(settings); var endPoint = CoreTestConfiguration.ConnectionString.Hosts[0]; Stream stream; if (async) { stream = subject.CreateStreamAsync(endPoint, CancellationToken.None).GetAwaiter().GetResult(); } else { stream = subject.CreateStream(endPoint, CancellationToken.None); } var socketProperty = typeof(NetworkStream).GetProperty("Socket", BindingFlags.NonPublic | BindingFlags.Instance); var socket = (Socket)socketProperty.GetValue(stream); var keepAlive = (int)socket.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive); keepAlive.Should().NotBe(0); // .NET returns 1 but Mono returns 8 }
private TcpStreamSettings ConfigureTcp(TcpStreamSettings settings, ClusterKey clusterKey) { return(settings.With( connectTimeout: clusterKey.ConnectTimeout, readTimeout: clusterKey.SocketTimeout, receiveBufferSize: clusterKey.ReceiveBufferSize, sendBufferSize: clusterKey.SendBufferSize, writeTimeout: clusterKey.SocketTimeout)); }
public async Task CreateStreamAsync_should_call_the_socketConfigurator() { var socketConfiguratorWasCalled = false; Action <Socket> socketConfigurator = s => socketConfiguratorWasCalled = true; var settings = new TcpStreamSettings(socketConfigurator: socketConfigurator); var subject = new TcpStreamFactory(settings); var endPoint = CoreTestConfiguration.ConnectionString.Hosts[0]; var stream = await subject.CreateStreamAsync(endPoint, CancellationToken.None); socketConfiguratorWasCalled.Should().BeTrue(); }
// static constructor static ClusterKey() { var defaultServerSettings = new ServerSettings(); __defaultHeartbeatInterval = defaultServerSettings.HeartbeatInterval; __defaultHeartbeatTimeout = defaultServerSettings.HeartbeatTimeout; var defaultTcpStreamSettings = new TcpStreamSettings(); __defaultReceiveBufferSize = defaultTcpStreamSettings.ReceiveBufferSize; __defaultSendBufferSize = defaultTcpStreamSettings.SendBufferSize; }
private TcpStreamSettings ConfigureTcp(TcpStreamSettings settings, ClusterKey clusterKey) { if (clusterKey.IPv6) { settings = settings.With(addressFamily: AddressFamily.InterNetworkV6); } return(settings.With( connectTimeout: clusterKey.ConnectTimeout, readTimeout: clusterKey.SocketTimeout, receiveBufferSize: clusterKey.ReceiveBufferSize, sendBufferSize: clusterKey.SendBufferSize, writeTimeout: clusterKey.SocketTimeout)); }
public async Task SocketConfigurator_can_be_used_to_set_keepAlive() { Action <Socket> socketConfigurator = s => s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, true); var settings = new TcpStreamSettings(socketConfigurator: socketConfigurator); var subject = new TcpStreamFactory(settings); var endPoint = CoreTestConfiguration.ConnectionString.Hosts[0]; var stream = await subject.CreateStreamAsync(endPoint, CancellationToken.None); var socketProperty = typeof(NetworkStream).GetProperty("Socket", BindingFlags.NonPublic | BindingFlags.Instance); var socket = (Socket)socketProperty.GetValue(stream); var keepAlive = (int)socket.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive); keepAlive.Should().Be(1); }
public void CreateStream_should_throw_when_connect_timeout_has_expired( [Values(false, true)] bool async) { var settings = new TcpStreamSettings(connectTimeout: TimeSpan.FromMilliseconds(20)); var subject = new TcpStreamFactory(settings); var endPoint = new IPEndPoint(new IPAddress(0x01010101), 12345); // a non-existent host and port Action action; if (async) { action = () => subject.CreateStreamAsync(endPoint, CancellationToken.None).GetAwaiter().GetResult();; } else { action = () => subject.CreateStream(endPoint, CancellationToken.None); } action.ShouldThrow <TimeoutException>(); }
public void CreateStream_should_call_the_socketConfigurator( [Values(false, true)] bool async) { var socketConfiguratorWasCalled = false; Action <Socket> socketConfigurator = s => socketConfiguratorWasCalled = true; var settings = new TcpStreamSettings(socketConfigurator: socketConfigurator); var subject = new TcpStreamFactory(settings); var endPoint = CoreTestConfiguration.ConnectionString.Hosts[0]; if (async) { subject.CreateStreamAsync(endPoint, CancellationToken.None).GetAwaiter().GetResult(); } else { subject.CreateStream(endPoint, CancellationToken.None); } socketConfiguratorWasCalled.Should().BeTrue(); }
public TcpStreamFactory(TcpStreamSettings settings) { _settings = Ensure.IsNotNull(settings, nameof(settings)); }
// constructors public TcpStreamFactory() { _settings = new TcpStreamSettings(); }
public TcpStreamFactory(TcpStreamSettings settings) { _settings = Ensure.IsNotNull(settings, "settings"); }
public StreamFactory(IStreamFactory innerFactory, TcpStreamSettings settings) { _innerFactory = innerFactory ?? throw new ArgumentNullException(nameof(innerFactory)); _settings = settings ?? new TcpStreamSettings(); }