package Ġcom . existing . bo iler x . core . base . mv vm . viewModel . bus . rx ĊĊ Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . subjects . Publish Subject Ċ import Ġio . reactivex . subjects . Replay Subject Ċ import Ġio . reactivex . subjects . Subject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ãĢĮ ĠThe ĠK ha eng Ġ ãĢį on Ġ 1 8 ĠSep Ġ 2 0 1 7 Ġ:) Ċ Ġ*/ Ċ Ċ class ĠEvent Bus Subject Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDEFAULT _ CACHE _ SIZE Ġ= Ġ 3 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Serialized Subject Ġis Ġvery Ġimportant Ġ- Ġwe Ġwant Ġto Ġbe Ġable Ġto Ġpost / subscribe Ġitems ĊĠĠĠ Ġ// on Ġdifferent Ġthreads Ġ- Ġhttp :// reactivex . io / Rx Java / javadoc / rx / subjects / Serialized Subject . html ĊĠĠĠ Ġprivate Ġvar Ġrx Bus : ĠSubject < Any > Ġ= Ġnew Subject () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGeneral Ġmethod Ġfor Ġpublishing Ġof Ġevents ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġobj ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġpost ( obj : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrx Bus . onNext ( obj ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclear Cache () Ġ{ ĊĠĠĠĠĠĠĠ Ġrx Bus . onComplete () ĊĠĠĠĠĠĠĠ Ġrx Bus Ġ= Ġnew Subject () ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġprivate Ġfun Ġnew Subject (): ĠSubject < Any > Ġ= ĠRe play Subject . create With Size ( DEFAULT _ CACHE _ SIZE ) ĊĠĠĠ Ġprivate Ġfun Ġnew Subject (): ĠSubject < Any > Ġ= ĠPublish Subject . create () ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGeneral Ġmethod Ġfor Ġob serving Ġon Ġall Ġevents ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġobserve (): ĠObservable < Any > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrx Bus ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMethod Ġto Ġobserve Ġon Ġcertain ĠEvent Ġclass ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠeventType ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġobserve ( eventType : ĠClass < T >): ĠObservable < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrx Bus . filter ({ ĠeventType . is Instance ( it ) Ġ}). cast ( eventType ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ param ĠeventType ĊĠĠĠĠ Ġ* Ġ@ param Ġ< T > ĊĠĠĠĠ Ġ* Ġ@ return ĠReturn Ġtrue Ġif Ġsubject Ġhas Ġany Ġevent Ġof Ġcertain Ġtype , Ġotherwise Ġreturn Ġfalse ĊĠĠĠ Ġ</ T > Ġ*/ ĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġhas Events OfType ( eventType : ĠClass < T >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġevents Ġ= Ġ( rx Bus Ġas ĠRe play Subject < *> ). values ĊĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġevents . count Ġ{ ĠeventType . is Instance ( it ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcount Ġ> Ġ 0 ĊĠĠĠ Ġ} Ċ Ċ } Ċ