private static PublishingEvent PublishPublishingEvent(Message request) { PublishingEvent e = new PublishingEvent(request); EventHub.Publish(e); return(e); }
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); }
public MessageHandlerResult HandleMessage(Message request) { PublishingEvent e = PublishPublishingEvent(request); Message messageToSendToSender = null; if (e.Cancel) { messageToSendToSender = GetForwardingFailedResponse(request, e.CancellationReason); } else { Message forwardMessage = GetForwardMessage(request); bool shouldFowardToSender = SendMessageToRecipients(request, forwardMessage); if (shouldFowardToSender) { messageToSendToSender = forwardMessage; } } return(new MessageHandlerResult { Message = messageToSendToSender, CanTreatAsLongPoll = false }); }
public MessageHandlerResult HandleMessage(Message request) { var e = new PublishingEvent(request); EventHub.Publish(e); Message msg = null; if (e.Cancel) { msg = new Message { id = request.id, clientId = request.clientId, channel = request.channel, successful = false, error = e.CancellationReason }; } return(new MessageHandlerResult { Message = msg, CanTreatAsLongPoll = false }); }
public MessageHandlerResult HandleMessage(Message request) { var e = new PublishingEvent(request); EventHub.Publish(e); return(null); }
public void CheckMessage(PublishingEvent ev) { if (!ev.Message.GetData <string>("message").Contains("pish")) { return; } Client sender = this.clientRepository.GetByID(ev.Message.clientId); ev.Cancel = true; SendBadLanguageWarningToSender(ev.Message, sender); InformChannelOfBadLanguage(ev.Message, sender); }
public MessageHandlerResult HandleMessage(Message request) { bool sendToSelf = false; PublishingEvent e = new PublishingEvent(request); EventHub.Publish(e); if (e.Cancel) { return(null); // TODO should we return some error? } Message[] forward = { new Message { channel = this.ChannelName, data = request.data // TODO What other fields should be forwarded? } }; foreach (Client client in this.Recipients) { if (client.ID == request.clientId) { sendToSelf = true; } else { client.Enqueue(forward); client.FlushQueue(); } } return(new MessageHandlerResult { Message = sendToSelf ? forward : null, ShouldWait = false }); }