public Message Parse(string msg) { Message message = null; try { XmlDocument doc = new XmlDocument(); doc.LoadXml(msg); string sender = this.GetSender(doc); string command = this.GetCommand(doc); List<string> receivers = this.GetReceivers(doc); Dictionary<string, string> parameters = this.GetParameters(doc); message = new Message(msg, sender, command, receivers, parameters); } catch { } return message; }
private void ReturnClients(Message message) { MessageGenerator generator = new MessageGenerator("CLIENTS", this.name); generator.AddReceiver(message.Sender); foreach (DataRow row in this.clientSet.Tables["Client"].Rows) { generator.AddParameter("Client", row["Name"].ToString()); } this.Send(message.Sender, generator.GetMessage()); }
private void RegisterClient(Message message) { DataTable table = this.clientSet.Tables["Client"]; try { Dictionary<string, string> parameters = message.Parameters; string sender = message.Sender; string clientIP = parameters["IP"]; int clientPort = Convert.ToInt32(parameters["Port"]); if ((message.Sender != null) || (message.Sender.Trim().Length != 0)) { DataRow[] rowArray = table.Select(string.Format("Name='{0}'", message.Sender)); if (rowArray.Length == 0) { DataRow row = table.NewRow(); row["Name"] = sender; row["IP"] = clientIP; row["Port"] = clientPort; row["Date"] = DateTime.Now.ToShortDateString(); table.Rows.Add(row); } else { rowArray[0]["Name"] = sender; rowArray[0]["IP"] = clientIP; rowArray[0]["Port"] = clientPort; rowArray[0]["Date"] = DateTime.Now.ToShortDateString(); } this.SaveTable(); if (this.OnClientConnect != null) { this.OnClientConnect(this, new ServerEventArgs(sender, clientIP, clientPort)); } } } catch (Exception) { } }
private void ProcessMessage(Message message) { switch (message.Command) { case "REG": this.RegisterClient(message); return; case "UNREG": this.UnregisterClient(message.Sender); return; case "CLIENTS": this.ReturnClients(message); return; } if (this.OnReceive != null) { this.OnReceive(this, message); } }