@ file : Suppress (" unused ") Ċ Ċ package Ġcom . zj . im . main Ċ Ċ import Ġcom . zj . im . chat . utils . net Utils . Net Work Info Ċ import Ġcom . zj . im . chat . enums . Socket State Ċ import Ġcom . zj . im . chat . exceptions . Chat Exception Ċ import Ġcom . zj . im . chat . exceptions . ExceptionHandler Ċ import Ġcom . zj . im . chat . interfaces . Lifecycle Listener Ċ import Ġcom . zj . im . chat . utils . Net Work State Ċ import Ġcom . zj . im . chat . utils . State Ignore Fl uct uate Utils Ċ import Ġcom . zj . im . chat . core . Base Option Ċ import Ġcom . zj . im . chat . enums . Runtime E fficiency Ċ import Ġcom . zj . im . listeners . Msg Received Listener Ċ import Ġcom . zj . im . utils . log . Net Record Utils Ċ import Ġcom . zj . im . utils . log . TCP Net Record Changed Listener Ċ import Ġcom . zj . im . utils . run Sync Ċ Ċ /** Ċ Ġ* Ġcreated Ġby ĠZ JJ Ċ Ġ* Ċ Ġ* Ġextend Ġthis Ġand Ġcall Ġinit Ġbefore Ġuse Ġ, or Ġit Ġwill Ġbe Ġcrash Ġwithout Ġinit !! Ċ Ġ* Ċ Ġ* Ġthe Ġentry Ġof Ġchat Module Ġ, call Ġregister / un Register Ġlisteners Ġto Ġobserver / cancel Ġthe Ġmsg Ġreceived Ċ Ġ* Ċ Ġ* Ġyou Ġcan Ġcall Ġpause / resume Ġto Ġmodify Ġthe Ġmessage Pool ` s Ġrunning Ġstate . Ċ Ġ* Ġ*/ Ċ Ċ abstract Ġclass ĠIM Interface < OUT Ġ: ĠAny > Ġ{ ĊĊĠĠĠ Ġval Ġis Running In Background : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠChat Base . isRunning In Background ĊĊĠĠĠ Ġprotected Ġfun Ġinit Chat ( option : ĠBase Option < OUT >) Ġ{ ĊĠĠĠĠĠĠĠ Ġoption . set Msg Interface ( this ) ĊĠĠĠĠĠĠĠ ĠChat Base . init ( option ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġpost Change Data ( out : ĠOUT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmsg Receive ( out ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġnotify Ġsubscriber Ġto Ġrefresh Ġdata Ġwhen Ġsomething Ġreceived ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġmsg Receive ( data : ĠOUT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmsg Listeners . run Sync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . forEach Ġ{ Ġ(_, Ġv ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v . can Receive ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . send To ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġnotify Ġsubscriber Ġto Ġrefresh Ġlocal Ġdata Ġwhen Ġchanged ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġfun Ġrefresh Local Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġmsg Listeners . run Sync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . forEach Ġ{ Ġ(_, Ġv ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v . can Receive ) Ġv . refresh Local Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġ< CLS > Ġrefresh Type Data ( cls : ĠClass < CLS >) Ġ{ ĊĠĠĠĠĠĠĠ Ġmsg Listeners . run Sync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . forEach Ġ{ Ġ(_, Ġv ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v . can Receive Ġ&& Ġv . query . getQuery Class ()?. simple Name Ġ== Ġcls . simple Name ) Ġv . refresh Local Data () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġthe Ġsocket Ġstatus Ġchanged ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġsocket Status Change ( state : ĠSocket State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠState Ignore Fl uct uate Utils . send Socket Status ( state ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠException Handler . post Error ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġthe Ġnetwork Ġstatus Ġchanged ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġnet Work StateChanged ( net Work State : ĠNet Work Info ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠState Ignore Fl uct uate Utils . send Net Work Status ( net Work State ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠException Handler . post Error ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġquery Ġis Ġmsg Ġexists Ġin Ġmsg Ġqueue ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġquery In Sending ( call Id : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠChat Base . query In Queue ( call Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġremove Ġmsg Ġif Ġit Ġexists Ġin Ġmsg Ġqueue ĊĠĠĠĠ Ġ* Ġ*/ ĊĠĠĠ Ġfun Ġcancel Sending Msg ( call Id : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠChat Base . delete Form Queue ( call Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġprogress Update ( percent : ĠInt , Ġcall Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmsg Listeners . run Sync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . forEach Ġ{ Ġ(_, Ġv ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( v . can Receive ) Ġv . on Progress ( percent , Ġcall Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġmsg Listeners : ĠMutable Map < String , ĠMsg Received Listener < *, ĠOUT >> ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ== Ġnull ) Ġfield Ġ= Ġmutable Map Of () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfield ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Cur Socket State (): ĠSocket State Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠState Ignore Fl uct uate Utils . get Cur Socket State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Cur Net Work State (): ĠNet Work State Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠState Ignore Fl uct uate Utils . get Cur Net Work State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġregister Socket State ChangeListener ( name : ĠString , Ġignore Fl uct uate : ĠBoolean , Ġobserver : Ġ( Socket State ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠState Ignore Fl uct uate Utils . register Socket State ChangeListener ( name , Ġignore Fl uct uate , Ġobserver ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Socket State ChangeListener ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠState Ignore Fl uct uate Utils . remove Socket State ChangeListener ( name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġregister Net Work State ChangeListener ( name : ĠString , Ġignore Fl uct uate : ĠBoolean , Ġobserver : Ġ( Net Work State ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠState Ignore Fl uct uate Utils . register Net Work State ChangeListener ( name , Ġignore Fl uct uate , Ġobserver ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Net Work State ChangeListener ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠState Ignore Fl uct uate Utils . remove Net Work State ChangeListener ( name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġregister Lifecycle Listener ( name : ĠString , Ġlistener : ĠLifecycle Listener ) Ġ{ ĊĠĠĠĠĠĠĠ ĠChat Base . options ?. register Lifecycle Listener ( name , Ġlistener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġun Register Lifecycle Listener ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠChat Base . options ?. un Register Lifecycle Listener ( name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġregister Record Listener ( name : ĠString , Ġtc : ĠTCP Net Record Changed Listener ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNet Record Utils . add Record Listener ( name , Ġtc ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġun Register Record Listener ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNet Record Utils . remove Record Listener ( name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠMsg Received Listener < *, ĠOUT >> Ġregister Msg Listener ( name : ĠString , Ġlistener : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmsg Listeners . run Sync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit [ name ] Ġ= Ġlistener ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġun Register Msg Listener ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmsg Listeners . run Sync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . remove ( name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġfun Ġset Frequency ( e fficiency : ĠRuntime E fficiency ) Ġ{ ĊĠĠĠĠĠĠĠ ĠChat Base . options ?. set Frequency ( e fficiency ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpause ( code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠChat Base . options ?. pause ( code ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġresume ( code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠChat Base . options ?. resume ( code ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshut Down () Ġ{ ĊĠĠĠĠĠĠĠ ĠChat Base . sh ut Down () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpost Error ( e : ĠChat Exception ) Ġ{ ĊĠĠĠĠĠĠĠ ĠChat Base . post Error ( e ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġoverride On Connected ( obj : Ġ( is Continue : Ġ( Boolean ) Ġ-> ĠUnit ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠChat Base . options ?. override On Connected ( obj ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġoverride On Auth Success ( obj : Ġ( is Continue : Ġ( Boolean ) Ġ-> ĠUnit ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠChat Base . options ?. override On Auth Success ( obj ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcancel TimeOut ( call Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠChat Base . options ?. cancel TimeOut ( call Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġre connection ( case : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠChat Base . correct Connection State ( Socket State . CONNECTED _ ERROR , Ġcase ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Toast ( s : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠChat Base . show ( s ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Logs FolderPath ( zip Folder Name : ĠString , Ġzip FileName : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠChat Base . get Logs Folder ( zip Folder Name , Ġzip FileName ) ĊĠĠĠ Ġ} Ċ } Ċ