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();
        }
Exemple #2
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();
        }
Exemple #3
0
        internal void Socket_ReceiveReady(object sender, NetMQSocketEventArgs e)
        {
            string msgJson = e.Socket.ReceiveFrameString();

            if (!string.IsNullOrEmpty(msgJson))
            {
                ChatEnvelope envelope = new ChatEnvelope
                {
                    Message = msgJson.ToChatMessage()
                };

                this.Deliver(envelope);
            }
        }
 public void Deliver(ChatEnvelope chatEnvelope)
 {
     OnRaiseEnvelopeEvent(new EnvelopeEventArgs(chatEnvelope));
 }
Exemple #5
0
 internal EnvelopeEventArgs(ChatEnvelope chatEnvelope)
 {
     Envelope = chatEnvelope;
 }