private void OnMessage(object sender, MessageEventArgs eventArgs) { if (!eventArgs.IsText) { return; } var container = JsonConvert.DeserializeObject <Container>(eventArgs.Data); switch (container.Identifier) { case DispatchType.Login: if (((JObject)container.Payload).ToObject(typeof(LoginResponseContainer)) is LoginResponseContainer loginResponse) { var eventLog = new EventLogMessage() { IsSuccessfully = true, SenderName = _login, Text = "Login", Time = DateTime.Now, Type = DispatchType.Login }; if (loginResponse.Content.Result == ResponseType.Failure) { eventLog.IsSuccessfully = false; eventLog.Text = loginResponse.Content.Reason; } LoginEvent?.Invoke( this, new LoginEventArgs( _login, eventLog.IsSuccessfully, eventLog, loginResponse.General, loginResponse.OnlineList, loginResponse.OfflineList, loginResponse.EventLogMessageList)); } break; case DispatchType.Message: MessageReceived?.Invoke(this, MessageSorter.GetSortedMessage((JObject)container.Payload)); break; case DispatchType.Channel: UpdateChannel?.Invoke(this, MessageSorter.GetSortedChannel((JObject)container.Payload)); break; case DispatchType.EventLog: LogEvent?.Invoke(this, MessageSorter.GetSortedEventMessage((JObject)container.Payload)); break; default: throw new ArgumentOutOfRangeException(); } }
private void HandlePacket(byte[] packet) { string serializedMessages = GetStringPacket(packet); var container = JsonConvert.DeserializeObject <Container>(serializedMessages); switch (container.Identifier) { case DispatchType.Login: if (((JObject)container.Payload).ToObject(typeof(LoginResponseContainer)) is LoginResponseContainer loginResponse) { var eventLog = new EventLogMessage { IsSuccessfully = loginResponse.Content.Result == ResponseType.Ok, SenderName = _login, Text = loginResponse.Content.Reason, Time = DateTime.Now, Type = DispatchType.Login }; _isLogin = eventLog.IsSuccessfully; LoginEvent?.Invoke( this, new LoginEventArgs( _login, eventLog.IsSuccessfully, eventLog, loginResponse.General, loginResponse.OnlineList, loginResponse.OfflineList, loginResponse.EventLogMessageList)); } break; case DispatchType.Message: MessageReceived?.Invoke(this, MessageSorter.GetSortedMessage((JObject)container.Payload)); break; case DispatchType.Channel: UpdateChannel?.Invoke(this, MessageSorter.GetSortedChannel((JObject)container.Payload)); break; case DispatchType.EventLog: LogEvent?.Invoke(this, MessageSorter.GetSortedEventMessage((JObject)container.Payload)); break; default: throw new ArgumentOutOfRangeException(); } }