package Ġcom . if ood . simple circuit break er . kotlin Ċ Ċ import Ġjava . util . concurrent . Comp letableFuture Ċ import Ġcom . if ood . simple circuit break er . Future Simple Conversion Circuit Breaker Ġas ĠJ Future Simple Conversion Circuit Breaker Ċ Ċ private Ġfun Ġget NotSupported (): ĠNothing Ġ{ ĊĠĠĠ Ġthrow ĠUnsupportedOperationException (" Get Ġis Ġnot Ġsupported ") Ċ } Ċ Ċ class ĠFuture Simple Conversion Circuit Breaker < T >( ĊĠĠĠ Ġmin Conversion : ĠDouble , ĊĠĠĠ Ġmin Requests : ĠInt Ġ= Ġ 1 0 0 0 , ĊĠĠĠ Ġrecovery Rate : ĠDouble Ġ= Ġ 0 . 1 Ċ ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġimpl Ġ= ĠJ Future Simple Conversion Circuit Breaker < T >( min Conversion , Ġmin Requests , Ġrecovery Rate ) ĊĊĠĠĠ Ġfun Ġwrap ( block : ĠWrapper . () Ġ-> ĠUnit ): ĠWrapper Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠWrapper (). apply ( block ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠWrapper Ġinternal Ġconstructor () Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġwrapper Impl Ġ= Ġimpl . wrap () ĊĊĠĠĠĠĠĠĠ Ġvar Ġfallback Supplier : Ġ() Ġ-> ĠCompletableFuture < T > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġget NotSupported () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrapper Impl . fallback Supplier ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġsuccess Checker : Ġ( T ) Ġ-> ĠCompletableFuture < Boolean > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġget NotSupported () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrapper Impl . success Checker ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġexecute ( block : Ġ() Ġ-> ĠCompletableFuture < T >): ĠCompletableFuture < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwrapper Impl . execute ( block ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }