private void Send(ClientInfo client, ContainerMessage message) { try { RaiseNewTextEvent($"Sending message [{message.Format()}]"); string s = ContainerMessage.Serialize(message); byte[] buffer = ASCIIEncoding.Unicode.GetBytes(s); var m = new BasicMessage(_serverGuid, buffer); client.TcpSocketClientHandler.SendAsync(m); } catch (SocketException se) { // "An existing connection was forcibly closed by the remote host" RaiseNewTextEvent($"Container {_containerNames[client]} is disconnected."); _containerNames.Remove(client); client.TcpSocketClientHandler.Close(); RaiseNewTextEvent($"Exception in Server.Send: {se.Message}."); } catch (Exception ex) { RaiseNewTextEvent($"Exception in Server.Send: {ex.Message}."); } }
private void ProcessMessage(ContainerMessage message) { RaiseNewTextEvent($"Message received [{message.Format()}]"); if (message.Sender == "Server" && message.Info == "Inform Invalid Name") { RaiseNewTextEvent("Container name refused by server.\r\n"); } else if (message.Sender == "Server" && message.Info == "Inform Containers") { string[] toks = message.Content.Split(); _allContainers.Clear(); foreach (string t in toks) { if (t != "" && t != " ") { _allContainers.Add(t); } } } else if (message.Info == "Request Move Agent") { AgentHasArrived(message.Content); } else if (message.Info == "Send LD Message") { LDMessageReceived(message.Content); } }
private void Send(ContainerMessage message) { try { RaiseNewTextEvent($"Sending message [{message.Format()}]"); string s = ContainerMessage.Serialize(message); byte[] buffer = ASCIIEncoding.Unicode.GetBytes(s); var serializedMessage = new BasicMessage(_clientGuid, buffer); _client.SendAsync(serializedMessage); } catch (Exception ex) { RaiseNewTextEvent(ex.Message); } }
private void ProcessMessage(ContainerMessage message, ClientInfo sender) { if (message.Sender == "Server") { return; } RaiseNewTextEvent($"Message received [{message.Format()}]"); if (message.Receiver != "Server" && message.Info == "Request Move Agent") { RaiseNewTextEvent($"Moving agent from {message.Sender} to {message.Receiver}"); } if (message.Receiver == "Server" && message.Info == "Request Register") { bool exists = false; foreach (string s in _containerNames.Values) { if (s == message.Sender) { exists = true; break; } } if (exists) { var m = new ContainerMessage("Server", message.Sender, "Inform Invalid Name", ""); Send(sender, m); sender.TcpSocketClientHandler.Close(); } else { _containerNames[sender] = message.Sender; DisplayContainerList(); } } else if (message.Info == "Request Move Agent" || message.Info == "Send LD Message") { foreach (string s in _containerNames.Values) { if (s == message.Sender) { ClientInfo[] clientList = _server.GetClientList(); if (clientList.Length == 0) { return; } foreach (ClientInfo ci in clientList) { if (_containerNames.ContainsKey(ci) && _containerNames[ci] == message.Receiver) { Send(ci, message); } } } } } }