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); }
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(); }