public void Disconnect() { if (socket.IsConnected) { socket.Disconnect(); socket.Dispose(); } }
private void CheckForConnection() { if (_client.IsConnected) { return; } _outputFunction.Invoke($"Failed to connect!"); _client.Dispose(); }
public void when_calling_dispose_after_disconnect_then_work() { using (var server = new ReactiveListener(1055)) { var client = new ReactiveClient("127.0.0.1", 1055); server.Start(); client.ConnectAsync().Wait(); client.Disconnect(); client.Dispose(); } }
/// <summary> /// Disposes SyncServerCLient object. /// </summary> public void Dispose() { _isDisposing = true; if (_newBytesSubscription != null) { _newBytesSubscription.Dispose(); } if (_messagesSubscription != null) { _messagesSubscription.Dispose(); } if (_every10seconds != null) { _every10seconds.Dispose(); } foreach (var syncanoConversation in _conversationsByMessageId) { if (!syncanoConversation.Value.HasCompleted) { syncanoConversation.Value.SetError(new SyncanoException("SyncServerClient was disposed")); } } _semaphore.Dispose(); if (_ssl != null) { _ssl.Dispose(); } if (_client != null && _client.IsConnected) { _client.Dispose(); } }
public void when_client_reconnects_then_can_exchange_fixed_length_messages() { var serverReceives = new List<string>(); var clientReceives = new List<string>(); var messageLength = 32; var server = new ReactiveListener(1055); server.Start(); Func<IObservable<byte>, IObservable<string>> parse = socket => from message in socket.Buffer(messageLength) select Encoding.UTF8.GetString(message.ToArray()); Func<string, byte[]> convert = s => { return Encoding.UTF8.GetBytes(new string(' ', messageLength - s.Length) + s); }; server.Connections.Subscribe(socket => { Console.WriteLine("Server socket created: {0}", socket.GetHashCode()); parse(socket.Receiver).Subscribe( x => serverReceives.Add(x.Trim()), e => Console.WriteLine("Server socket error: {0}", e.Message), () => Console.WriteLine("Server socket completed")); socket.SendAsync(convert("Welcome!")).Wait(); }); var client = new ReactiveClient("127.0.0.1", 1055); Console.WriteLine("Client socket created: {0}", client.GetHashCode()); client.ConnectAsync().Wait(); parse(client.Receiver).Subscribe( x => clientReceives.Add(x.Trim()), e => Console.WriteLine("Client socket error: {0}", e.Message), () => Console.WriteLine("Client socket completed")); client.SendAsync(convert("Hello")).Wait(); Thread.Sleep(1200); // Give it time to detect the disconnection from the server. while (client.IsConnected) client.SendAsync(new byte[1]); Assert.Throws<InvalidOperationException>(() => client.SendAsync(convert("World")).Wait()); client.Disconnect(); client.Dispose(); var tcp = new TcpClient("127.0.0.1", 1055); var bytes = convert("World"); tcp.GetStream().Write(bytes, 0, bytes.Length); //client = new TcpClientSocket("127.0.0.1", 1055); //// Reconnect ansd send one more string. //client.ConnectAsync().Wait(); //client.SendAsync(convert("World")).Wait(); Thread.Sleep(1200); //while (serverReceives.Count < 2) // Thread.Sleep(100); // Fails :( Assert.Equal("World", serverReceives.Last()); client.Dispose(); server.Dispose(); }
public void when_client_reconnects_then_can_exchange_fixed_length_messages() { var serverReceives = new List <string>(); var clientReceives = new List <string>(); var messageLength = 32; var server = new ReactiveListener(1055); server.Start(); Func <IObservable <byte>, IObservable <string> > parse = socket => from message in socket.Buffer(messageLength) select Encoding.UTF8.GetString(message.ToArray()); Func <string, byte[]> convert = s => { return(Encoding.UTF8.GetBytes(new string(' ', messageLength - s.Length) + s)); }; server.Connections.Subscribe(socket => { Console.WriteLine("Server socket created: {0}", socket.GetHashCode()); parse(socket.Receiver).Subscribe( x => serverReceives.Add(x.Trim()), e => Console.WriteLine("Server socket error: {0}", e.Message), () => Console.WriteLine("Server socket completed")); socket.SendAsync(convert("Welcome!")).Wait(); }); var client = new ReactiveClient("127.0.0.1", 1055); Console.WriteLine("Client socket created: {0}", client.GetHashCode()); client.ConnectAsync().Wait(); parse(client.Receiver).Subscribe( x => clientReceives.Add(x.Trim()), e => Console.WriteLine("Client socket error: {0}", e.Message), () => Console.WriteLine("Client socket completed")); client.SendAsync(convert("Hello")).Wait(); Thread.Sleep(1200); // Give it time to detect the disconnection from the server. while (client.IsConnected) { client.SendAsync(new byte[1]); } Assert.Throws <InvalidOperationException>(() => client.SendAsync(convert("World")).Wait()); client.Disconnect(); client.Dispose(); var tcp = new TcpClient("127.0.0.1", 1055); var bytes = convert("World"); tcp.GetStream().Write(bytes, 0, bytes.Length); //client = new TcpClientSocket("127.0.0.1", 1055); //// Reconnect ansd send one more string. //client.ConnectAsync().Wait(); //client.SendAsync(convert("World")).Wait(); Thread.Sleep(1200); //while (serverReceives.Count < 2) // Thread.Sleep(100); // Fails :( Assert.Equal("World", serverReceives.Last()); client.Dispose(); server.Dispose(); }
public void when_disposing_then_complete_observables() { var socket = new ReactiveClient("127.0.0.1", 1055); bool receiverCompleted = false; bool senderCompleted = false; socket.Receiver.Subscribe(x => { }, () => receiverCompleted = true); socket.Sender.Subscribe(x => { }, () => senderCompleted = true); socket.Dispose(); Assert.True(receiverCompleted); Assert.True(senderCompleted); }