/// <summary> /// Starts this instance. /// </summary> public void Start() { string msg; new Task(() => { while (true) { try { msg = m_reader.ReadString(); if (msg != null) { DataReceived?.Invoke(this, new DataReceivedEventArgs(msg)); } } catch (Exception e) { MessageCommand mc = new MessageCommand(); mc.CommandID = -1; mc.CommandMsg = e.Message; DataReceived?.Invoke(this, new DataReceivedEventArgs(mc.ToJSON())); Close(); break; } } }, m_cancelToken.Token).Start(); }
/// <summary> /// Froms the json. /// </summary> /// <param name="msg">The MSG.</param> /// <returns></returns> public static MessageCommand FromJSON(string msg) { JObject job = JObject.Parse(msg); MessageCommand cm = new MessageCommand(); cm.CommandID = (int)job["CommandID"]; cm.CommandMsg = (string)job["CommandMsg"]; return(cm); }
/// <summary> /// Closes this instance. /// </summary> public void Close() { MessageCommand mc = new MessageCommand(); mc.CommandID = (int)CommandEnum.CloseServerCommand; SendAll(mc.ToJSON()); foreach (ClientHandler client in clients) { client.Close(); } }
/// <summary> /// Moves to server. /// </summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="DataReceivedEventArgs"/> instance containing the event data.</param> private void MoveToServer(object sender, DataReceivedEventArgs e) { MessageCommand mc = MessageCommand.FromJSON(e.Message); if (mc.CommandID == -1) { IClientHandler c = sender as IClientHandler; clients.Remove(c); } else { DataReceived?.Invoke(sender, e); } }