SX4IAP27IQ7B5QFX74GKQYRX4IJSJTZ4CLH7EPFSJWATV7LVXR4AC
YVDRNZYOCNN36GCZ6GPMLYPWITA3LYYPQPOUP2WJEZIVMOZRCA2AC
42VXBMHQX5RDOVPY5LTQMJ3PGOEFGONBBHFWTSYIKHVMPN2IZQYAC
4GYKYPKIACICEWYUOJNHU6D5FAUECBLNPUACURVDJPPIXO3RNICAC
YLSNKGUDSJN3S37GCAHLNBIK22PVZNLFFLMFGM533XGZ56FVHLZQC
S4P2B3FPF57HPHTIAYGMPCVKB7573IB5ZBKNXVBTB6ICCPF55WNQC
TLQZYMWADNQSS5PXO3TIJVPAG42NOAV3GR5S55TCUQU73LRQQ57QC
AETEUT6ER7MJXNYTBH5RHUT5URSRWNBJPXU2CA4URLSNAZYMWPIAC
42RQXK2TNX2ZZKB2EOMCJZJMIXMAMNE3TQUZCSN7J763VGAPNNAAC
HA7HWWCWLZNJVHU7BI4IL5HTT26V44HJKDRZHXMT5AN6B7NH7N6AC
FGZSTXZM4O7IQTMOWNTA2WVZVNN4BVLNAAMFTBZWLUDHTJICWD7AC
D5MLZ2BYK5M7FMRIJAJZ5JCTDLBIKFYE5WL3EL2PRQR3H43DS74AC
CGPQSMRFAEGSEMLDQWPHLEOAF26HVF3IC6BEKRCOSV2H6QLIBEAQC
ZMAZUHFHJOW2GSUH5SUDXRG4STQ6PQHWYGZIZHEJCN73PSNQOAAQC
QHTD7FGR374IIWGV7XAOJREIGJBAOFJCSBLCWPL536Z42GQYNTOAC
4G62MDWRTFCQ22OK7EDFIU6WE2SWQZVBNDCRUROUBL5XEOZRDF6AC
HH4TTHDCAEKTNZT4VUXCSPK7KCK6B432VFU5GOWWM3EG4KMNM43AC
V7HS237PBWI3JIA2FKGHVZ6CXT2BFE6VMXGZSJD7RGD6A3U2ISGQC
BO5VKP6Z3GNEZN2RKCS4MSUYM77L3KSOJAFGZO4GPDPSZAHQ7PSQC
AJ6FTLCDTUE7IBZOAMUW6HQFJNL4GUM2LL3GQUZBGB5UXTBPJILQC
L74V6CJIN5SLAGQSFFJFWGTI6M6KBRZYFBVD2C2B3MSGHWLIFMFQC
373VDPE4NHOIRAA72G25QBXT6ODW7QKR64OG7U6BM4ALZRUNFI2QC
5F37EUQCHOXFW7BK6YY5P7SAQB64ZCA3COUE4CN4YIY4ENQC2FCAC
DJJIZVCNVIH2HTR6K7YBEZTFMTMMW55GP37G4RAZO6G3UUXU52PAC
CRPUEZXM4UZYCYLARN6X74TXJ65NWKK4NDLHRD3DXSBQHI6IQ3BAC
GJG4W23FRRNBABPBTE57FMXQDVEN67TA5QVES6JBUS6RVEJSYTZAC
6PSR5ZJMWMK2J6MFIUKYKHG2B7H2QJ4SMFQMH5PF2632QPLC5DRAC
K4FYM25KROPWAAJBL7DKHDFBJJXRRJJ3EBRJMQAXK7M4WHEAJSWAC
DB2BCHT5GXNQ3JXQXWMDFNXIO7OVEQMVY34SHTAWSJS47N67YTIQC
VDRC3JXJMIYZ65PDFUBKHJGMKWIBFGYU4WPF43OOXHKTL2UBFKEAC
W2M2UMQWCG5K3MYSCAJJADB7FGYAM4ODV6BEBAEBPM7J3ZJCHCBAC
4DHN3FJ7YPSEPXXU2LCTLKGCAKH6RLGLTYFN2P6XTZJDPR5SFJMAC
5X6GHU7OPRGKRGT5PJBQOJMP3AFMM4HZQ47X5EH7DDXCTCWA6LIQC
E56QHKOALQCK7UGAJ6UNNZYTVUTSKLV25KYTPUQYMQWVDI6JIUCAC
76FUMVBRPTVCE3QMVJ2CQIW4C33Z737JYYF3UP43KFDBYSNTECKQC
4SFN5L36NYBFPXLBSWXO4KXDBY2W4YP4CNNVX23E2BQ7W2A6GVZQC
UVGQA4JL7UY6HSEMU2JDRZLT44QJAVKV6ZBMWOFHDFHJZLTM5NKAC
P5VPAF54HPN2KJACMZ2VGODJRFAKYBSKPN6Y7WYIWNVMGA72IETQC
I4SAB3ZORIAJOCA3KQIWVXBP4IDK3H7VUUJRTHPNGSPA7XCPJMCAC
NI3B7J2EHGSD7E65SGBLMI4R2YNS2LHI42NM37XEWP32PKBNKXYAC
F35KMTI4GH5AWL52CJFR767KIAD6TYXIT6PEHM65JJ66LRPESFTQC
PJWQKTE3MRFDPJQA6LMPVROAMLEZ27UGJ3EOQ4JQXSOFSUJVCT4AC
M5GXUK5HZE7HPLWQ33T73CXRJITOUJAO6T6F6QWTYYL7NLWFYA3AC
NICERFRG2UQDGPLQRFQJHGLNIUMJCE6LUN3EVNDQ35LPZLDMHYDAC
BIWQWRTPVNCRRDNYWFTDP3TGL2ER6U3ESUYPRUADATHZ4N2F5YJQC
VSXY63RCAE4WDARTVOW6YDD6VPMRBNASRD73R4UMZDAAQX7MAVTAC
pub fn (self &IrcActor) connect_all(say matrix.SayContext) {
say.say <- matrix.Say{
room: say.room_id
pub fn (self &IrcActor) connect_all(outchan chan chat.Say, room string, system chat.System) {
outchan <- chat.Say{
system: system
room: room
println('!!startup irc ${ptr_str(main.irc)} irc.networks ${ptr_str(main.irc.networks)}')
debug.dump(main.irc.networks)
go main.irc.connect_all(room_id: 'admin_room', say: say_chan)
go main.irc.connect_all(out_chan, 'admin_room', chat.System.matrix)
self.say_chan <- matrix.Say{
room: room_id
message: '!connect <hostname> (see !server for list)'
}
chat.say(self.out_chan, chat.System.matrix, room_id, '!connect <hostname> (see !server for list)')
self.say_chan <- matrix.Say{
room: room_id
message: '$self.matrix.host is ${self.matrix.conn_state}. $self.irc.networks.len irc networks'
}
chat.say(self.out_chan, system, room_id, '$self.matrix.host is ${self.matrix.conn_state}. $self.irc.networks.len irc networks')
fn (mut self Main) say(chat ChatSystem, room string, message string) {
match chat {
irc.IrcActor {
self.irc.say(room, message)
}
matrix.Actor {
self.say_chan <- matrix.Say{
room: room
message: message
fn listen_out(out_chan chan chat.Say, mut irc irc.IrcActor, mut matrix matrix.Actor) {
for {
println("!!*! OUTMSG WAIT")
outmsg := <-out_chan or { println("listen_out err!") }
println("!!!** GOT OUTMSG $outmsg")
match outmsg.system {
.irc {
irc.say(outmsg.room, outmsg.message)