Exemple #1
0
        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();
            }
        }
Exemple #2
0
        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();
            }
        }