/// <summary> /// Adds a custom message to consider for parsing raw messages recevied from the server. /// </summary> /// <param name="msg"></param> public void AddCustomMessage( IrcMessage msg ) { if ( this.customs == null ) { this.customs = new PrioritizedMessageList(); } customs.AddLast( msg ); }
private static IrcMessage GetMessage( String unparsedMessage, PrioritizedMessageList potentialHandlers ) { IrcMessage handler = null; LinkedListNode<IrcMessage> nodeToPrioritize = null; LinkedListNode<IrcMessage> node = potentialHandlers.First; if ( node != null ) { do { IrcMessage msg = node.Value; try { if ( msg.CanParse( unparsedMessage ) ) { nodeToPrioritize = node; handler = msg.CreateInstance(); break; } node = node.Next; } catch { System.Diagnostics.Trace.WriteLine( "Error testing CanParse on { " + unparsedMessage + " }", "Parse Error" ); throw; } } while ( node != null && node.Next != potentialHandlers.First ); } if ( nodeToPrioritize != null ) { potentialHandlers.Prioritize( nodeToPrioritize ); } return handler; }