/* Ċ Ġ* ĠDevelop ed Ġfor Ġthe ĠOpen Bot Ġproject Ġ( https :// open bot . org ) Ġby : Ċ Ġ* Ċ Ġ* ĠI vo ĠZ iv kov Ċ Ġ* Ġiz iv kov @ gmail . com Ċ Ġ* Ċ Ġ* ĠDate : Ġ 2 0 2 0 - 1 2 - 2 7 , Ġ 1 0 : 5 8 Ġp . m . Ċ Ġ*/ Ċ Ċ package Ġorg . open bot . controller . utils Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . util . Log Ċ import Ġio . reactivex . Flow able Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . functions . Consumer Ċ import Ġio . reactivex . processors . Publish Processor Ċ import Ġjava . util .* Ċ Ċ object ĠLocal EventBus Ġ{ ĊĊĠĠĠ Ġval Ġsubscriber Ġ= ĠSubscriber () ĊĊĠĠĠ Ġprivate Ġval Ġevent Processor : ĠPublish Processor < Progress Events > Ġ= ĊĠĠĠĠĠĠĠ ĠPublish Processor . create () ĊĊĠĠĠ Ġclass ĠSubscriber Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġsubscribers : ĠSet < String > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLinked HashSet < String >() ĊĊĠĠĠĠĠĠĠ Ġfun Ġstart Ġ( name : ĠString , Ġon Next : Consumer < in ĠProgress Events >, ĠonError : ĠConsumer < in ĠThrowable >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( subscribers . contains ( name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ// Ġdo Ġnot Ġallow Ġmultiple Ġsubscribers Ġwith Ġsame Ġname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent Processor . observe On ( Android Schedulers . main Thread ()). do On Next ( onNext ). do OnError ( onError ). subscribe ({}, onError Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( subscribers Ġas ĠLinked HashSet ). add ( name ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġconnection Event Flow able Ġ= Ġ( event Processor Ġas ĠFlow able < Progress Events >) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Next ( e : ĠProgress Events ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( event Processor . has Sub scribers ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġevent Processor . onNext ( e ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Event Processor : onNext ", Ġ" ----------- ĠNo Ġsubscribers ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġclass ĠProgress Events ( var Ġpayload : ĠString Ġ= Ġ"") Ġ{ ĊĊĠĠĠĠĠĠĠ Ġobject ĠInit Ġ: ĠProgress Events () ĊĊĠĠĠĠĠĠĠ Ġobject ĠConnection Started Ġ: ĠProgress Events () ĊĠĠĠĠĠĠĠ Ġobject ĠConnection Successful Ġ: ĠProgress Events () ĊĠĠĠĠĠĠĠ Ġobject ĠConnection Failed Ġ: ĠProgress Events () ĊĠĠĠĠĠĠĠ Ġobject ĠStart Ad vertising Ġ: ĠProgress Events () ĊĠĠĠĠĠĠĠ Ġobject ĠDis connecting Ġ: ĠProgress Events () ĊĠĠĠĠĠĠĠ Ġobject ĠDis connected Ġ: ĠProgress Events () ĊĠĠĠĠĠĠĠ Ġobject ĠStop Ad vertising Ġ: ĠProgress Events () ĊĠĠĠĠĠĠĠ Ġobject ĠAd vertising Failed Ġ: ĠProgress Events () ĊĠĠĠĠĠĠĠ Ġobject ĠTemporary Connection Problem Ġ: ĠProgress Events () ĊĠĠĠĠĠĠĠ Ġobject ĠPhone On Table Ġ: ĠProgress Events () ĊĠĠĠĠĠĠĠ Ġobject ĠT ilt Control Ġ: ĠProgress Events () ĊĠĠĠĠĠĠĠ Ġobject ĠSl iders Control Ġ: ĠProgress Events () ĊĠĠĠ Ġ} Ċ }