package Ġio . nova foundation . nova . common . utils Ċ Ċ import Ġjp . co . sor am its u . fe ar less _ utils . ws rpc . recovery . Linear Re connect Strategy Ċ import Ġjp . co . sor am its u . fe ar less _ utils . ws rpc . recovery . Re connect Strategy Ċ import Ġkotlinx . coroutines . delay Ċ Ċ suspend Ġinline Ġfun Ġ< T > Ġretry Until Done ( ĊĠĠĠ Ġretry Strategy : ĠRe connect Strategy Ġ= ĠLinear Re connect Strategy ( step Ġ= Ġ 5 0 0 L ), ĊĠĠĠ Ġblock : Ġ() Ġ-> ĠT , Ċ ): ĠT Ġ{ ĊĠĠĠ Ġvar Ġattempt Ġ= Ġ 0 ĊĊĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġblock Result Ġ= Ġrun Catch ing Ġ{ Ġblock () Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( block Result . is Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġblock Result . require Value () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattempt ++ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( retry Strategy . getTime For Re connect ( attempt )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ