/**
* Copyright (C) 2013 Alexander Szczuczko
*
* This file may be modified and distributed under the terms
* of the MIT license. See the LICENSE file for details.
*/
package ca.szc.keratin.bot.handlers;
import java.util.LinkedList;
import java.util.List;
import net.engio.mbassy.listener.Handler;
import org.pmw.tinylog.Logger;
import ca.szc.keratin.core.event.connection.IrcConnect;
import ca.szc.keratin.core.net.io.OutputQueue;
import ca.szc.keratin.core.net.message.InvalidMessageParamException;
import ca.szc.keratin.core.net.message.IrcMessage;
import ca.szc.keratin.core.net.message.SendMessage;
public class ConnectionPreamble
{
private String user;
private String nick;
private String realName;
public ConnectionPreamble( String user, String nick, String realName )
{
this.user = user;
this.nick = nick;
this.realName = realName;
}
/**
* Sends the two required NICK and USER messages in sequence immediately after a connection is made.
*/
@Handler( priority = Integer.MIN_VALUE + 1 )
private void initialConnectionHandler( IrcConnect event )
{
OutputQueue replyQueue = event.getReplyQueue();
Logger.trace( "Sending connection nick/user preamble" );
try
{
List<IrcMessage> messageList = new LinkedList<IrcMessage>();
// TODO use SendMessage's static methods
messageList.add( SendMessage.nick( nick ) );
messageList.add( SendMessage.user( user, "0", realName ) );
for ( IrcMessage message : messageList )
replyQueue.offer( message );
}
catch ( InvalidMessageParamException e )
{
Logger.error( e, "Couldn't enqueue nick/user info preamble." );
}
}
}