/* Ċ Ġ* Ċ Ġ* Ġ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 . ĠF orte Sc ar let ĠAll Ġrights Ġreserved . Ċ Ġ* Ġ Ġ* ĠProject Ġ Ġsimple - robot Ċ Ġ* Ġ Ġ* ĠFile ĠĠĠĠ ĠMir ai Avatar . kt Ċ Ġ* Ġ Ġ* Ċ Ġ* Ġ Ġ* ĠYou Ġcan Ġcontact Ġthe Ġauthor Ġthrough Ġthe Ġfollowing Ġchannels : Ċ Ġ* Ġ Ġ* Ġgithub Ġhttps :// github . com / F orte Sc ar let Ċ Ġ* Ġ Ġ* Ġg itee Ġ Ġhttps :// g itee . com / F orte Sc ar let Ċ Ġ* Ġ Ġ* Ġemail Ġ ĠF orte Sc ar let @ 1 6 3 . com Ċ Ġ* Ġ Ġ* ĠQQ ĠĠĠĠĠ 1 1 4 9 1 5 9 2 1 8 Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġlove . fort e . sim bot . listener ĊĊ Ċ /** Ċ Ġ* Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġ@ author ĠF orte Sc ar let Ċ Ġ*/ Ċ public Ġinterface ĠSession Callback < T > Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå½ĵ è¢« åĶ ¤ é ĨĴ äºĨ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Resume ( value : ĠT ) ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå½ĵ åıĳçĶŁ äºĨ å¼Ĥå¸¸ , Ġ ä¾ĭå¦Ĥ åıĳçĶŁ äºĨ è¶ħæĹ¶ ï¼Į æĪĸèĢħ æİ¨ éĢģ äºĨ åĲĦç§į éĶĻè¯¯ çŃī ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠonError ( exception : ĠThrowable ) ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è¢« åħ³éĹŃ äºĨ . Ġ ä¸ĢèĪ¬ åıĳçĶŁ åľ¨ ä½¿çĶ¨ äºĨ Ġ[ Continuous Session Scope Context . remove ] ĠæĪĸ Ġ è¶ħæĹ¶ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Cancel ( exception : ĠThrowable ?) ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġbuilder (): ĠSession Callback Builder < T > Ġ= ĠSession Callback Builder () ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UNUSED _ PARAMETER ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġbuilder ( type : ĠClass < T >): ĠSession Callback Builder < T > Ġ= ĠSession Callback Builder () ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ @ Suppress (" Member Visibility Can Be Private ") Ċ public Ġclass ĠSession Callback Builder < T > Ġ{ ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdef On Resume : Ġ( Any ?) Ġ-> ĠUnit Ġ= Ġ{} ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdef OnError : Ġ( Throwable ) Ġ-> ĠUnit Ġ= Ġ{ Ġthrowable Ġ-> Ġthrow Ġthrowable Ġ} ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdef On Cancel : Ġ( Throwable ?) Ġ-> ĠUnit Ġget () Ġ= Ġdef On Resume ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġignore On Resume : Ġ( Any ?) Ġ-> ĠUnit Ġget () Ġ= Ġdef On Resume ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġignore OnError : Ġ( Throwable ) Ġ-> ĠUnit Ġ= Ġdef On Resume ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġignore On Cancel : Ġ( Throwable ?) Ġ-> ĠUnit Ġ= Ġdef On Cancel ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġon Resume : Ġ( T ) Ġ-> ĠUnit Ġ= Ġdef On Resume ĊĠĠĠ Ġprivate Ġvar ĠonError : Ġ( Throwable ) Ġ-> ĠUnit Ġ= Ġdef OnError ĊĠĠĠ Ġprivate Ġvar Ġon Cancel : Ġ( Throwable ?) Ġ-> ĠUnit Ġ= Ġdef On Cancel ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ å¾ĹåĪ° çļĦ ç»ĵæŀľ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Resume ( block : ĠOn Resume < T >): ĠSession Callback Builder < T > Ġ= Ġalso Ġ{ Ġthis . on Resume Ġ= Ġblock :: invoke Ġ} ĊĠĠĠ Ġfun Ġignore On Resume (): ĠSession Callback Builder < T > Ġ= Ġon Resume ( ignore On Resume ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ åĩºçİ° çļĦ å¼Ĥå¸¸ ãĢĤ ĊĠĠĠĠ Ġ* Ġ ä¸ĢèĪ¬ æĥħåĨµä¸ĭ ï¼Į æľī åı¯èĥ½ä¼ļ ä¸İ Ġ[ on Cancel ] Ġ åĲĮæĹ¶ è§¦åıĳ ãĢĤ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġé»ĺè®¤ æĥħåĨµä¸ĭ ï¼Į [ onError ] Ġä¼ļ çĽ´æİ¥ æĬĽ åĩº å¼Ĥå¸¸ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠonError ( block : ĠOn Error ): ĠSession Callback Builder < T > Ġ= Ġalso Ġ{ Ġthis . onError Ġ= Ġblock :: invoke Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çĽ´æİ¥ å¿½ çķ¥ Ġ[ onError ] ĠçļĦ å¼Ĥå¸¸ å¤ĦçĲĨ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġignore OnError (): ĠSession Callback Builder < T > Ġ= ĠonError ( ignore OnError ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå½ĵ è¢« åħ³éĹŃ æĹ¶ è¿Ľè¡Į å¤ĦçĲĨ ãĢĤ ä¸ĢèĪ¬ åı¯èĥ½ åıĳçĶŁ åľ¨ Ġ[ è¶ħæĹ¶ ][ java . util . concurrent . TimeoutException ] ĠæĪĸ Ġ[ æīĭåĬ¨ åħ³éĹŃ ][ kotlin x . coroutines . Cancellation Exception ] ĠçļĦ æĹ¶åĢĻ ãĢĤ ĊĠĠĠĠ Ġ* Ġ å¾Īå¤ļ æĥħåĨµä¸ĭ ä¼ļ ä¸İ Ġ[ onError ] Ġä¼ļ ä¸Ģ åĲĮ è¢« è§¦åıĳ ãĢĤ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġé»ĺè®¤ æĥħåĨµä¸ĭ ï¼Į [ on Cancel ] Ġä¸Ń ä¸įä¼ļ è¿Ľè¡Į ä»»ä½ķ å¤ĦçĲĨ ãĢĤ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠonError And Cancel ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Cancel ( block : ĠOn Cancel ): ĠSession Callback Builder < T > Ġ= Ġalso Ġ{ Ġthis . on Cancel Ġ= Ġblock :: invoke Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çĽ´æİ¥ å¿½ çķ¥ Ġ[ on Cancel ] ĠçļĦ æĥħåĨµ å¤ĦçĲĨ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġignore On Cancel (): ĠSession Callback Builder < T > Ġ= Ġon Cancel ( ignore On Cancel ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĲĮæĹ¶ å¤ĦçĲĨ Ġ[ onError ] ĠåĴĮ Ġ[ on Cancel ]. Ġ åį³ äºĮ èĢħ ä½¿çĶ¨ åĲĮ ä¸Ģä¸ª å¤ĦçĲĨ éĢ»è¾ĳ ãĢĤ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠonError And Cancel ( block : ĠOn Cancel ): ĠSession Callback Builder < T > Ġ= Ġalso Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( block :: invoke ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonError Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Cancel Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¿½ çķ¥ Ġ[ on Cancel ] ĠåĴĮ Ġ[ onError ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġignore OnError And Cancel (): ĠSession Callback Builder < T > Ġ= Ġalso Ġ{ ĊĠĠĠĠĠĠĠ Ġignore OnError () ĊĠĠĠĠĠĠĠ Ġignore On Cancel () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġbuild (): ĠSession Callback < T > Ġ= ĠSession Callback Impl ( on Resume , ĠonError , Ġon Cancel ) ĊĊĊĠĠĠ Ġpublic Ġfun Ġinterface ĠOn Resume < T > Ġ Ġ{ ĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġinvoke ( value : ĠT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġinterface ĠOn Error Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ éĿŀ æŃ£å¸¸ Ġresume ĠçļĦ æĥħåĨµ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġexception Ġå½ĵ Ġ[ java . util . concurrent . TimeoutException ] Ġ åĪĻ ä»£è¡¨ ä¸º è¶ħæĹ¶ åħ³éĹŃ , ĊĠĠĠĠĠĠĠĠ Ġ* Ġå½ĵ Ġ[ kotlin x . coroutines . Cancellation Exception ] Ġ åĪĻ ä¸º è¢« æĻ®éĢļ æī§è¡Į äºĨ åħ³éĹŃ , ĊĠĠĠĠĠĠĠĠ Ġ* Ġ åħ¶ä»ĸ æĥħåĨµ åĪĻ æĺ¯ åħ¶ä»ĸ åħ³éĹŃ è°ĥçĶ¨ æĸ¹ æīĢ æıĲä¾Ľ çļĦ å¼Ĥå¸¸ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġinvoke ( exception : ĠThrowable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġfun Ġinterface ĠOn Cancel Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġ å¤ĦçĲĨ è¢« åħ³éĹŃ çļĦ æĥħåĨµ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcause Ġå½ĵ Ġ[ java . util . concurrent . TimeoutException ] Ġ åĪĻ ä»£è¡¨ ä¸º è¶ħæĹ¶ åħ³éĹŃ , ĊĠĠĠĠĠĠĠĠ Ġ* Ġ ä¸ºç©º åĪĻ ä»£è¡¨ æĻ®éĢļ åħ³éĹŃ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ* Ġ åħ¶ä»ĸ æĥħåĨµ åĪĻ æĺ¯ åħ¶ä»ĸ åħ³éĹŃ è°ĥçĶ¨ æĸ¹ æīĢ æıĲä¾Ľ çļĦ å¼Ĥå¸¸ ãĢĤ ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġinvoke ( cause : ĠThrowable ?) ĊĠĠĠ Ġ} ĊĊ Ċ } ĊĊ Ċ private Ġclass ĠSession Callback Impl < T >( ĊĠĠĠ Ġprivate Ġval Ġon Resume : Ġ( T ) Ġ-> ĠUnit , ĊĠĠĠ Ġprivate Ġval ĠonError : Ġ( Throwable ) Ġ-> ĠUnit , ĊĠĠĠ Ġprivate Ġval Ġon Cancel : Ġ( Throwable ?) Ġ-> ĠUnit , Ċ ) Ġ: ĠSession Callback < T > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume ( value : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Resume . invoke ( value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonError ( exception : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ ĠonError . invoke ( exception ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cancel ( exception : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Cancel . invoke ( exception ) ĊĠĠĠ Ġ} Ċ } ĊĊĊ