private void ReceiveUpstreamMessage(IChannel target, IntermediateMessage msg) { if (msg.Type == MessageType.ClientNotice) { SendFromServer("NOTICE", username, msg.Payload); } else if (msg.Type == MessageType.ClientError) { SendFromServer("KILL", username, msg.Payload); connection.Close(); state = ConnectionState.CLOSED; } else if (msg.Type == MessageType.System) { Send(msg.Sender.IrcFullId, "NOTICE", username, "[SYS] " + msg.Payload); } else if (msg.Type == MessageType.AwayMessage) { Send(msg.Sender.IrcFullId, Numeric.RPL_AWAY, username, msg.Sender.IrcNick, msg.Payload); } else if (msg.Type == MessageType.IM) { var payload = msg.Payload; if (msg.Payload.StartsWith("/me ")) { payload = "\x01" + "ACTION " + payload.Substring(4) + "\x01"; } Send(msg.Sender.IrcFullId, "PRIVMSG", username, payload); } }
private void ReceiveChannelMessage(IChannel target, IntermediateMessage msg) { System.Diagnostics.Debug.WriteLine("Irc.ClientConnection.ReceiveChannelMessage({0}, {{ T:{1} S:{2} M:{3} }})", target.IrcName, msg.Type, msg.Sender.IrcNick, msg.Payload); if (msg.Type == MessageType.ClientNotice) { Send(LOCALNICK, "PRIVMSG", target.IrcName, msg.Payload); return; } var payload = msg.Payload; var isAction = false; var isEmote = false; if (msg.Payload.StartsWith("/me ")) { isAction = true; isEmote = true; payload = payload.Substring(4); } if (msg.Type == MessageType.OwnerSay) { payload = "[OS] " + payload; } else if (msg.Type == MessageType.ObjectIM) { payload = "[IM] " + payload; } else if (msg.Type == MessageType.RegionSay) { payload = "[RS] " + payload; } else if (msg.Type == MessageType.Whisper && !isEmote) { payload = "whispers: " + payload; isAction = true; } else if (msg.Type == MessageType.Shout && !isEmote) { payload = "shouts: " + payload; isAction = true; } if (isAction) { payload = "\x01" + "ACTION " + payload + "\x01"; } var outmsg = new Irc.Message(msg.Sender.IrcFullId, "PRIVMSG", target.IrcName, payload); Send(outmsg); }
public ConsumerMessageContext( IMessageContextConsumer consumer, IntermediateMessage result, int workerId, string groupId) { this.result = result; this.Consumer = consumer; this.Message = result.Payload; this.Headers = result.Headers; this.WorkerId = workerId; this.GroupId = groupId; }
private void OnPrivmsg(Message msg) { if (msg.Argv.Count < 2) { SendNeedMoreParams("PRIVMSG"); return; } var outmsg = new IntermediateMessage(); outmsg.Timestamp = DateTime.UtcNow; outmsg.Sender = selfId; if (msg.Argv[1].StartsWith("\x01" + "ACTION ")) { outmsg.Payload = "/me " + msg.Argv[1].Substring(8).TrimEnd('\x01'); } else { outmsg.Payload = msg.Argv[1]; } if (msg.Argv[0].StartsWith("#")) { outmsg.Type = MessageType.Talk; channels[msg.Argv[0]].SendMessage(outmsg); } else if (msg.Argv[0].StartsWith("+")) { int chan; if (int.TryParse(msg.Argv[0].Substring(1), out chan)) { upstream.SendNonzeroLocal(chan, msg.Argv[1]); } } else { outmsg.Type = MessageType.IM; upstream.SendMessageTo(mapper.MapUser(msg.Argv[0]), outmsg); } }
public void MessageTimestamp_ConsumeResultHasMessageTimestamp_ReturnsMessageTimestampFromResult() { // Arrange var expectedMessageTimestamp = new DateTime(2020, 1, 1, 0, 0, 0); var headers = new MessageHeaders(); var consumerResult = new IntermediateMessage(headers, Encoding.UTF8.GetBytes("xxxxxx")); consumerResult.Topic = "xxxx"; consumerResult.Partition = 1; consumerResult.Timestamp = expectedMessageTimestamp; //var target = new MessageContextConsumer(null, "consumer", null, consumerResult, CancellationToken.None); //// Act //var messageTimestamp = target.MessageTimestamp; //// Assert //messageTimestamp.Should().Be(expectedMessageTimestamp); }
private void ReceiveUpstreamMessage(IChannel target, IntermediateMessage msg) { if(msg.Type == MessageType.ClientNotice) { SendFromServer("NOTICE", username, msg.Payload); } else if(msg.Type == MessageType.ClientError) { SendFromServer("KILL", username, msg.Payload); connection.Close(); state = ConnectionState.CLOSED; } else if(msg.Type == MessageType.System) { Send(msg.Sender.IrcFullId, "NOTICE", username, "[SYS] " + msg.Payload); } else if(msg.Type == MessageType.AwayMessage) { Send(msg.Sender.IrcFullId, Numeric.RPL_AWAY, username, msg.Sender.IrcNick, msg.Payload); } else if(msg.Type == MessageType.IM) { var payload = msg.Payload; if (msg.Payload.StartsWith("/me ")) { payload = "\x01" + "ACTION " + payload.Substring(4) + "\x01"; } Send(msg.Sender.IrcFullId, "PRIVMSG", username, payload); } }
private void ReceiveChannelMessage(IChannel target, IntermediateMessage msg) { System.Diagnostics.Debug.WriteLine("Irc.ClientConnection.ReceiveChannelMessage({0}, {{ T:{1} S:{2} M:{3} }})", target.IrcName, msg.Type, msg.Sender.IrcNick, msg.Payload); if(msg.Type == MessageType.ClientNotice) { Send(LOCALNICK, "PRIVMSG", target.IrcName, msg.Payload); return; } var payload = msg.Payload; var isAction = false; var isEmote = false; if(msg.Payload.StartsWith("/me ")) { isAction = true; isEmote = true; payload = payload.Substring(4); } if(msg.Type == MessageType.OwnerSay) { payload = "[OS] " + payload; } else if(msg.Type == MessageType.ObjectIM) { payload = "[IM] " + payload; } else if (msg.Type == MessageType.RegionSay) { payload = "[RS] " + payload; } else if(msg.Type == MessageType.Whisper && !isEmote) { payload = "whispers: " + payload; isAction = true; } else if(msg.Type == MessageType.Shout && !isEmote) { payload = "shouts: " + payload; isAction = true; } if(isAction) { payload = "\x01" + "ACTION " + payload + "\x01"; } var outmsg = new Irc.Message(msg.Sender.IrcFullId, "PRIVMSG", target.IrcName, payload); Send(outmsg); }
private void OnPrivmsg(Message msg) { if (msg.Argv.Count < 2) { SendNeedMoreParams("PRIVMSG"); return; } var outmsg = new IntermediateMessage(); outmsg.Timestamp = DateTime.UtcNow; outmsg.Sender = selfId; if (msg.Argv[1].StartsWith("\x01" + "ACTION ")) { outmsg.Payload = "/me " + msg.Argv[1].Substring(8).TrimEnd('\x01'); } else { outmsg.Payload = msg.Argv[1]; } if (msg.Argv[0].StartsWith("#")) { outmsg.Type = MessageType.Talk; channels[msg.Argv[0]].SendMessage(outmsg); } else if(msg.Argv[0].StartsWith("+")) { int chan; if (int.TryParse(msg.Argv[0].Substring(1), out chan)) { upstream.SendNonzeroLocal(chan, msg.Argv[1]); } } else { outmsg.Type = MessageType.IM; upstream.SendMessageTo(mapper.MapUser(msg.Argv[0]), outmsg); } }