public void TCPServerWith2Clients_Disconnect1Client_1ClientDisconnected()
        {
            //Arrange
            Client disconnectedClient = null;

            tcpserver = new TCPServerChannel("127.0.0.1", 0);
            ObjectTransport serverObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(tcpserver);

            serverObjectTransport.OnClientDisconnect(c => disconnectedClient = c);

            tcpclient = new TCPClientChannel("127.0.0.1", tcpserver.LocalPort);
            ObjectTransport clientObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(tcpclient);

            tcpclient2 = new TCPClientChannel("127.0.0.1", tcpserver.LocalPort);
            ObjectTransport clientObjectTransport2 = TestObjectTransportFactory.CreateNewObjectTransport(tcpclient2);

            Utilities.WaitFor(() => serverObjectTransport.GetConnectedClients().Count() == 2);

            //Act

            var FirstClient = serverObjectTransport.GetConnectedClients().First();

            serverObjectTransport.DisconnectClient(FirstClient);

            Utilities.WaitFor(ref disconnectedClient);

            //Assert
            Client LastClient = serverObjectTransport.GetConnectedClients().First();

            Assert.AreEqual(1, serverObjectTransport.GetConnectedClients().Count());
            Assert.AreNotEqual(FirstClient.Port, LastClient.Port);
        }
        public void TCPServerWith2Clients_Disconnect2Client_AllClientsDisconnected()
        {
            //Arrange
            List <Client> disconnectedClients = new List <Client>();

            tcpserver = new TCPServerChannel("127.0.0.1", 0);
            ObjectTransport serverObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(tcpserver);

            serverObjectTransport.OnClientDisconnect(c => disconnectedClients.Add(c));

            tcpclient = new TCPClientChannel("127.0.0.1", tcpserver.LocalPort);
            ObjectTransport clientObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(tcpclient);

            tcpclient2 = new TCPClientChannel("127.0.0.1", tcpserver.LocalPort);
            ObjectTransport clientObjectTransport2 = TestObjectTransportFactory.CreateNewObjectTransport(tcpclient2);

            Utilities.WaitFor(() => serverObjectTransport.GetConnectedClients().Count() == 2);

            //Act

            var allClients = serverObjectTransport.GetConnectedClients().ToArray();

            serverObjectTransport.DisconnectClient(allClients);

            Utilities.WaitFor(() => disconnectedClients.Count == 2);

            //Assert
            Assert.AreEqual(0, serverObjectTransport.GetConnectedClients().Count());
            Assert.AreEqual(2, disconnectedClients.Count());
        }
        public void TCPClient_ClientDisconnectsServer_ServerOnClientDisconnectCalled()
        {
            //Arrange
            Client disconnectedClient = null;
            Client connectedServer    = null;

            tcpserver = new TCPServerChannel("127.0.0.1", 0);
            ObjectTransport serverObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(tcpserver);

            serverObjectTransport.OnClientDisconnect(c => disconnectedClient = c);

            tcpclient = new TCPClientChannel("127.0.0.1", tcpserver.LocalPort);
            ObjectTransport clientObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(tcpclient);

            clientObjectTransport.OnClientConnect(c => connectedServer = c);

            tcpclient2 = new TCPClientChannel("127.0.0.1", tcpserver.LocalPort);
            ObjectTransport clientObjectTransport2 = TestObjectTransportFactory.CreateNewObjectTransport(tcpclient2);

            Utilities.WaitFor(() => serverObjectTransport.GetConnectedClients().Count() == 2);

            //Act

            //disconnect the server from the client
            clientObjectTransport.DisconnectClient();

            Utilities.WaitFor(ref disconnectedClient);

            //Assert
            //Ensure that the client record was disconnect from the server
            Assert.AreEqual(1, serverObjectTransport.GetConnectedClients().Count());

            //Esnure that the client who disconnected from the server was the one that we called disconect
            Assert.AreEqual(disconnectedClient.Port, tcpclient.LocalPort);
        }
        public void TCPServer_ClientDisconnects_CallbackCalled()
        {
            //Arrange
            Client clientConnect    = null;
            Client clientDisconnect = null;

            tcpserver = new TCPServerChannel("127.0.0.1", 0);
            ObjectTransport serverObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(tcpserver);

            serverObjectTransport.OnClientConnect(c => clientConnect       = c);
            serverObjectTransport.OnClientDisconnect(c => clientDisconnect = c);

            tcpclient = new TCPClientChannel("127.0.0.1", tcpserver.LocalPort);
            ObjectTransport clientObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(tcpclient);

            Utilities.WaitFor(ref clientConnect);
            Utilities.WaitFor(() => clientObjectTransport.GetConnectedClients().Count() == 1);
            //Act

            clientObjectTransport.Stop();

            Utilities.WaitFor(ref clientDisconnect);
            Utilities.Wait();
            //Assert
            Assert.AreEqual(clientConnect.IPAddress, "127.0.0.1");
            Assert.AreEqual(clientDisconnect.IPAddress, "127.0.0.1");
            Assert.AreEqual(clientDisconnect, clientConnect);
            Assert.AreEqual(0, clientObjectTransport.GetConnectedClients().Count());
            Assert.AreEqual(0, serverObjectTransport.GetConnectedClients().Count());
        }
Exemple #5
0
        public void TCPClient_SendUnreliably_ExceptionThrown()
        {
            //Arrange
            Client client           = null;
            Client clientDisconnect = null;

            server = new TCPServerChannel("127.0.0.1", 0);
            ObjectTransport serverObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(server);

            tcpclient = new TCPClientChannel("127.0.0.1", server.LocalPort);
            ObjectTransport clientObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(tcpclient);

            clientObjectTransport.OnClientDisconnect(c => clientDisconnect = c);
            client = clientObjectTransport.GetConnectedClients().First();

            Utilities.WaitFor(ref client);
            Utilities.WaitFor(() => serverObjectTransport.GetConnectedClients().Count() == 1);

            var message = new MockObjectMessage();

            //Act

            clientObjectTransport.Send(message)
            .Unreliable()
            .Execute();
        }
        public void TCPServer_WhenClientConnects_CallbackFunctionCalled()
        {
            bool connected = false;

            tcpserver = new TCPServerChannel("127.0.0.1", 0);
            tcpserver.OnClientConnect(c => connected = true);

            tcpclient = new TCPClientChannel("127.0.0.1", tcpserver.LocalPort);

            Utilities.WaitFor(ref connected);
            Assert.IsTrue(connected);
        }
        /// <summary>
        /// Image service constructor.
        /// </summary>
        /// <param name="args"></param>
        public ImageService(string[] args)
        {
            try
            {
                InitializeComponent();
                //Get settings from app.config.
                ServiceSettings serviceSettings = ServiceSettings.GetServiceSettings();
                //Set service settings.
                string eventSourceName = serviceSettings.SourceName;
                //Set log name.
                string logName = serviceSettings.LogName;
                if (args.Count() > 0)
                {
                    eventSourceName = args[0];
                }
                if (args.Count() > 1)
                {
                    logName = args[1];
                }
                //Create event logger.
                eventLog1 = new System.Diagnostics.EventLog();
                if (!System.Diagnostics.EventLog.SourceExists(eventSourceName))
                {
                    System.Diagnostics.EventLog.CreateEventSource(eventSourceName, logName);
                }
                eventLog1.Source = eventSourceName;
                eventLog1.Log    = logName;

                //Create image service modal.
                m_imageServiceModal = new ImageServiceModal(serviceSettings.OutputDir, serviceSettings.ThumbnailSize);
                //Create logging service.
                m_loggingService = new LoggingService();
                m_loggingService.MessageRecieved += WriteToLog;
                //Create controller.
                m_controller = new ImageController(m_imageServiceModal);
                //Create image server.
                m_imageServer = new ImageServer(m_controller, m_loggingService, serviceSettings.Handlers);
                m_loggingService.Log("Image service created", MessageTypeEnum.INFO);

                HandleAndroidClient handleAndroidRequest = new HandleAndroidClient(m_loggingService, m_imageServiceModal, serviceSettings.Handlers[0]);
                m_tcpServer = new TCPServerChannel(1102, m_loggingService, handleAndroidRequest);

                //handleGuiRequest.NotifyClients += m_tcpServer.NotifyClientsOnChange;
                m_loggingService.NotifyClients += m_tcpServer.NotifyClientsOnChange;

                m_tcpServer.Start();
            }
            catch (Exception e)
            {
                m_loggingService.Log("Failed creating image service, exception: " + e.Message, MessageTypeEnum.FAIL);
            }
        }
Exemple #8
0
        public static Tuple <ObjectTransport, ObjectTransport> GetConnectObjectTransports()
        {
            server = new TCPServerChannel("127.0.0.1", 0);

            ObjectTransport serverObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(server);

            tcpclient = new TCPClientChannel("127.0.0.1", server.LocalPort);
            ObjectTransport client = TestObjectTransportFactory.CreateNewObjectTransport(tcpclient);

            Tuple <ObjectTransport, ObjectTransport> result = new Tuple <ObjectTransport, ObjectTransport>(serverObjectTransport, client);

            return(result);
        }
Exemple #9
0
 public void Start()
 {
     _server = NetworkConnectivity.CreateTCPServerChannel("server");
     _server.ChannelClientConnected    += new ServerConnectionEventHandler(_server_ChannelClientConnected);
     _server.ChannelClientDisconnected += new ServerConnectionEventHandler(_server_ChannelClientDisconnected);
     //_server.ChannelConnected +=
     //_server.ChannelDisconnected +=
     _server.DataReceived += new ServerDataEventHandler(_server_DataReceived);
     //_server.DataSent +=
     //_server.ExceptionOccurred +=
     _server.ExceptionOccurred += new System.IO.ErrorEventHandler(_server_ExceptionOccurred);
     _server.Connect(_serviceport);
 }
Exemple #10
0
 public void Start()
 {
     server = NetworkConnectivity.CreateTCPServerChannel("server");
     server.ChannelClientConnected += server_ChannelClientConnected;
     server.ChannelClientDisconnected += server_ChannelClientDisconnected;
     //_server.ChannelConnected += 
     //_server.ChannelDisconnected += 
     server.DataReceived += server_DataReceived;
     //_server.DataSent += 
     //_server.ExceptionOccurred += 
     server.ExceptionOccurred += server_ExceptionOccurred;
     server.Connect(servicePort);
 }
Exemple #11
0
 public void Start()
 {
     server = NetworkConnectivity.CreateTCPServerChannel("server");
     server.ChannelClientConnected    += server_ChannelClientConnected;
     server.ChannelClientDisconnected += server_ChannelClientDisconnected;
     //_server.ChannelConnected +=
     //_server.ChannelDisconnected +=
     server.DataReceived += server_DataReceived;
     //_server.DataSent +=
     //_server.ExceptionOccurred +=
     server.ExceptionOccurred += server_ExceptionOccurred;
     server.Connect(servicePort);
 }
 public void Start()
 {
     server = NetworkConnectivity.CreateTCPServerChannel("server");
     server.ChannelClientConnected += new ServerConnectionEventHandler(server_ChannelClientConnected);
     server.ChannelClientDisconnected += new ServerConnectionEventHandler(server_ChannelClientDisconnected);
     //_server.ChannelConnected +=
     //_server.ChannelDisconnected +=
     server.DataReceived += new ServerDataEventHandler(server_DataReceived);
     //_server.DataSent +=
     //_server.ExceptionOccurred +=
     server.ExceptionOccurred += new System.IO.ErrorEventHandler(server_ExceptionOccurred);
     server.Connect(servicePort);
 }
Exemple #13
0
        public void TCPNetwork_SendAndReplyMessage_ResponseIsCalled()
        {
            //Arrange
            Client client           = null;
            Client clientDisconnect = null;

            server = new TCPServerChannel("127.0.0.1", 0);
            ObjectTransport serverObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(server);

            tcpclient = new TCPClientChannel("127.0.0.1", server.Port);
            ObjectTransport clientObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(tcpclient);

            clientObjectTransport.OnClientDisconnect(c => clientDisconnect = c);
            client = clientObjectTransport.GetConnectedClients().First();

            Utilities.WaitFor(ref client);
            Utilities.WaitFor(() => serverObjectTransport.GetConnectedClients().Count() == 1);

            //Act
            serverObjectTransport.Receive <MockObjectMessage>()
            .Reply((o) => { return(o); })
            .Execute();


            var mockObject = new MockObjectMessage()
            {
                Property1_string = "Mock Object"
            };
            MockObjectMessage responseObject = null;

            clientObjectTransport.Send(mockObject)
            .Response <MockObjectMessage>((r) => { responseObject = r; })
            .Execute();

            Utilities.WaitFor(ref responseObject);

            //Assert
            Assert.AreEqual(responseObject.Property1_string, "Mock Object");
        }
        public void TCPServer_SendObject_CorrectObjectSent()
        {
            //Arrange
            MockObjectMessage receivedObject = null;

            tcpserver = new TCPServerChannel("127.0.0.1", 0);

            Client client = null;

            ObjectTransport serverObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(tcpserver);

            serverObjectTransport.OnClientConnect(c => client = c);

            tcpclient = new TCPClientChannel("127.0.0.1", tcpserver.LocalPort);
            ObjectTransport clientObjectTransport = TestObjectTransportFactory.CreateNewObjectTransport(tcpclient);

            Utilities.WaitFor(ref client);

            //Act

            clientObjectTransport.Receive <MockObjectMessage>(o =>
                                                              receivedObject = o
                                                              ).Execute();

            serverObjectTransport.Send(new MockObjectMessage()
            {
                Property1_string  = "hello world!",
                Property2_int     = 123,
                Property3_decimal = 12.3M
            })
            .To(client)
            .Execute();

            Utilities.WaitFor(ref receivedObject);
            //Assert
            Assert.AreEqual("hello world!", receivedObject.Property1_string);
            Assert.AreEqual(123, receivedObject.Property2_int);
            Assert.AreEqual(12.3M, receivedObject.Property3_decimal);
        }