package Ġcom . rod rig ob res an . domain . inter actor Ċ Ċ import Ġcom . rod rig ob res an . domain . base . executor . Post Execution Thread Ċ import Ġcom . rod rig ob res an . domain . base . executor . Thread Executor Ċ import Ġio . reactivex . Comp letable Ċ import Ġio . reactivex . dis pos ables . Dis pos ables Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ Ċ /** Ċ Ġ* ĠAbstract Ġclass Ġfor Ġany Ġexist ent ĠUse Case Ġthat Ġreturns Ġan Ġis nt ance Ġof Ġ[ Comp letable ] Ċ Ġ*/ Ċ abstract Ġclass ĠComp letable UseCase < in ĠParams > Ġprotected Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġthread Executor : ĠThread Executor , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġpost Execution Thread : ĠPost Execution Thread ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġsubscription Ġ= ĠDis pos ables . empty () ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġbuild UseCase Observable ( params : ĠParams ): ĠComp letable ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠExec utes Ġthe Ġuse Ġcase ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġexecute ( params : ĠParams ): ĠComp letable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . build UseCase Observable ( params ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . from ( thread Executor )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( post Execution Thread . scheduler ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUn sub scri bes Ġfrom Ġthe Ġcurrent ĠDis posable ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġunsubscribe () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! subscription . is Disposed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubscription . dispose () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }