RICA consists of one basis module, five basis classes, two sub classes (which could be useful samples) and one method. The objects communicate by the "event message".
Six basis module and classes are,
Rica::Event, Rica::Message, Rica::Connector, Rica::ConnectionManager, Rica::MessageDistributor and Rica::MessageProcessor.
The first -Rica::Event- module contains definitions of irc events and commands, and has methods those match each event. The event definitions in this module are used for the communications between the classes.
The second one -Rica::Message class- works as a capcellized irc message which contains sender's irc-server name, the timestamp when this message is issued, sender's nick, and all other informations concerning the irc message. This class includes a message parser, too.
When your client processes irc messages, it will access these messages through this class's instance.
Another three classes -Rica::Connector, Rica::ConnectionManager and Rica::MessageDistributor-, are assistants of Rica::MessageProcessor class. Each class supports connection to irc server, management of connection and message distribution.
You SHOULD NOT access to these assistant classes's instance directly, but SHOULD access through Rica::MessageProcessor class, because Rica::MessageProcessor class wraps or delegates them.
The last one -Rica::MessageProcessor class-, is the core of this library. She provides many methods to access irc messages and servers for your client processes. If you want to add your original functions, you would better create class by inheriting Rica::MesssageProcessor class, and adding your own code.
Figures below show the message flow block diagram and these classes' relationship diagram.


# # Socket event # LINK_ESTABLISHING LINK_ESTABLISHED LINK_FAILED LINK_CLOSING LINK_CLOSED # # RFC1459 Commands (include optional) # CMND_UNKNOWN CMND_PASS CMND_NICK CMND_USER CMND_SERVER CMND_OPER CMND_QUIT CMND_SQUIT CMND_JOIN CMND_PART CMND_MODE CMND_TOPIC CMND_NAMES CMND_LIST CMND_INVITE CMND_KICK CMND_VERSION CMND_STATAS CMND_LINK CMND_TIME CMND_CONNECT CMND_TRACE CMND_ADMIN CMND_INFO CMND_PRIVMSG CMND_NOTICE CMND_WHO CMND_WHOIS CMND_WHOWAS CMND_KILL CMND_PING CMND_PONG CMND_ERROR CMND_AWAY CMND_REHASH CMND_RESTART CMND_SUMMON CMND_USERS CMND_WALLOPS CMND_USERHOST CMND_ISON # # CTCP Messages # CMND_CTCP_QUERY CMND_CTCP_ANSWER CMND_CTCP_UNKNOWN CMND_CTCP_PING CMND_CTCP_ECHO CMND_CTCP_TIME CMND_CTCP_VERSION CMND_CTCP_CLIENTINFO CMND_CTCP_USERINFO CMND_CTCP_ACTION # # Low level Irc event # RECV_MESSAGE RECV_MESSAGE_BROKEN RECV_MESSAGE_KILL RECV_MESSAGE_PING RECV_MESSAGE_PONG RECV_MESSAGE_ERROR # # RFC1459 messages # RECV_RPL_INIT RECV_RPL_TRACELINK RECV_RPL_TRACECONNECTING RECV_RPL_TRACEHANDSHAKE RECV_RPL_TRACEUNKNOWN RECV_RPL_TRACEOPERATOR RECV_RPL_TRACEUSER RECV_RPL_TRACESERVER RECV_RPL_TRACENEWTYPE RECV_RPL_STATSLINKINF RECV_RPL_STATSCOMMANDS RECV_RPL_STATSCLINE RECV_RPL_STATSNLINE RECV_RPL_STATSILINE RECV_RPL_STATSKLINE RECV_RPL_STATSYLINE RECV_RPL_ENDOFSTATS RECV_RPL_UMODEIS RECV_RPL_STATSLLINE RECV_RPL_STATSUPTIME RECV_RPL_STATSOLINE RECV_RPL_STATSHLINE RECV_RPL_LUSERCLIENT RECV_RPL_LUSEROP RECV_RPL_LUSERUNKNOWN RECV_RPL_LUSERCHANNELS RECV_RPL_LUSERME RECV_RPL_ADMINME RECV_RPL_ADMINLOC1 RECV_RPL_ADMINLOC2 RECV_RPL_ADMINEMAIL RECV_RPL_TRACELOG RECV_RPL_NONE RECV_RPL_AWAY RECV_RPL_USERHOST RECV_RPL_ISON RECV_RPL_UNAWAY RECV_RPL_NOWAWAY RECV_RPL_WHOISUSER RECV_RPL_WHOISSERVER RECV_RPL_WHOISOPERATOR RECV_RPL_WHOWASUSER RECV_RPL_ENDOFWHO RECV_RPL_WHOISIDLE RECV_RPL_ENDOFWHOIS RECV_RPL_WHOISCHANNELS RECV_RPL_LISTSTART RECV_RPL_LIST RECV_RPL_LISTEND RECV_RPL_CHANNELMODEIS RECV_RPL_NOTOPIC RECV_RPL_TOPIC RECV_RPL_INVITING RECV_RPL_SUMMONING RECV_RPL_VERSION RECV_RPL_WHOREPLY RECV_RPL_NAMREPLY RECV_RPL_LINKS RECV_RPL_ENDOFLINKS RECV_RPL_ENDOFNAME RECV_RPL_BANLIST RECV_RPL_ENDOFBANLIST RECV_RPL_ENDOFWHOWAS RECV_RPL_INFO RECV_RPL_MOTD RECV_RPL_ENDOFINFO RECV_RPL_MOTDSTART RECV_RPL_ENDOFMOTD RECV_RPL_YOUREOPER RECV_RPL_REHASHING RECV_RPL_TIME RECV_RPL_USERS RECV_RPL_ENDOFUSERS RECV_RPL_NOUSERS RECV_ERR_NOSUCHNICK RECV_ERR_NOSUCHSERVE RECV_ERR_NOSUCHCHANNEL RECV_ERR_CANNOTSENDTOCHAN RECV_ERR_TOOMANYCHANNELS RECV_ERR_WASNOSUCHNICK RECV_ERR_TOOMANYTARGETS RECV_ERR_NOORIGIN RECV_ERR_NORECIPIENT RECV_ERR_NOTEXTTOSEND RECV_ERR_NOTOPLEVE RECV_ERR_WILDTOPLEVEL RECV_ERR_UNKNOWNCOMMAND RECV_ERR_NOMOTD RECV_ERR_NOADMININFO RECV_ERR_FILEERROR RECV_ERR_NONICKNAMEGIVEN RECV_ERR_ERRONEUSNICKNAME RECV_ERR_NICKNAMEINUSE RECV_ERR_NICKCOLLISION RECV_ERR_USERNOTINCHANNEL RECV_ERR_NOTONCHANNE RECV_ERR_USERONCHANNEL RECV_ERR_NOLOGIN RECV_ERR_SUMMONDISABLED RECV_ERR_USERSDISABLED RECV_ERR_NOTREGISTERED RECV_ERR_NEEDMOREPARAM RECV_ERR_ALREADYREGISTRE RECV_ERR_NOPERMFORHOST RECV_ERR_PASSWDMISMATCH RECV_ERR_YOUREBANNEDCREEP RECV_ERR_KEYSET RECV_ERR_CHANNELISFULL RECV_ERR_UNKNOWNMODE RECV_ERR_INVITEONLYCHAN RECV_ERR_BANNEDFROMCHAN RECV_ERR_BADCHANNELKEY RECV_ERR_NOPRIVILEGES RECV_ERR_CHANOPRIVSNEEDED RECV_ERR_CANTKILLSERVER RECV_ERR_NOOPERHOST RECV_ERR_UMODEUNKNOWNFLAG RECV_ERR_USERSDONTMATCH RECV_CMND RECV_CMND_UNKNOWN RECV_CMND_PASS RECV_CMND_NICK RECV_CMND_USER RECV_CMND_SERVER RECV_CMND_OPER RECV_CMND_QUIT RECV_CMND_SQUIT RECV_CMND_JOIN RECV_CMND_PART RECV_CMND_MODE RECV_CMND_TOPIC RECV_CMND_NAMES RECV_CMND_LIST RECV_CMND_INVITE RECV_CMND_KICK RECV_CMND_VERSION RECV_CMND_STATAS RECV_CMND_LINK RECV_CMND_TIME RECV_CMND_CONNECT RECV_CMND_TRACE RECV_CMND_ADMIN RECV_CMND_INFO RECV_CMND_PRIVMSG RECV_CMND_NOTICE RECV_CMND_WHO RECV_CMND_WHOIS RECV_CMND_WHOWAS RECV_CMND_KILL RECV_CMND_PING RECV_CMND_PONG RECV_CMND_ERROR RECV_CMND_AWAY RECV_CMND_REHASH RECV_CMND_RESTART RECV_CMND_SUMMON RECV_CMND_USERS RECV_CMND_WALLOPS RECV_CMND_USERHOST RECV_CMND_ISON RECV_CMND_CTCP_QUERY RECV_CMND_CTCP_QUERY_UNKNOWN RECV_CMND_CTCP_QUERY_PING RECV_CMND_CTCP_QUERY_ECHO RECV_CMND_CTCP_QUERY_TIME RECV_CMND_CTCP_QUERY_VERSION RECV_CMND_CTCP_QUERY_CLIENTINFO RECV_CMND_CTCP_QUERY_USERINFO RECV_CMND_CTCP_QUERY_ACTION RECV_CMND_CTCP_ANSWER RECV_CMND_CTCP_ANSWER_UNKNOWN RECV_CMND_CTCP_ANSWER_PING RECV_CMND_CTCP_ANSWER_ECHO RECV_CMND_CTCP_ANSWER_TIME RECV_CMND_CTCP_ANSWER_VERSION RECV_CMND_CTCP_ANSWER_CLIENTINFO RECV_CMND_CTCP_ANSWER_USERINFO RECV_CMND_CTCP_ANSWER_ACTION def dispatch(msg) def default_action(msg) def on_link(msg) alias on_link_establishing on_link alias on_link_established on_link alias on_link_failed on_link alias on_link_closed on_link def on_recv(msg) alias on_recv_message on_recv alias on_recv_message_broken on_recv_message alias on_recv_message_kill on_recv_message alias on_recv_message_ping on_recv_message alias on_recv_message_pong on_recv_message alias on_recv_message_error on_recv_message alias on_recv_message_notice on_recv_message alias on_recv_rpl on_recv alias on_recv_rpl_init on_recv_rpl alias on_recv_rpl_tracelink on_recv_rpl alias on_recv_rpl_traceconnecting on_recv_rpl alias on_recv_rpl_tracehandshake on_recv_rpl alias on_recv_rpl_traceunknown on_recv_rpl alias on_recv_rpl_traceoperator on_recv_rpl alias on_recv_rpl_traceuser on_recv_rpl alias on_recv_rpl_traceserver on_recv_rpl alias on_recv_rpl_tracenewtype on_recv_rpl alias on_recv_rpl_statslinkinf on_recv_rpl alias on_recv_rpl_statscommands on_recv_rpl alias on_recv_rpl_statscline on_recv_rpl alias on_recv_rpl_statsnline on_recv_rpl alias on_recv_rpl_statsiline on_recv_rpl alias on_recv_rpl_statskline on_recv_rpl alias on_recv_rpl_statsyline on_recv_rpl alias on_recv_rpl_endofstats on_recv_rpl alias on_recv_rpl_umodeis on_recv_rpl alias on_recv_rpl_statslline on_recv_rpl alias on_recv_rpl_statsuptime on_recv_rpl alias on_recv_rpl_statsoline on_recv_rpl alias on_recv_rpl_statshline on_recv_rpl alias on_recv_rpl_luserclient on_recv_rpl alias on_recv_rpl_luserop on_recv_rpl alias on_recv_rpl_luserunknown on_recv_rpl alias on_recv_rpl_luserchannels on_recv_rpl alias on_recv_rpl_luserme on_recv_rpl alias on_recv_rpl_adminme on_recv_rpl alias on_recv_rpl_adminloc1 on_recv_rpl alias on_recv_rpl_adminloc2 on_recv_rpl alias on_recv_rpl_adminemail on_recv_rpl alias on_recv_rpl_tracelog on_recv_rpl alias on_recv_rpl_none on_recv_rpl alias on_recv_rpl_away on_recv_rpl alias on_recv_rpl_userhost on_recv_rpl alias on_recv_rpl_ison on_recv_rpl alias on_recv_rpl_unaway on_recv_rpl alias on_recv_rpl_nowaway on_recv_rpl alias on_recv_rpl_whoisuser on_recv_rpl alias on_recv_rpl_whoisserver on_recv_rpl alias on_recv_rpl_whoisoperator on_recv_rpl alias on_recv_rpl_whowasuser on_recv_rpl alias on_recv_rpl_endofwho on_recv_rpl alias on_recv_rpl_whoisidle on_recv_rpl alias on_recv_rpl_endofwhois on_recv_rpl alias on_recv_rpl_whoischannels on_recv_rpl alias on_recv_rpl_liststart on_recv_rpl alias on_recv_rpl_list on_recv_rpl alias on_recv_rpl_listend on_recv_rpl alias on_recv_rpl_channelmodeis on_recv_rpl alias on_recv_rpl_notopic on_recv_rpl alias on_recv_rpl_topic on_recv_rpl alias on_recv_rpl_inviting on_recv_rpl alias on_recv_rpl_summoning on_recv_rpl alias on_recv_rpl_version on_recv_rpl alias on_recv_rpl_whoreply on_recv_rpl alias on_recv_rpl_namreply on_recv_rpl alias on_recv_rpl_links on_recv_rpl alias on_recv_rpl_endoflinks on_recv_rpl alias on_recv_rpl_endofname on_recv_rpl alias on_recv_rpl_banlist on_recv_rpl alias on_recv_rpl_endofbanlist on_recv_rpl alias on_recv_rpl_endofwhowas on_recv_rpl alias on_recv_rpl_info on_recv_rpl alias on_recv_rpl_motd on_recv_rpl alias on_recv_rpl_endofinfo on_recv_rpl alias on_recv_rpl_motdstart on_recv_rpl alias on_recv_rpl_endofmotd on_recv_rpl alias on_recv_rpl_youreoper on_recv_rpl alias on_recv_rpl_rehashing on_recv_rpl alias on_recv_rpl_time on_recv_rpl alias on_recv_rpl_users on_recv_rpl alias on_recv_rpl_endofusers on_recv_rpl alias on_recv_rpl_nousers on_recv_rpl alias on_recv_err on_recv alias on_recv_err_nosuchnick on_recv_err alias on_recv_err_nosuchserve on_recv_err alias on_recv_err_nosuchchannel on_recv_err alias on_recv_err_cannotsendtochan on_recv_err alias on_recv_err_toomanychannels on_recv_err alias on_recv_err_wasnosuchnick on_recv_err alias on_recv_err_toomanytargets on_recv_err alias on_recv_err_noorigin on_recv_err alias on_recv_err_norecipient on_recv_err alias on_recv_err_notexttosend on_recv_err alias on_recv_err_notopleve on_recv_err alias on_recv_err_wildtoplevel on_recv_err alias on_recv_err_unknowncommand on_recv_err alias on_recv_err_nomotd on_recv_err alias on_recv_err_noadmininfo on_recv_err alias on_recv_err_fileerror on_recv_err alias on_recv_err_nonicknamegiven on_recv_err alias on_recv_err_erroneusnickname on_recv_err alias on_recv_err_nicknameinuse on_recv_err alias on_recv_err_nickcollision on_recv_err alias on_recv_err_usernotinchannel on_recv_err alias on_recv_err_notonchanne on_recv_err alias on_recv_err_useronchannel on_recv_err alias on_recv_err_nologin on_recv_err alias on_recv_err_summondisabled on_recv_err alias on_recv_err_usersdisabled on_recv_err alias on_recv_err_notregistered on_recv_err alias on_recv_err_needmoreparam on_recv_err alias on_recv_err_alreadyregistre on_recv_err alias on_recv_err_nopermforhost on_recv_err alias on_recv_err_passwdmismatch on_recv_err alias on_recv_err_yourebannedcreep on_recv_err alias on_recv_err_keyset on_recv_err alias on_recv_err_channelisfull on_recv_err alias on_recv_err_unknownmode on_recv_err alias on_recv_err_inviteonlychan on_recv_err alias on_recv_err_bannedfromchan on_recv_err alias on_recv_err_badchannelkey on_recv_err alias on_recv_err_noprivileges on_recv_err alias on_recv_err_chanoprivsneeded on_recv_err alias on_recv_err_cantkillserver on_recv_err alias on_recv_err_nooperhost on_recv_err alias on_recv_err_umodeunknownflag on_recv_err alias on_recv_err_usersdontmatch on_recv_err alias on_recv_cmnd on_recv alias on_recv_cmnd_unknown on_recv_cmnd alias on_recv_cmnd_pass on_recv_cmnd alias on_recv_cmnd_nick on_recv_cmnd alias on_recv_cmnd_user on_recv_cmnd alias on_recv_cmnd_server on_recv_cmnd alias on_recv_cmnd_oper on_recv_cmnd alias on_recv_cmnd_quit on_recv_cmnd alias on_recv_cmnd_squit on_recv_cmnd alias on_recv_cmnd_join on_recv_cmnd alias on_recv_cmnd_part on_recv_cmnd alias on_recv_cmnd_mode on_recv_cmnd alias on_recv_cmnd_topic on_recv_cmnd alias on_recv_cmnd_names on_recv_cmnd alias on_recv_cmnd_list on_recv_cmnd alias on_recv_cmnd_invite on_recv_cmnd alias on_recv_cmnd_kick on_recv_cmnd alias on_recv_cmnd_version on_recv_cmnd alias on_recv_cmnd_statas on_recv_cmnd alias on_recv_cmnd_link on_recv_cmnd alias on_recv_cmnd_time on_recv_cmnd alias on_recv_cmnd_connect on_recv_cmnd alias on_recv_cmnd_trace on_recv_cmnd alias on_recv_cmnd_admin on_recv_cmnd alias on_recv_cmnd_info on_recv_cmnd alias on_recv_cmnd_privmsg on_recv_cmnd alias on_recv_cmnd_notice on_recv_cmnd alias on_recv_cmnd_who on_recv_cmnd alias on_recv_cmnd_whois on_recv_cmnd alias on_recv_cmnd_whowas on_recv_cmnd alias on_recv_cmnd_kill on_recv_cmnd alias on_recv_cmnd_ping on_recv_cmnd alias on_recv_cmnd_pong on_recv_cmnd alias on_recv_cmnd_error on_recv_cmnd alias on_recv_cmnd_away on_recv_cmnd alias on_recv_cmnd_rehash on_recv_cmnd alias on_recv_cmnd_restart on_recv_cmnd alias on_recv_cmnd_summon on_recv_cmnd alias on_recv_cmnd_users on_recv_cmnd alias on_recv_cmnd_wallops on_recv_cmnd alias on_recv_cmnd_userhost on_recv_cmnd alias on_recv_cmnd_ison on_recv_cmnd alias on_recv_cmnd_ctcp on_recv_cmnd alias on_recv_cmnd_ctcp_query on_recv_cmnd_ctcp alias on_recv_cmnd_ctcp_query_unknown on_recv_cmnd_ctcp_query alias on_recv_cmnd_ctcp_query_ping on_recv_cmnd_ctcp_query alias on_recv_cmnd_ctcp_query_echo on_recv_cmnd_ctcp_query alias on_recv_cmnd_ctcp_query_time on_recv_cmnd_ctcp_query alias on_recv_cmnd_ctcp_query_version on_recv_cmnd_ctcp_query alias on_recv_cmnd_ctcp_query_clientinfo on_recv_cmnd_ctcp_query alias on_recv_cmnd_ctcp_query_userinfo on_recv_cmnd_ctcp_query alias on_recv_cmnd_ctcp_query_action on_recv_cmnd_ctcp_query alias on_recv_cmnd_ctcp_query_dcc on_recv_cmnd_ctcp_query alias on_recv_cmnd_ctcp_answer on_recv_cmnd_ctcp alias on_recv_cmnd_ctcp_answer_unknown on_recv_cmnd_ctcp_answer alias on_recv_cmnd_ctcp_answer_ping on_recv_cmnd_ctcp_answer alias on_recv_cmnd_ctcp_answer_echo on_recv_cmnd_ctcp_answer alias on_recv_cmnd_ctcp_answer_time on_recv_cmnd_ctcp_answer alias on_recv_cmnd_ctcp_answer_version on_recv_cmnd_ctcp_answer alias on_recv_cmnd_ctcp_answer_clientinfo on_recv_cmnd_ctcp_answer alias on_recv_cmnd_ctcp_answer_userinfo on_recv_cmnd_ctcp_answer alias on_recv_cmnd_ctcp_answer_action on_recv_cmnd_ctcp_answer alias on_recv_cmnd_ctcp_answer_dcc on_recv_cmnd_ctcp_answer
attr_reader :timestamp attr_reader :server attr_reader :selfNick attr_reader :from attr_reader :fromNick attr_reader :command attr_reader :cmndstr attr_reader :to attr_reader :args attr_reader :origin def initialize(msg,*option) def isCtcp? def isCtcpQuery? def isCtcpAnswer? def isSelfMessage? def isPriv? def string(*format) def parse(msg)
attr_reader :server attr_reader :port attr_reader :passwd attr_reader :serveralias attr_reader :user attr_reader :realname attr_accessor :nick attr_reader :stat attr_accessor :kcode def initialize(serverinfo,userinfo,nick,kcode="jis") def open def close def alive? def write(msg,*option) def read
attr_reader :connectors def initialize def update(event,timestamp,nick,server) def open(serverinfo,userinfo,nick,kcode="jis") def close(server,purge=false) def reopen(server) def closeAll(purge=false) def eachConnector def [](server) def alive?(server) def connections def setNick(server,nick) def write(server,msg,*option) def writeAll(msg,*option) def read
def initialize def update(event,timestamp,nick,server) def open(serverinfo,userinfo,nick,kcode="jis") def reopen(server) def close(server,purge=true) def closeAll(purge=true) def connections def cmnd_pass(server,passwd) def cmnd_nick(server,nickname) def cmnd_user(server,username,realname) def cmnd_server(server) def cmnd_oper(server) def cmnd_quit(server,*msg) def cmnd_squit(server) def cmnd_join(server,chnl,*key) def cmnd_part(server,chnl,*msg) def cmnd_mode(server,chnl,*arg) def cmnd_topic(server,chnl,*arg) def cmnd_names(server,*chnl) def cmnd_list(server) def cmnd_invite(server,chnl,nickname) def cmnd_kick(server,chnl,nickname,*reason) def cmnd_version(server) def cmnd_statas(server) def cmnd_link(server) def cmnd_time(server) def cmnd_connect(server) def cmnd_trace(server) def cmnd_admin(server) def cmnd_info(server) def cmnd_privmsg(server,to,msg) def cmnd_notice(server,msg) def cmnd_who(server,nickname) def cmnd_whois(server,nickname) def cmnd_whowas(server,nickname) def cmnd_kill(server) def cmnd_ping(server,arg) def cmnd_pong(server,arg) def cmnd_error(server) def cmnd_away(server,*msg) def cmnd_rehash(server) def cmnd_restart(server) def cmnd_summon(server) def cmnd_users(server) def cmnd_wallops(server) def cmnd_userhost(server) def cmnd_ison(server,nickname) def ctcp_query(server,to,msg) def ctcp_answer(server,to,msg) def ctcp_query_ping(server,to) def ctcp_query_echo(server,to,str) def ctcp_query_time(server,to) def ctcp_query_version(server,to) def ctcp_query_clientinfo(server,to,*option) def ctcp_query_userinfo(server,to) def ctcp_answer_ping(server,to,arg) def ctcp_answer_echo(server,to,arg) def ctcp_answer_time(server,to) def ctcp_answer_version(server,to,arg) def ctcp_answer_clientinfo(server,to,msg) def ctcp_answer_userinfo(server,to,msg) def directcommand(server,msg) def talkback(server,msg) def login(server) def setAway(server,msg) def unsetAway(server) def getTopic(server,chnl) def setTopic(server,chnl,str) def getMode(server,chnl) def setMode(server,chnl,str) def add_observer(observer) def delete_observer(observer) def delete_observers def notify_observers(*arg) def observer_thread(observer)
def initialize def thread def update(msg)
attr_accessor :userinfo attr_accessor :version def initialize def on_recv_cmnd_ctcp_query_clientinfo(msg) def on_recv_cmnd_ctcp_query_echo(msg) def on_recv_cmnd_ctcp_query_ping(msg) def on_recv_cmnd_ctcp_query_time(msg) def on_recv_cmnd_ctcp_query_userinfo(msg) def on_recv_cmnd_ctcp_query_version(msg)