public void QuitMessageTokens() { var message = "Out for lunch"; var quitMessage = new QuitMessage(message); Assert.Equal($"QUIT :{message}", quitMessage.ToString()); }
private void OnMessageQuit(QuitMessage quitMessage) { UserInfo user; if (Users.TryRemove(quitMessage.Nickname, out user)) { // TODO: fire event here } }
/// <summary> /// Finds a message type to handle the message. /// </summary> public ReceivableMessage Process() { // Named messages. if (NickMessage.CanProcess(this)) { return(new NickMessage(this)); } if (QuitMessage.CanProcess(this)) { return(new QuitMessage(this)); } if (JoinMessage.CanProcess(this)) { return(new JoinMessage(this)); } if (PartMessage.CanProcess(this)) { return(new PartMessage(this)); } if (PrivateMessage.CanProcess(this)) { return(new PrivateMessage(this)); } if (PingMessage.CanProcess(this)) { return(new PingMessage(this)); } if (NoticeMessage.CanProcess(this)) { return(new NoticeMessage(this)); } if (UserModeMessage.CanProcess(this)) { return(new UserModeMessage(this)); } if (ChannelModeMessage.CanProcess(this)) { return(new ChannelModeMessage(this)); } if (KickMessage.CanProcess(this)) { return(new KickMessage(this)); } if (InviteMessage.CanProcess(this)) { return(new InviteMessage(this)); } if (OperwallMessage.CanProcess(this)) { return(new OperwallMessage(this)); } if (Receive.TopicMessage.CanProcess(this)) { return(new Receive.TopicMessage(this)); } // IRCv3 messages. if (Receive.v3.CapabilityMessage.CanProcess(this)) { return(new Receive.v3.CapabilityMessage(this)); } if (Receive.v3.AwayMessage.CanProcess(this)) { return(new Receive.v3.AwayMessage(this)); } // Numerics. if (NumericMessage.CanProcess(this)) { // Pass all numeric messages to NumericMessage so an event can be fired, then pass it to more specific instances. // ReSharper disable once ObjectCreationAsStatement new NumericMessage(this); if (WelcomeMessage.CanProcess(this)) { return(new WelcomeMessage(this)); } if (YourHostMessage.CanProcess(this)) { return(new YourHostMessage(this)); } if (CreatedMessage.CanProcess(this)) { return(new CreatedMessage(this)); } if (MyInfoMessage.CanProcess(this)) { return(new MyInfoMessage(this)); } if (SupportMessage.CanProcess(this)) { return(new SupportMessage(this)); } if (BounceMessage.CanProcess(this)) { return(new BounceMessage(this)); } if (MOTDEndMessage.CanProcess(this)) { return(new MOTDEndMessage(this)); } if (MOTDStartMessage.CanProcess(this)) { return(new MOTDStartMessage(this)); } if (MOTDMessage.CanProcess(this)) { return(new MOTDMessage(this)); } if (LUserMessage.CanProcess(this)) { return(new LUserMessage(this)); } if (NamesMessage.CanProcess(this)) { return(new NamesMessage(this)); } if (EndOfNamesMessage.CanProcess(this)) { return(new EndOfNamesMessage(this)); } if (TopicMessage.CanProcess(this)) { return(new TopicMessage(this)); } if (TopicWhoTimeMessage.CanProcess(this)) { return(new TopicWhoTimeMessage(this)); } if (ListMessage.CanProcess(this)) { return(new ListMessage(this)); } if (ListEndMessage.CanProcess(this)) { return(new ListEndMessage(this)); } if (YoureOperMessage.CanProcess(this)) { return(new YoureOperMessage(this)); } if (AwayMessage.CanProcess(this)) { return(new AwayMessage(this)); } if (UnAwayMessage.CanProcess(this)) { return(new UnAwayMessage(this)); } if (NowAwayMessage.CanProcess(this)) { return(new NowAwayMessage(this)); } if (ChannelModeIsMessage.CanProcess(this)) { return(new ChannelModeIsMessage(this)); } if (UModeIsMessage.CanProcess(this)) { return(new UModeIsMessage(this)); } if (VersionMessage.CanProcess(this)) { return(new VersionMessage(this)); } if (TimeMessage.CanProcess(this)) { return(new TimeMessage(this)); } if (WhoMessage.CanProcess(this)) { return(new WhoMessage(this)); } if (WhoisMessage.CanProcess(this)) { return(new WhoisMessage(this)); } if (EndOfWhoMessage.CanProcess(this)) { return(new EndOfWhoMessage(this)); } if (EndOfWhoisMessage.CanProcess(this)) { return(new EndOfWhoisMessage(this)); } if (BanListMessage.CanProcess(this)) { return(new BanListMessage(this)); } if (EndOfBanListMessage.CanProcess(this)) { return(new EndOfBanListMessage(this)); } if (InviteListMessage.CanProcess(this)) { return(new InviteListMessage(this)); } if (EndOfInviteListMessage.CanProcess(this)) { return(new EndOfInviteListMessage(this)); } if (ExceptListMessage.CanProcess(this)) { return(new ExceptListMessage(this)); } if (EndOfExceptListMessage.CanProcess(this)) { return(new EndOfExceptListMessage(this)); } if (IsOnMessage.CanProcess(this)) { return(new IsOnMessage(this)); } // Catch all for unhandled error messages. if (ErrorMessage.CanProcess(this)) { return(new ErrorMessage(this)); } } Console.WriteLine("Message handler for \"" + Text + "\" not found."); return(null); }
private void Quit(QuitMessage msg) { this.Close(); }
static void Main(string[] args) { Thread.Sleep(1000); System.Timers.Timer UpdateClock = new System.Timers.Timer(); UpdateClock.Enabled = false; UpdateClock.Interval = 500; UpdateClock.Elapsed += new System.Timers.ElapsedEventHandler(UpdateClock_Elapsed); Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; string _Title = @"Lap Score v0.1"; //Create MDSClient object to connect to DotNetMQ //Name of this application: Application1 //Connect to DotNetMQ server mdsClient.Connect(); Guid testAccount = Guid.NewGuid(); clock.Init(testAccount); while (true) { if (_IsRecording) { Console.BackgroundColor = ConsoleColor.White; Console.ForegroundColor = ConsoleColor.DarkBlue; Console.Write(_Title + "..."); Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Recording"); } else { Console.BackgroundColor = ConsoleColor.White; Console.ForegroundColor = ConsoleColor.DarkBlue; Console.Write(_Title + "..."); Console.WriteLine("Not Recording"); } Console.BackgroundColor = ConsoleColor.Black; Console.ForegroundColor = ConsoleColor.White; Console.WriteLine("Commands are......."); Console.WriteLine("Press (R) to record."); Console.WriteLine("Press (Q) to quite."); Console.WriteLine("Press (space) to start race , twice to reset."); Console.WriteLine("Press (0-9) for car numbers."); var xmlSave = new XmlDocument(); Car car = new Car { Driver = new Driver { Name = "David" }, Number = 1, Transponder = "123121" }; CarRegistrationMessage carmessage = new CarRegistrationMessage(); carmessage.Init(testAccount, car); System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(carmessage.GetType()); StringWriter writer = new StringWriter(); x.Serialize(writer, carmessage); SendMessage(mdsClient, "LapScore.MessageService.Listener", carmessage.AsXml().ToString(), MDS.Communication.Messages.MessageTransmitRules.NonPersistent); SendMessage(mdsClient, "LapScore.Server", carmessage.AsXml().ToString(), MDS.Communication.Messages.MessageTransmitRules.StoreAndForward); Car car1 = new Car { Driver = new Driver { Name = "Ed" }, Number = 2, Transponder = "123121" }; carmessage = new CarRegistrationMessage(); carmessage.Init(testAccount, car1); x = new System.Xml.Serialization.XmlSerializer(carmessage.GetType()); writer = new StringWriter(); x.Serialize(writer, carmessage); SendMessage(mdsClient, "LapScore.MessageService.Listener", carmessage.AsXml().ToString(), MDS.Communication.Messages.MessageTransmitRules.NonPersistent); SendMessage(mdsClient, "LapScore.Server", carmessage.AsXml().ToString(), MDS.Communication.Messages.MessageTransmitRules.StoreAndForward); var keypress = Console.ReadKey(); //Get a message from user if (keypress.Key == ConsoleKey.Q) { QuitMessage record = new QuitMessage(); record.Init(testAccount); x = new System.Xml.Serialization.XmlSerializer(record.GetType()); writer = new StringWriter(); x.Serialize(writer, record); SendMessage(mdsClient, "LapScore.MessageService.Listener", writer.ToString(), MDS.Communication.Messages.MessageTransmitRules.NonPersistent); SendMessage(mdsClient, "LapScore.Server", writer.ToString(), MDS.Communication.Messages.MessageTransmitRules.StoreAndForward); break; } else if (keypress.Key == ConsoleKey.R) { RecordMessage record = new RecordMessage(); record.Init(testAccount); x = new System.Xml.Serialization.XmlSerializer(record.GetType()); writer = new StringWriter(); x.Serialize(writer, record); SendMessage(mdsClient, "LapScore.MessageService.Listener", writer.ToString(), MDS.Communication.Messages.MessageTransmitRules.NonPersistent); SendMessage(mdsClient, "LapScore.Server", writer.ToString(), MDS.Communication.Messages.MessageTransmitRules.StoreAndForward); _IsRecording = !_IsRecording; } else if (keypress.Key == ConsoleKey.Spacebar) { if (_IsClockStarted == false) { _ClockStartTime = DateTime.UtcNow; clock.Payload.Loop = 0; clock.Payload.Elapsed = 0; clock.Payload.Remaining = 5000; } UpdateClock.Enabled = _IsClockStarted = !_IsClockStarted; } else if ((keypress.KeyChar >= 48) && (keypress.KeyChar <= 58)) { var carNumber = keypress.KeyChar - 48; LapRegistrationMessage newMessage = new LapRegistrationMessage(); newMessage.Init(testAccount, "111111", carNumber, DateTime.UtcNow.Ticks - _ClockStartTime.Ticks); SendMessage(mdsClient, "LapScore.MessageService.Listener", newMessage.AsXml().ToString(), MDS.Communication.Messages.MessageTransmitRules.NonPersistent); SendMessage(mdsClient, "LapScore.Server", newMessage.AsXml().ToString(), MDS.Communication.Messages.MessageTransmitRules.StoreAndForward); if (_IsRecording) { SendMessage(mdsClient, "LapScore.MessageService.Recorder", newMessage.AsXml().ToString(), MDS.Communication.Messages.MessageTransmitRules.StoreAndForward); } } Console.Clear(); } //Disconnect from DotNetMQ server mdsClient.Disconnect(); }
/// <summary> /// Do any channel level processing required for the message. /// </summary> /// <param name="message">The message to process.</param> public void HandleMessage(Message message) { Action namesRequest = () => { if (!this.expectingNamesMessage) { this.users.Clear(); this.expectingNamesMessage = true; this.marshal.Send(this.TabPage, new NamesMessage(this.Name)); } }; if (message is JoinMessage) { namesRequest.Invoke(); } else if (message is PartMessage) { PartMessage partMessage = message as PartMessage; if (partMessage.NickName.Equals(this.marshal.Connection.Nickname, StringComparison.OrdinalIgnoreCase)) { this.Dispose(); return; } else { IRCUser user = this.users.Find(i => i.NickName.Equals(partMessage.NickName, StringComparison.OrdinalIgnoreCase)); this.TabPage.RemoveUserFromList(user); this.users.Remove(user); } } else if (message is KickMessage) { KickMessage kickMessage = message as KickMessage; IRCUser user = this.users.Find(i => i.NickName.Equals(kickMessage.NickName, StringComparison.OrdinalIgnoreCase)); this.TabPage.RemoveUserFromList(user); this.users.Remove(user); } else if (message is NickMessage) { NickMessage nickMessage = message as NickMessage; IRCUser user = this.users.Find(i => i.NickName.Equals(nickMessage.OldNickname, StringComparison.OrdinalIgnoreCase)); if (user != null) { this.TabPage.RemoveUserFromList(user); user.NickName = nickMessage.NewNickname; this.TabPage.AddUserToList(user, true); } else { return; } } else if (message is QuitMessage) { QuitMessage quitMessage = message as QuitMessage; IRCUser user = this.users.Find(i => i.NickName.Equals(quitMessage.NickName, StringComparison.OrdinalIgnoreCase)); if (user != null) { this.TabPage.RemoveUserFromList(user); this.users.Remove(user); } else { return; } } else if (message is ModeMessage) { namesRequest.Invoke(); } GlobalSettings settings = GlobalSettings.Instance; if (settings.DebugMode == GlobalSettings.Boolean.Yes) { this.TabPage.AppendMessage(message.Command, "[RAW]", message.ToString(), MessageType.WarningMessage); } this.TabPage.AppendMessage(message.Command, message.Source, message.Content, message.Type); }
protected override void ParseRaw(byte[] buffer, int offset, int length) { var received = _encoding.GetString(buffer, offset, length); if (!string.IsNullOrEmpty(_dataBuffer)) { received = _dataBuffer + received; _dataBuffer = null; } var commands = received.Split('|'); var processCount = commands.Length; if (!received.EndsWith("|")) { _dataBuffer = received.Substring(received.LastIndexOf('|') + 1); processCount--; } for (int i = 0; i < processCount; i++) { var cmd = commands[i]; if (cmd.Length == 0) { continue; } if (IncomingMessage != null) { OnIncomingMessage(new MessageEventArgs { Message = cmd }); } if (cmd[0] == '$') { // command var spaceIndex = cmd.IndexOf(' '); var cmdName = spaceIndex == -1 ? cmd : cmd.Substring(0, spaceIndex); try { switch (cmdName) { case "$Hello": { var arg = HelloMessage.Parse(cmd); OnMessageHello(ref arg); } break; case "$HubName": { var arg = HubNameMessage.Parse(cmd); OnMessageHubName(ref arg); } break; case "$Lock": { var arg = LockMessage.Parse(cmd); OnMessageLock(ref arg); } break; case "$Search": { var arg = SearchMessage.Parse(cmd); OnMessageSearch(ref arg); } break; case "$ConnectToMe": { var arg = ConnectToMeMessage.Parse(cmd); var ea = new OutgoingConnectionRequestEventArgs { Message = arg }; OnOutgoingConnectionRequest(ea); } break; case "$RevConnectToMe": { var arg = RevConnectToMeMessage.Parse(cmd); var ea = new IncomingConnectionRequestEventArgs { Message = arg }; OnIncomingConnectionRequest(ea); if (!string.IsNullOrEmpty(ea.LocalAddress)) { SendMessage( new ConnectToMeMessage { RecipientNickname = arg.SenderNickname, SenderAddress = ea.LocalAddress }.Raw); } } break; case "$GetPass": { OnMessageGetPass(); } break; case "$MyINFO": { var arg = MyINFOMessage.Parse(cmd); OnMessageMyINFO(arg); } break; case "$Quit": { var arg = QuitMessage.Parse(cmd); OnMessageQuit(arg); } break; case "$SR": { var arg = SRMessage.Parse(cmd); OnMessageSR(arg); } break; case "$UserIP": { var arg = UserIPMessage.Parse(cmd); OnUserIPMessage(arg); } break; } } catch (Exception x) { Logger.Error("Error when trying to parse a command: " + x.Message); } } else { // chat message _lastChatMessage = cmd; OnChatMessage(new ChatMessageEventArgs { RawMessage = cmd }); } } }