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; } } }
// --- PRIVATE METHODS (FROM EVENTS) ---------------------------------------------------- // private void linkLabelLogout_Click(object sender, EventArgs e) => OnUserLogout?.Invoke();