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 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 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_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_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()); }
/// <summary> /// Prevents a default instance of the <see cref="GUIClient"/> class from being created. /// </summary> private GUIClient() { clientChannel = new TCPClientChannel(); clientChannel.OnMessageFromServer += ReceiveMessageFromServer; clientChannel.DisconnectedFromServer += OnDisconnectFromServer; isConnected = clientChannel.ConnectToServer(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8000)); CheckConnection?.Invoke(this, isConnected); }
/// <summary> /// Remove handler from observable collection. /// </summary> /// <param name="handler">Handler to remove.</param> public void RemoveHandler(string handler) { string[] args = { handler }; //Create command for closing handler. CommandRecievedEventArgs command = new CommandRecievedEventArgs((int)CommandEnum.CloseHandler, args, ""); //Send command. TCPClientChannel.GetTCPClientChannel().Send(command); //Remove handler from list. Handlers.Remove(handler); }
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); }
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); }
/// <summary> /// Constructor. /// </summary> public SettingsModel() { //Create command. CommandRecievedEventArgs command = new CommandRecievedEventArgs((int)CommandEnum.GetConfigCommand, null, ""); //Add function to event. TCPClientChannel.GetTCPClientChannel().NotifyMessage += UpdateByNotification; //Send command. string settingsMsg = TCPClientChannel.GetTCPClientChannel().SendAndReceive(command); //Update notification. UpdateByNotification(settingsMsg); }
/// <summary> /// Constructor. /// </summary> public MainWindowViewModel() { //Create main window model. this.MainWindowModel = new MainWindowModel(); //Check if there is connection. if (VMIsConnected == IsConnectedEnum.Connected) { //Create constructor for models. this.SettingViewModel = new SettingViewModel(); this.LogViewModel = new LogViewModel(); //Listen to server. TCPClientChannel.GetTCPClientChannel().ListenToServer(); } }
/// <summary> /// Constructor. /// </summary> public LogModel() { LogMessages = new ObservableCollection <MessageRecievedEventArgs>(); // Set new command for creating log. CommandRecievedEventArgs command = new CommandRecievedEventArgs((int)CommandEnum.LogCommand, null, ""); // Adding notify function. TCPClientChannel.GetTCPClientChannel().NotifyMessage += UpdateByNotification; // Send command and recevie back log history. string settingsMsg = TCPClientChannel.GetTCPClientChannel().SendAndReceive(command); // Add log history to log. UpdateByNotification(settingsMsg); }
/// <summary> /// constructor. /// </summary> public ImageServiceDetails() { string message; ConfigurationRecieveEventArgs returnParam; UpdateStudentList(); //Create command to get echo from server. CommandRecievedEventArgs command = new CommandRecievedEventArgs((int)CommandEnum.EchoCommand, null, ""); try { TCPClientChannel.GetTCPClientChannel().DisconnectClientChannel(); //Send echo command. message = TCPClientChannel.GetTCPClientChannel().SendAndReceive(command); //Deserialize return object. returnParam = JsonConvert.DeserializeObject <ConfigurationRecieveEventArgs>(message); //Check if we get ack. if ((ConfigurationEnum)returnParam.ConfigurationID == ConfigurationEnum.Ack) { ImageServiceStatus = "ON"; } } catch (Exception e) { //If there was exception - it means that there is no connection. ImageServiceStatus = "OFF"; } try { command = new CommandRecievedEventArgs((int)CommandEnum.GetConfigCommand, null, ""); //Send GetConfig command. message = TCPClientChannel.GetTCPClientChannel().SendAndReceive(command); //Deserialize return object. returnParam = JsonConvert.DeserializeObject <ConfigurationRecieveEventArgs>(message); OutputDirPath = returnParam.Args[0]; //Create list of extention m_filesExtention = new List <string> { ".jpg", ".png", ".gif", ".bmp" }; UpdateNumberOfPictures(); } catch (Exception) { NumberOfPictures = 0; } }
/// <summary> /// constructor. /// </summary> public LogInfoModel() { LogMessages = new List <Log>(); try { // Set new command for creating log. CommandRecievedEventArgs command = new CommandRecievedEventArgs((int)CommandEnum.LogCommand, null, ""); // Send command and recevie back log history. TCPClientChannel.GetTCPClientChannel().DisconnectClientChannel(); string settingsMsg = TCPClientChannel.GetTCPClientChannel().SendAndReceive(command); // Add log history to log. UpdateByNotification(settingsMsg); //TCPClientChannel.GetTCPClientChannel().ListenToServer(); } catch (Exception) { } }
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); }
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"); }
/// <summary> /// Remove handler from observable collection. /// </summary> /// <param name="handler">Handler to remove.</param> public HandlerRemoval RemoveHandler(string handler) { string[] args = { handler }; //Create command for closing handler. CommandRecievedEventArgs command = new CommandRecievedEventArgs((int)CommandEnum.CloseHandler, args, ""); //Send command. string returnMessage = TCPClientChannel.GetTCPClientChannel().SendAndReceive(command); if (UpdateByNotification(returnMessage)) { Thread.Sleep(200); if (Handlers.Contains(handler)) { return(HandlerRemoval.FailedToRemove); } else { return(HandlerRemoval.Removed); } } return(HandlerRemoval.FailedToRemove); }
/// <summary> /// constructor. /// </summary> public ConfigModel() { //Create command. CommandRecievedEventArgs command = new CommandRecievedEventArgs((int)CommandEnum.GetConfigCommand, null, ""); try { //Add function to event. //TCPClientChannel.GetTCPClientChannel().NotifyMessage += UpdateByNotification; TCPClientChannel.GetTCPClientChannel().DisconnectClientChannel(); //Send command. string settingsMsg = TCPClientChannel.GetTCPClientChannel().SendAndReceive(command); //Update notification. UpdateByNotification(settingsMsg); //TCPClientChannel.GetTCPClientChannel().ListenToServer(); } catch (Exception) { string[] emptyArgs = { " ", " ", " ", " " }; SetSettings(emptyArgs); } }
/// <summary> /// Constructor. /// </summary> public MainWindowModel() { //Create command to get echo from server. CommandRecievedEventArgs command = new CommandRecievedEventArgs((int)CommandEnum.EchoCommand, null, ""); try { //Send echo command. string message = TCPClientChannel.GetTCPClientChannel().SendAndReceive(command); //Deserialize return object. ConfigurationRecieveEventArgs returnParam = JsonConvert.DeserializeObject <ConfigurationRecieveEventArgs>(message); //Check if we get ack. if ((ConfigurationEnum)returnParam.ConfigurationID == ConfigurationEnum.Ack) { IsConnected = IsConnectedEnum.Connected; } } catch (Exception) { //If there was exception - it means that there is no connection. IsConnected = IsConnectedEnum.NotConnected; } }
/// <summary> /// Constructor. /// </summary> public PhotosModel() { string message; ConfigurationRecieveEventArgs returnParam; PhotosList = new List <Photo>(); try { //Initialize command. CommandRecievedEventArgs command = new CommandRecievedEventArgs((int)CommandEnum.GetConfigCommand, null, ""); //Send GetConfig command. message = TCPClientChannel.GetTCPClientChannel().SendAndReceive(command); //Deserialize return object. returnParam = JsonConvert.DeserializeObject <ConfigurationRecieveEventArgs>(message); //Get outputdir. OutputDirPath = returnParam.Args[0]; //Update photos list. UpdatePhotosList(); } catch (Exception) { } }
private WebClient() { client = new TCPClientChannel(); client.OnMessageFromServer += Client_OnMessageFromServer; Connect(); }