Пример #1
0
        public void HandleMessage(string messageFromServer)
        {
            var messages = messageFromServer.Split(new[] { "<<EOFS>>" }, StringSplitOptions.RemoveEmptyEntries);

            foreach (var message in messages)
            {
                if (message.Length < 7)
                {
                    continue;
                }
                XDocument xDoc = null;
                try
                {
                    xDoc = XDocument.Parse(message);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }

                var rootName = xDoc?.Root?.Name.ToString();
                switch (rootName)
                {
                case "stroke":
                    OnStrokeRecieved?.Invoke(XmlConverter.GetStroke(xDoc));
                    break;

                case "message":
                    OnMessageRecieved?.Invoke(XmlConverter.GetMessage(xDoc));
                    break;

                case "new_user":
                    OnUserConnected?.Invoke(XmlConverter.GetUser(xDoc));
                    break;

                case "user_logout":
                    OnUserLogout?.Invoke(XmlConverter.GetUser(xDoc));
                    break;

                case "users_list":
                    OnUsersListReceived?.Invoke(XmlConverter.GetUsers(xDoc));
                    break;

                case "login_response":
                    var user = XmlConverter.GetAuthResult(xDoc);
                    if (string.IsNullOrEmpty(user))
                    {
                        OnLoginFailure?.Invoke();
                    }
                    else
                    {
                        OnLoginComplete?.Invoke(user);
                    }
                    break;

                default:
                    break;
                }
            }
        }
Пример #2
0
 // --- PRIVATE METHODS (FROM EVENTS) ---------------------------------------------------- //
 private void linkLabelLogout_Click(object sender, EventArgs e) => OnUserLogout?.Invoke();