Пример #1
0
 public void Disconnect()
 {
     if (socket.IsConnected)
     {
         socket.Disconnect();
         socket.Dispose();
     }
 }
Пример #2
0
        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();
            }
        }
Пример #4
0
        /// <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();
            }
        }
Пример #5
0
        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();
        }
Пример #6
0
        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);
        }