Exemple #1
0
        internal override void HandleEnvelope(object sender, EnvelopeEventArgs e)

        {
            ChatEnvelope chatEnvelope = e.Envelope;

            LOG(LogLevel.VERBOSE, $"Received this message: {chatEnvelope.Message.ToJson()}");

            if (broker.ChatRoom.UpdateUsers(chatEnvelope.RawAddress))
            {
                return;
            }

            // recovering chat message
            var rawAddress      = chatEnvelope.RawAddress;
            var userChatMessage = chatEnvelope.Message;

            // if registration successful, skip
            if (new CommandsInvoker(new CmdNewUserRegistrationServer(broker, userChatMessage, rawAddress)).Invoke())
            {
                return;
            }

            // if notification exit, skip
            if (new CommandsInvoker(new CmdNotifyExitServer(broker, userChatMessage, rawAddress)).Invoke())
            {
                return;
            }

            // report number of knowing connected users
            broker.ChatRoom.ReportUsers();

            // forward all messages to other participants
            new CommandsInvoker(new CmdForwardToOthers(broker, userChatMessage, rawAddress)).Invoke();
        }
        private async Task <bool> RaiseCommandReceivedAsync(Command envelope)
        {
            var eventArgs = new EnvelopeEventArgs <Command>(envelope);

            CommandReceived?.RaiseEvent(this, eventArgs);
            await eventArgs.WaitForDeferralsAsync().ConfigureAwait(false);

            return(true);
        }
        private async Task <bool> RaiseNotificationReceivedAsync(Notification envelope)
        {
            var eventArgs = new EnvelopeEventArgs <Notification>(envelope);

            NotificationReceived?.RaiseEvent(this, eventArgs);
            await eventArgs.WaitForDeferralsAsync().ConfigureAwait(false);

            return(true);
        }
        private async Task <bool> RaiseMessageReceivedAsync(Message envelope)
        {
            var eventArgs = new EnvelopeEventArgs <Message>(envelope);

            MessageReceived?.RaiseEvent(this, eventArgs);
            await eventArgs.WaitForDeferralsAsync().ConfigureAwait(false);

            return(true);
        }
Exemple #5
0
        internal override void HandleEnvelope(object sender, EnvelopeEventArgs e)
        {
            ChatEnvelope chatEnvelope = e.Envelope;
            ChatMessage  chatMessage  = chatEnvelope.Message;

            var cmdInvoker      = new CommandsInvoker();
            var chatUserSession = base.chatRoom.UserSession;

            cmdInvoker.AddCommand(new CmdChatRegister(chatUserSession, chatMessage));
            cmdInvoker.AddCommand(new CmdReceiveChat(chatUserSession, chatMessage));
            cmdInvoker.AddCommand(new CmdReceiveBroadcastNewUser(chatUserSession, chatMessage));
            cmdInvoker.AddCommand(new CmdReceiveBroadcastEndSession(chatUserSession, chatMessage));
            cmdInvoker.InvokeAll();
        }