protected virtual void OnQuit( Message message ) { var handler = Quit; if ( null != handler ) { handler( this, new MessageEventArgs( message ) ); } }
private void OnResponse( Message message ) { var handler = Response; if ( null != handler ) { handler( this, new MessageEventArgs( message ) ); } }
// Event dispatchers protected virtual void OnError( Message message ) { var handler = Error; if ( null != handler ) { handler( this, new MessageEventArgs( message ) ); } }
private void OnUserMode( Message message ) { DispatchUserMessage( message, "MODE:user" ); }
// // Unknown event dispatcher // private void OnUnknown( Message message ) { var handler = Unknown; if ( null != handler ) { handler( this, new MessageEventArgs( message ) ); } }
private void OnRplTopicWhoTime( Message message ) { message.Target = message.Args[ 0 ]; DispatchChannelMessage( message, "RplTopicWhoTime" ); }
private void OnRplCreationTime( Message message ) { message.Target = message.Args[ 0 ]; DispatchChannelMessage( message, "RplCreationTime" ); }
private void DispatchUserMessage( Message message, string eventKey ) { Dictionary<object, EventHandler<MessageEventArgs>> delegates = EventManager[ eventKey ]; if ( !_users.ContainsKey( message.Target ) ) { return; } var target = _users[ message.Target ]; if ( !delegates.ContainsKey( target ) ) { return; } var handler = delegates[ target ]; object origin = this; if ( null != message.Origin && _users.ContainsKey( message.Origin.NickName ) ) { origin = _users[ message.Origin.NickName ]; } if ( null != handler ) { handler( origin, new MessageEventArgs( message ) ); } }
private void OnPrivMsg( Message message ) { DispatchUserMessage( message, "PRIVMSG" ); }
private void OnNotice( Message message ) { DispatchUserMessage( message, "NOTICE" ); }
private void OnJoin( Message message ) { DispatchChannelMessage( message, "JOIN" ); }
private void OnError( Message message ) { DispatchUserMessage( message, "ERROR" ); }
// // Channel-specific event dispatchers // private void OnChannelMode( Message message ) { // TODO is Target correct? DispatchChannelMessage( message, "MODE:channel" ); }
// // User-specific event dispatchers // private void OnCap( Message message ) { DispatchUserMessage( message, "CAP" ); }
protected virtual void OnMessage( Message message ) { var md = MessageDiscriminator; var handler = md[ message ] ?? md[ string.Empty ]; if ( null != handler ) { handler( this, new MessageEventArgs( message ) ); } }
public MessageEventArgs( Message message ) { Message = message; }
private void OnQuit( Message message ) { DispatchUserMessage( message, "QUIT" ); }
private void OnRplChannelModeIs( Message message ) { message.Target = message.Args[ 0 ]; DispatchChannelMessage( message, "RplChannelModeIs" ); }
private void _ReadCallback( IAsyncResult ar ) { int rc; try { rc = _buffer.EndRead( ar ); } catch ( Exception e ) { Debug.Print( "ProtocolHandler._ReadCallback: EndRead threw exception:\n{0}", e ); throw; } _buffer.Offset += rc; try { string temp = _leftOverPartialLineBuffer + new string( Encoding.UTF8.GetChars( _buffer.Buffer, 0, _buffer.Offset ) ); _buffer.Clear( ); List<string> lines = temp.Split( CommonDelimiters.CrLf, StringSplitOptions.None ).ToList( ); int lastLine = lines.Count - 1; _leftOverPartialLineBuffer = lines[lastLine]; lines.RemoveAt( lastLine ); foreach ( var line in lines ) { if ( ShowRawServerInput.Enabled ) { Debug.Print( "> " + line ); } var m = new Message( Server, line ); _journal.Add( m ); } _StartRead( ); } catch ( Exception e ) { Debug.Print( "ProtocolHandler._ReadCallback: caught exception while processing server input:\n{0}", e ); } }