/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠL ala fo . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . mk hy t arm k ho ian . event bus Ċ Ċ import Ġio . reactivex . Observer Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . subjects . Behavior Subject Ċ import Ġio . reactivex . subjects . Publish Subject Ċ import Ġio . reactivex . subjects . Subject ĊĊ Ċ class ĠEvent Subject < T > Ġprivate Ġconstructor ( private Ġval Ġwrapped Subject : ĠSubject < T >) Ġ: ĠSubject < T >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġhas Observer s (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwrapped Subject . has Observer s () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsubscribe Actual ( observer : ĠObserver < in ĠT >) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrapped Subject . subscribe ( observer ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Subscribe ( d : ĠDis posable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrapped Subject . on Subscribe ( d ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonError ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrapped Subject . onError ( Event Subject Throwable ( t )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĠĠĠĠĠĠĠ Ġwrapped Subject . onComplete () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Next ( t : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrapped Subject . onNext ( t ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhas Throwable (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwrapped Subject . has Throwable () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhas Complete (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwrapped Subject . has Complete () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Throwable (): ĠThrowable ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwrapped Subject . throwable ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠEvent Subject Throwable ( cause : ĠThrowable ) Ġ: ĠThrowable ( cause ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġcreate (): ĠEvent Subject < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEvent Subject ( Publish Subject . create ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġreplay ing (): ĠEvent Subject < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEvent Subject ( Behavior Subject . create ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġreplay ing ( t : ĠT ): ĠEvent Subject < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEvent Subject ( Behavior Subject . create Default ( t )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ