package Ġedu . gate ch . cs 2 3 4 0 . space tr ader redux . domain . common Ċ Ċ import Ġio . reactivex . Scheduler Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . Single Observer Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ Ċ abstract Ġclass ĠUse Case < T , Ġin ĠParams >( private Ġval Ġsubscribe Scheduler : ĠScheduler , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġpost Execution Scheduler : ĠScheduler ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdis pos ables : ĠComposite Disposable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġabstract Ġfun Ġbuild UseCase Single ( params : ĠParams ?): ĠSingle < T > ĊĊĠĠĠ Ġfun Ġexecute ( observer : ĠSingle Observer < T >, Ġparams : ĠParams ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġobservable : ĠSingle < T > Ġ= Ġthis . build UseCase Single ( params ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( subscribe Scheduler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( post Execution Scheduler ) ĊĠĠĠĠĠĠĠ Ġ( observable . subscribe With ( observer ) Ġas ? ĠDis posable )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdis pos ables . add ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġdis pos ables . clear () ĊĠĠĠ Ġ} Ċ }