wtanaka.praya.irc
Class IRCClient

java.lang.Object
  |
  +--wtanaka.praya.Protocol
        |
        +--wtanaka.praya.irc.IRCClient
All Implemented Interfaces:
java.lang.Runnable, java.io.Serializable

public class IRCClient
extends Protocol
implements java.lang.Runnable

Version:
$Name: $ $Date: 2002/07/14 23:34:51 $
Author:
$Author: wtanaka $
See Also:
Serialized Form

Field Summary
private static int CONF_AWAYREASON
           
private static int CONF_ITEM_COUNT
           
private static int CONF_NICK
           
private static int CONF_PORT
           
private static int CONF_REALNAME
           
private static int CONF_SERVER
           
private static int CONF_STATUS
           
private static int CONF_USERNAME
           
private  java.lang.String currentChannel
           
private static java.lang.String IRC_STATUS_AWAY
           
private static java.lang.String IRC_STATUS_OFFLINE
           
private static java.lang.String IRC_STATUS_ONLINE
           
private  ConfigItem[] m_configItems
           
private  IRCReplyParser m_parser
           
private  java.lang.Thread myThread
           
static java.lang.String[] s_statusList
           
private  java.net.Socket serverSocket
           
private  java.io.InputStream socketInputStream
           
private  java.io.OutputStream socketOutputStream
           
 
Fields inherited from class wtanaka.praya.Protocol
descriptionListeners, iAmGarbage, m_buddyList, m_configPanel, m_currentDescription, m_messageListeners, recipientListeners
 
Constructor Summary
IRCClient()
           
IRCClient(java.lang.String server, java.lang.String nick, java.lang.String realName, java.lang.String username)
           
IRCClient(java.lang.String server, java.lang.String nick, java.lang.String realName, java.lang.String username, int port, java.lang.String awayReason)
           
 
Method Summary
protected  void addRecipient(Recipient r, Status s)
          Override visibility to let in IRCReplyParser
 void checkForNewMessages(boolean isAutomatic)
          This shouldn't do anything, messages are received by my thread.
 void connect()
          Connects to the network, if that makes any sense.
 CommandInterface[] consoleCommands()
          Text based IRC-specific command interpreter.
 void disconnect()
          Disconnects from the network, if that makes any sense.
private  void doQuit()
           
 java.lang.String getAwayReason()
           
 ConfigItem[] getConfiguration()
           
 java.lang.String getCurrentChannel()
           
 Recipient getDefaultRecipient()
           
static java.awt.Image getIcon()
           
 java.lang.String getNick()
           
 int getPort()
           
static java.lang.String getProtocolDescription()
          Used to describe the class of this protocol, before any instances have been created.
 java.lang.String getRealName()
           
 java.lang.String getServer()
           
 java.lang.String getUserName()
           
 boolean isConnected()
          Returns if the protocol is connected right now.
 void join(java.lang.String channel)
           
 void leave(java.lang.String channel)
           
private  java.lang.String readLineFrom(java.io.InputStream input)
          Reads a line terminated by \r or \n
 void run()
           
private  void sendAway(java.lang.String message)
           
private  void sendJoinCommand(java.lang.String channel, java.lang.String key)
           
 void sendMessage(IRCSelfChannelMessage m)
           
 void sendMessage(IRCSelfPrivMessage m)
           
private  void sendNickCommand(java.lang.String nickName)
           
private  void sendPartCommand(java.lang.String channel)
           
(package private)  void sendPongMessage(java.lang.String pongParam)
           
private  void sendPrivMessage(java.lang.String[] recipients, java.lang.String text)
           
private  void sendPrivMessageOneLine(java.lang.String arg1, java.lang.String arg2)
          This should only be called from sendPrivMessage
private  void sendQuit()
           
private  void sendUnaway()
           
private  void sendUserCommand(java.lang.String username, java.lang.String realname)
           
private  void sendWhoisMessage(java.lang.String nickMask)
           
private  void sendWhoMessage(java.lang.String name, boolean opsOnly)
           
 void setAwayReason(java.lang.String reason)
           
private  void setNick(java.lang.String newNick)
           
 void setServer(java.lang.String newServer, int port)
           
 void setStatus(Status status)
          Sets the currently connected user's status to the given status.
 void setUsername(java.lang.String newUsername)
           
private  java.lang.String[] splitLine(java.lang.String line, char splitChar)
           
private  void updateDescription()
           
 void who(java.lang.String channel)
           
 void whois(java.lang.String nick)
           
 
Methods inherited from class wtanaka.praya.Protocol
addDescriptionListener, addListener, addRecipientListener, changeRecipientStatus, clearBuddyList, console, fireDescriptionChanged, fireRecipientAppeared, fireRecipientChanged, fireRecipientDisappeared, getBuddies, getConfigPanelInstance, getCurrentDescription, getObjInstance, getStatusForBuddy, initialize, isGarbage, markAsGarbage, pushMessage, readObject, removeDescriptionListener, removeListener, removeRecipient, removeRecipientListener, setCurrentDescription, writeObject
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

serverSocket

private java.net.Socket serverSocket

socketInputStream

private java.io.InputStream socketInputStream

socketOutputStream

private java.io.OutputStream socketOutputStream

myThread

private java.lang.Thread myThread

currentChannel

private java.lang.String currentChannel

CONF_NICK

private static final int CONF_NICK

CONF_SERVER

private static final int CONF_SERVER

CONF_PORT

private static final int CONF_PORT

CONF_REALNAME

private static final int CONF_REALNAME

CONF_AWAYREASON

private static final int CONF_AWAYREASON

CONF_USERNAME

private static final int CONF_USERNAME

CONF_STATUS

private static final int CONF_STATUS

CONF_ITEM_COUNT

private static final int CONF_ITEM_COUNT

IRC_STATUS_ONLINE

private static final java.lang.String IRC_STATUS_ONLINE

IRC_STATUS_AWAY

private static final java.lang.String IRC_STATUS_AWAY

IRC_STATUS_OFFLINE

private static final java.lang.String IRC_STATUS_OFFLINE

s_statusList

public static final java.lang.String[] s_statusList

m_configItems

private ConfigItem[] m_configItems

m_parser

private IRCReplyParser m_parser
Constructor Detail

IRCClient

public IRCClient()

IRCClient

public IRCClient(java.lang.String server,
                 java.lang.String nick,
                 java.lang.String realName,
                 java.lang.String username)

IRCClient

public IRCClient(java.lang.String server,
                 java.lang.String nick,
                 java.lang.String realName,
                 java.lang.String username,
                 int port,
                 java.lang.String awayReason)
Method Detail

checkForNewMessages

public void checkForNewMessages(boolean isAutomatic)
This shouldn't do anything, messages are received by my thread.
Overrides:
checkForNewMessages in class Protocol
Following copied from class: wtanaka.praya.Protocol
Parameters:
isAutomatic - true if the check is generated automatically with a timer. false if the check is generated manually by the user.

addRecipient

protected void addRecipient(Recipient r,
                            Status s)
Override visibility to let in IRCReplyParser
Overrides:
addRecipient in class Protocol

sendMessage

public void sendMessage(IRCSelfPrivMessage m)
                 throws java.io.IOException

sendMessage

public void sendMessage(IRCSelfChannelMessage m)
                 throws java.io.IOException

setServer

public void setServer(java.lang.String newServer,
                      int port)

getAwayReason

public java.lang.String getAwayReason()

setAwayReason

public void setAwayReason(java.lang.String reason)

setUsername

public void setUsername(java.lang.String newUsername)

getCurrentChannel

public java.lang.String getCurrentChannel()

getUserName

public java.lang.String getUserName()

getRealName

public java.lang.String getRealName()

getNick

public java.lang.String getNick()

setNick

private void setNick(java.lang.String newNick)
              throws java.io.IOException

getServer

public java.lang.String getServer()

getPort

public int getPort()

connect

public void connect()
             throws java.io.IOException
Description copied from class: Protocol
Connects to the network, if that makes any sense. skip if it does not.
Overrides:
connect in class Protocol
Following copied from class: wtanaka.praya.Protocol
Throws:
java.io.IOException - if the connection fails due to an I/O error.
java.lang.InterruptedException - todo, why does it throw this?

isConnected

public boolean isConnected()
Description copied from class: Protocol
Returns if the protocol is connected right now. Good for telling if you need to call connect() again after the connection dies.
Overrides:
isConnected in class Protocol

disconnect

public void disconnect()
Description copied from class: Protocol
Disconnects from the network, if that makes any sense. skip if it does not.
Overrides:
disconnect in class Protocol

setStatus

public void setStatus(Status status)
               throws java.io.IOException
Description copied from class: Protocol
Sets the currently connected user's status to the given status.
Overrides:
setStatus in class Protocol

join

public void join(java.lang.String channel)
          throws java.io.IOException

leave

public void leave(java.lang.String channel)
           throws java.io.IOException

splitLine

private java.lang.String[] splitLine(java.lang.String line,
                                     char splitChar)

whois

public void whois(java.lang.String nick)
           throws java.io.IOException

who

public void who(java.lang.String channel)
         throws java.io.IOException

readLineFrom

private java.lang.String readLineFrom(java.io.InputStream input)
                               throws java.io.IOException
Reads a line terminated by \r or \n

updateDescription

private void updateDescription()

run

public void run()
Specified by:
run in interface java.lang.Runnable

sendNickCommand

private void sendNickCommand(java.lang.String nickName)
                      throws java.io.IOException
Throws:
java.io.IOException - if the client is not connected

sendUserCommand

private void sendUserCommand(java.lang.String username,
                             java.lang.String realname)
                      throws java.io.IOException

sendJoinCommand

private void sendJoinCommand(java.lang.String channel,
                             java.lang.String key)
                      throws java.io.IOException
Parameters:
key - the key to join the channel with, null if none

sendPartCommand

private void sendPartCommand(java.lang.String channel)
                      throws java.io.IOException

sendPrivMessageOneLine

private void sendPrivMessageOneLine(java.lang.String arg1,
                                    java.lang.String arg2)
                             throws java.io.IOException
This should only be called from sendPrivMessage

sendPrivMessage

private void sendPrivMessage(java.lang.String[] recipients,
                             java.lang.String text)
                      throws java.io.IOException

sendPongMessage

void sendPongMessage(java.lang.String pongParam)
               throws java.io.IOException

sendWhoisMessage

private void sendWhoisMessage(java.lang.String nickMask)
                       throws java.io.IOException

sendWhoMessage

private void sendWhoMessage(java.lang.String name,
                            boolean opsOnly)
                     throws java.io.IOException

sendUnaway

private void sendUnaway()
                 throws java.io.IOException

sendAway

private void sendAway(java.lang.String message)
               throws java.io.IOException

sendQuit

private void sendQuit()
               throws java.io.IOException

doQuit

private void doQuit()
             throws java.io.IOException

consoleCommands

public CommandInterface[] consoleCommands()
Text based IRC-specific command interpreter.
 /HELP                          : this message
 /SERVER [hostname[:port]]      : view/switch IRC server (does
                                  not reconnect)
 /QUOTE COMMAND PARAMS          : send COMMAND PARAMS to IRC
                                  server verbatim
 /NICK [nickname]               : view/change nickname
 /JOIN <channel>                : join a channel
 /LEAVE <channel>               : leave a channel
 /CHANNEL [channel]             : make channel current
 /SERVERHELP                    : asks for help from server
 /WHO [<name> [<o>]]            : looks for users matching name
 /WHOIS [server] <nickmask,..>  : gives information on users
 /WHOWAS nick [count [server]]  : gives information on users
 /AWAY [message]                : sets you unaway/away
 /KICK #ch nick [message]       : kicks nick out of #ch
 /QUIT                          : disconnect
 
Overrides:
consoleCommands in class Protocol

getDefaultRecipient

public Recipient getDefaultRecipient()
Overrides:
getDefaultRecipient in class Protocol

getProtocolDescription

public static java.lang.String getProtocolDescription()
Used to describe the class of this protocol, before any instances have been created.

getConfiguration

public ConfigItem[] getConfiguration()
Overrides:
getConfiguration in class Protocol
Following copied from class: wtanaka.praya.Protocol
Returns:
(self != null) list of configuration items for this protocol.

getIcon

public static java.awt.Image getIcon()