OYO7SPBZRLTZHT22POUHC3KWVPU4XDWKSZAZ2I73IXOQGRW7VC3QC 3E4I3FD7CQDZQTV5O2CWIT3OSOLWSWAJ3OIEKS2N7B6TOLOURMNAC XRHU6MVAM7XOWLBYKCT4AO32ZIIV24Q2MFVPIQR2EK76SDTRVPZAC SI4ZC5RAYNDRJTLWBCTWPMQQUAOXL56YFDFIGLYTHPV3KNCN4TVAC YERRW4B2JAFEAEWFZXJRWKTRBH3ACMHHSD2WYWIIADXXQVA2RKCQC P5PVLCMXTTLQXH2QCHFXY2TRZSGDSA3LYPTX7ILQZWFFO2R52KXAC S4P2B3FPF57HPHTIAYGMPCVKB7573IB5ZBKNXVBTB6ICCPF55WNQC QWR4AKCMW4GPGKQKXO4GLOS7GZQ2KAD4JSOST5NCSM3VM7FJXPFAC H2CWXX2ETVDBVBIK6HHDSG76KTN3HRVVUUYK6AO3EBUY5MDQ33QQC G5QWNM5KIWQPIT4MGOC5SBUWEIIVZS67YPIH3U5TUASHASABE2CQC NT6HQMTF6MZKEW5JAW6BAZXPQAYNZLSRWPCZ7SKRDKSOVL2UP52QC FDLYIPCIOJRMY6ZWYKR25I25OAOSSAORLOGZYHLLOQHVOPGTKKYAC JPQ7MECBHIJO6GXBV63JS5D4LHM64YZJBKMAZ2MIYUKR6MXOG5CAC 7RIR64LPNWMWKMAKZRHC74NNZ4Q4MF2ZSJEP5TOF2Y6NJHQ4MBNAC V4U4N77ULT5CQG2AISTFD3B4K73QTWWYXKZ27SXFCBXXYXLM7DBQC IXZ5TLULLXVO4J6E2MZKNKKAJFEHKCEXTTTIWCB3AZPPZSMZPZVAC FCLBO6RXX5SKKF2TSQKUPG32B2KR6UBCAREDSOMQ4VDUPU6YGAUAC HVVPMIB4I73THRJRYAM4H2FSFOCWAAN2WTST5SEI4AJCSEZOYE7AC OKOJFPSWRMPWOFDS6DFIDJVBVCIFVAKUEE323HMBCPVAVKMSZSIQC OVZHLO3GZSBTNKCKONTBF7INW2AEX4RMSEHY3LDLLZNJANFDPJSQC 4H7DS23VBU4362UF5CMSCTXSPKDZIBMM2GXN6WJUEQFFY2ORGZBAC DB2BCHT5GXNQ3JXQXWMDFNXIO7OVEQMVY34SHTAWSJS47N67YTIQC MAVARQPK7P4QULJX3F4OT5J3OTEIZIFUK5QYZ25O75OPREOB5ZBAC YSZWBOSQU7MIUK3AJ4ZX54FZEAB42N5BFCT6YSK25ZJAP7UUXAWAC 7IFR3FZPYNBA6DIRU7M6KGCHZ4BQXFBZZEQ47JC6FVOWPZOS4JDAC FMITFZMDZ5E5DL7RX5KPFGWFQUUTEDHR36UYB6IVELFL6G7P2QYQC L2IYR6USEM6XW4MVPLHBCK55LEHQK34H5VZF23M4F4MPEG2YIDLAC S7N74UTYX6IFQLAMJMERDTKD7E5LQAIIUFY3UOOUSBEUZESSQWDAC B54PRIGIQWVFS5TNRNCIFXZCR7TCVG5FEJRFVNXZGY5466EE43XQC XBMU2A7P2LT5TCNWPJ2PDQ6BSVRCE4AGPUHOOQD7ZEGW4PDK32VQC Q3JRTINO7FZVE7QJJ33QDWLJBG3BM6OKBQLB4QZ3HBNVAEGYJOTQC CT5NKYZVDRKC3MACM2Y6AEDWUOAFCXUJX45QIWAPR74LBWZDI3GQC Y7RWKWSTXT7Q3PJGPBWG3FTSYOI7D257G7SYSQ3XAIBEGHJHY47QC N6KRVY5JUFP4XCMYJF7GIM5DRALEL62S7SKDNKAULXZ2SSCT723QC QL55K2FNVJTDIFAZD6AY4QHUA2HQGWHZ6XMF472TJDXDOCDPETWQC JCMV2ZQOJVGKXMSR6FH7JDAHD4JZYX4XENQD6FWO3DRGXB7TVYAAC WPNFPSADR6I3KL45BJCH5GCDUUOPUFSURUAFSCL3TLZLSVPRWVNQC TN25CDL76H226S2O5JPQD6GC256ZFNTGLI22JSMVMCS45Q6E3BYAC 42VXBMHQX5RDOVPY5LTQMJ3PGOEFGONBBHFWTSYIKHVMPN2IZQYAC outmsg := self.chat.queue.get(id)println('process_out [$id/$self.chat.queue.len()] $outmsg')println('process_out queue keys $self.chat.queue.entries.keys() ${self.chat.queue.entries.keys().map(ptr_str(it))}')match outmsg.system {.irc {ircnet_name := if outmsg.network.len == 0 {if self.irc.networks.len > 0 { self.irc.networks[0].hostname } else { 'noname' }} else {outmsg.network}match self.irc.say(ircnet_name, outmsg.name, outmsg.room, outmsg.message) {.good {println('process_out queue.delete($id)')self.chat.queue.delete(id)
if self.chat.queue.contains(id) {outmsg := self.chat.queue.get(id)println('process_out [$id/$self.chat.queue.len()] $outmsg')println('process_out queue keys $self.chat.queue.entries.keys() ${self.chat.queue.entries.keys().map(ptr_str(it))}')match outmsg.system {.irc {ircnet_name := if outmsg.network.len == 0 {if self.irc.networks.len > 0 { self.irc.networks[0].hostname } else { 'noname' }} else {outmsg.network
.network_not_found {}.user_not_found {self.chat.cin <- chat.Payload(chat.MakeIrcUser{network_hostname: ircnet_namenick: outmsg.name})
match self.irc.say(ircnet_name, outmsg.name, outmsg.room, outmsg.message) {.good {println('process_out queue.delete($id)')self.chat.queue.delete(id)}.network_not_found {}.user_not_found {self.chat.cin <- chat.Payload(chat.MakeIrcUser{network_hostname: ircnet_namenick: outmsg.name})}.error {}
}.matrix {if room := self.matrix.joined_rooms.find_room_by_id(outmsg.room) {if self.matrix.owner == outmsg.name {self.matrix.room_say(room, outmsg.message)} else {match self.matrix.room_say_as(outmsg.name, room, outmsg.message) {.good {self.chat.queue.delete(id)if self.chat.queue.len() > 0 {println('process_out finished ${id}. remaining queue len $self.chat.queue.len()')
.matrix {if room := self.matrix.joined_rooms.find_room_by_id(outmsg.room) {if self.matrix.owner == outmsg.name {self.matrix.room_say(room, outmsg.message)} else {match self.matrix.room_say_as(outmsg.name, room, outmsg.message) {.good {self.chat.queue.delete(id)if self.chat.queue.len() > 0 {println('process_out finished ${id}. remaining queue len $self.chat.queue.len()')}
}.user_not_found {self.matrix.cin <- matrix.Payload(matrix.MakeUser{name: outmsg.name})}.not_in_room {p := matrix.Payload(matrix.JoinRoom{name: outmsg.nameroom: outmsg.room})match self.matrix.cin.try_push(p) {.success {}.not_ready { println('WARNING matrix.cin channel not ready. $self.matrix.cin.len entries') }.closed {}
.user_not_found {self.matrix.cin <- matrix.Payload(matrix.MakeUser{name: outmsg.name})
}.error {println('matrix room_say_as error. retainig msg for retransmission')
.not_in_room {p := matrix.Payload(matrix.JoinRoom{name: outmsg.nameroom: outmsg.room})match self.matrix.cin.try_push(p) {.success {}.not_ready { println('WARNING matrix.cin channel not ready. $self.matrix.cin.len entries') }.closed {}}}.error {println('matrix room_say_as error. retainig msg for retransmission')}
} else {println('listen_out matrix.joined_rooms.find_room_by_id failed: $err.msg dropped: $outmsg.message ')println('process_out queue.delete($id)')self.chat.queue.delete(id)