package Ġchat . wil low . war ren . handler Ċ Ċ import Ġchat . wil low . k ale . K ale Handler Ċ import Ġchat . wil low . k ale . irc . message . rfc 1 4 5 9 . Priv Msg Message Ċ import Ġchat . wil low . war ren . IC lient Message Sending Ċ import Ġchat . wil low . war ren . War ren Channel Ċ import Ġchat . wil low . war ren . War ren Channel User Ċ import Ġchat . wil low . war ren . event .* Ċ import Ġchat . wil low . war ren . helper . logger For Ċ import Ġchat . wil low . war ren . state . Channel Types State Ċ import Ġchat . wil low . war ren . state . Joined Channels State Ċ import Ġchat . wil low . war ren . state . generate User Ċ Ċ class ĠPriv Msg Handler ( val Ġevent Dispatcher : ĠI War ren EventDispatcher , Ġval Ġclient : ĠI Client Message Sending , Ġval Ġchannels State : ĠJo ined Channels State , Ġval Ġchannel Types State : ĠChannel Types State ) Ġ: ĠK ale Handler < Priv Msg Message . Message >( Priv Msg Message . Message . Parser ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠLOGGER Ġ= Ġlogger For < Priv Msg Handler >() ĊĊĊĠĠĠ Ġoverride Ġfun Ġhandle ( message : ĠPriv Msg Message . Message , Ġmetadata : ĠI Metadata Store ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsource Ġ= Ġmessage . source ĊĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġmessage . target ĊĠĠĠĠĠĠĠ Ġvar Ġmessage Contents Ġ= Ġmessage . message ĊĊĠĠĠĠĠĠĠ Ġvar Ġc tcp Ġ= ĠC tcp Enum . NONE ĊĊĠĠĠĠĠĠĠ Ġif Ġ( C tcp Helper . is Message CT CP ( message Contents )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc tcp Ġ= ĠC tcp Enum . from ( message Contents ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Contents Ġ= ĠC tcp Helper . trim CT CP ( message Contents ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ct cp Ġ=== ĠC tcp Enum . UNKNOWN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . warn (" dro pping Ġunknown ĠC TCP Ġmessage : Ġ$ target Ġ$ message Contents ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( channel Types State . types . any Ġ{ Ġchar Ġ-> Ġtarget . startsWith ( char ) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠChannel Ġmessage ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel State Ġ= Ġchannels State [ target ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( channel State Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . warn (" got Ġa Ġpriv msg Ġfor Ġa Ġchannel Ġwe Ġdon 't Ġthink Ġwe 're Ġin , Ġb ailing : Ġ$ message ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġuser State Ġ= Ġchannel State . users [ source . nick ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user State Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser State Ġ= Ġgenerate User ( nick Ġ= Ġsource . nick ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . debug (" got Ġa Ġpriv msg Ġfor Ġa Ġuser Ġwe Ġdon 't Ġthink 's Ġin Ġthe Ġchannel , Ġmaking Ġa Ġfake Ġuser Ġ$ user State : Ġ$ message ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Ġ= ĠWar ren Channel ( state Ġ= Ġchannel State , Ġclient Ġ= Ġclient ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠWar ren Channel User ( state Ġ= Ġuser State , Ġchannel Ġ= Ġchannel ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( ct cp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC tcp Enum . NONE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Dispatcher . fire ( Channel Message Event ( user Ġ= Ġuser , Ġchannel Ġ= Ġchannel , Ġmessage Ġ= Ġmessage Contents , Ġmetadata Ġ= Ġmetadata )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . debug ("$ target Ġ< ${ source . nick }> Ġ$ message Contents ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC tcp Enum . ACTION Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Dispatcher . fire ( Channel ActionEvent ( user Ġ= Ġuser , Ġchannel Ġ= Ġchannel , Ġmessage Ġ= Ġmessage Contents , Ġmetadata Ġ= Ġmetadata )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . debug ("$ target Ġ${ source . nick } Ġ* Ġ$ message Contents ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPrivate Ġmessage ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( ct cp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC tcp Enum . NONE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Dispatcher . fire ( Private Message Event ( user Ġ= Ġsource , Ġmessage Ġ= Ġmessage Contents , Ġmetadata Ġ= Ġmetadata )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . debug (" PM : Ġ< ${ source . nick }> Ġ$ message Contents ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC tcp Enum . ACTION Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Dispatcher . fire ( Private ActionEvent ( user Ġ= Ġsource , Ġmessage Ġ= Ġmessage Contents , Ġmetadata Ġ= Ġmetadata )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER . debug (" PM : Ġ${ source . nick } Ġ* Ġ$ message Contents ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }