AspComet.Samples.Chat.Whisperer.SendWhisper C# (CSharp) Method

SendWhisper() public method

public SendWhisper ( PublishingEvent ev ) : void
ev AspComet.Eventing.PublishingEvent
return void
        public void SendWhisper(PublishingEvent ev)
        {
            if (ev.Cancel) return;

            AuthenticatedClient sender = (AuthenticatedClient) clientRepository.GetByID(ev.Message.clientId);
            Whisper whisper = Whisper.FromMessage(ev.Message);

            if (whisper == null)
            {
                ev.Cancel = true;
                ev.CancellationReason = "Format error";
                SendInfoToClient(sender, "Usage: /whisper <nickname> message");
                return;
            }

            AuthenticatedClient receiver =
                clientRepository.WhereSubscribedTo("/chat")
                                .Cast<AuthenticatedClient>()
                                .FirstOrDefault(user => user.HasUsername(whisper.Username));
            if (receiver == null)
            {
                SendInfoToClient(sender, "User " + whisper.Username + " is not connected to the chat");
                return;
            }
            SendInfoToClient(sender, "To " + whisper.Username + ": " + whisper.Message);
            SendInfoToClient(receiver, sender.Username + " whispers: " + whisper.Message);
        }