コード例 #1
0
        /// <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();
        }
コード例 #2
0
        /// <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);
        }
コード例 #3
0
        /// <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();
            }
        }
コード例 #4
0
        /// <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);
            }
        }