package Ġkr . j ade kim . redis . lett uce Ċ Ċ import Ġio . lett uce . core . Redis URI Ċ import Ġio . lett uce . core . api . State ful Redis Connection Ċ import Ġio . lett uce . core . codec . Redis Codec Ċ import Ġio . lett uce . core . master replica . Master Replica Ċ import Ġio . lett uce . core . pubsub . State ful Redis Pub Sub Connection Ċ import Ġio . lett uce . core . support . Bounded Pool Config Ċ import Ġkr . j ade kim . redis . lett uce . codec . Key Prefix String Codec Ċ import Ġjava . util . concurrent . Comp letableFuture Ċ import Ġjava . util . concurrent . Completion Stage Ċ Ċ open Ġclass ĠReplica Redis < K , ĠV >( ĊĠĠĠĠĠĠĠ Ġprotected Ġval Ġmaster Uri : ĠRedis URI , ĊĠĠĠĠĠĠĠ Ġcodec : ĠRedis Codec < K , ĠV >, ĊĠĠĠĠĠĠĠ Ġexecute PoolSize : ĠInt Ġ= ĠBo unded Pool Config . DEFAULT _ MAX _ TOTAL , ĊĠĠĠĠĠĠĠ Ġread PoolSize : ĠInt Ġ= ĠBo unded Pool Config . DEFAULT _ MAX _ TOTAL Ċ ) Ġ: ĠRedis < K , ĠV >( codec , Ġexecute PoolSize , Ġread PoolSize ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġstring Codec ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmaster Uri : ĠRedis URI , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Prefix : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecute PoolSize : ĠInt Ġ= ĠBo unded Pool Config . DEFAULT _ MAX _ TOTAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread PoolSize : ĠInt Ġ= ĠBo unded Pool Config . DEFAULT _ MAX _ TOTAL ĊĠĠĠĠĠĠĠ Ġ) Ġ= ĠReplica Redis ( master Uri , ĠKey Prefix String Codec ( key Prefix ), Ġexecute PoolSize , Ġread PoolSize ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġstring Codec ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhost : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġport : ĠInt Ġ= Ġ 6 3 7 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdb Index : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Prefix : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecute PoolSize : ĠInt Ġ= ĠBo unded Pool Config . DEFAULT _ MAX _ TOTAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread PoolSize : ĠInt Ġ= ĠBo unded Pool Config . DEFAULT _ MAX _ TOTAL ĊĠĠĠĠĠĠĠ Ġ) Ġ= Ġstring Codec ( Redis URI ( host , Ġport , Ġdb Index , Ġpassword ), Ġkey Prefix , Ġexecute PoolSize , Ġread PoolSize ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġnodes Ġ= Ġmutable ListOf ( master Uri ) ĊĊĠĠĠ Ġconstructor ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġport : ĠInt Ġ= Ġ 6 3 7 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb Index : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword : ĠString ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcodec : ĠRedis Codec < K , ĠV >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute PoolSize : ĠInt Ġ= ĠBo unded Pool Config . DEFAULT _ MAX _ TOTAL , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġread PoolSize : ĠInt Ġ= ĠBo unded Pool Config . DEFAULT _ MAX _ TOTAL ĊĠĠĠ Ġ) Ġ: Ġthis ( Redis URI ( host , Ġport , Ġdb Index , Ġpassword ), Ġcodec , Ġexecute PoolSize , Ġread PoolSize ) ĊĊĠĠĠ Ġfun Ġreplica ( uri : ĠRedis URI ): ĠReplica Redis < K , ĠV > Ġ{ ĊĠĠĠĠĠĠĠ Ġnodes . add ( uri ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreplica ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhost : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġport : ĠInt Ġ= Ġ 6 3 7 9 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb Index : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ): ĠReplica Redis < K , ĠV > Ġ= Ġreplica ( Redis URI ( host , Ġport , Ġdb Index , Ġpassword )) ĊĊĠĠĠ Ġoperator Ġfun Ġplus ( uri : ĠRedis URI ): ĠReplica Redis < K , ĠV > Ġ= Ġreplica ( uri ) ĊĊĠĠĠ Ġoperator Ġfun Ġplus ( host : ĠString ) Ġ= Ġreplica ( host ) ĊĊĠĠĠ Ġoverride Ġfun Ġconnect For Execute (): ĠCompletion Stage < State ful Redis Connection < K , ĠV >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġclient . connect Async ( codec , Ġmaster Uri ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġoverride Ġfun Ġconnect For Read (): ĠCompletion Stage < State ful Redis Connection < K , ĠV >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠMaster Replica . connect Async ( client , Ġcodec , Ġnodes ) Ġas ĠCompletableFuture < State ful Redis Connection < K , ĠV >> ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconnect Pub Sub (): ĠCompletion Stage < State ful Redis Pub Sub Connection < K , ĠV >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġclient . connect Pub Sub Async ( codec , Ġnodes . random ()) ĊĠĠĠ Ġ} Ċ }