package Ġweb auth n kit . core . ct ap . ble Ċ Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ Ċ import Ġweb auth n kit . core . auth enticator . Authenticator Ċ import Ġweb auth n kit . core . ct ap . ble . operation . Create Operation Ċ import Ġweb auth n kit . core . ct ap . ble . operation . Get Operation Ċ import Ġweb auth n kit . core . client . operation . Operation Listener Ċ import Ġweb auth n kit . core . client . operation . Operation Type Ċ import Ġweb auth n kit . core . ct ap . options . Get Assertion Options Ċ import Ġweb auth n kit . core . ct ap . options . Make Credential Options Ċ import Ġweb auth n kit . core . util . W AK Logger Ċ Ċ @ Experimental Cor outines Api Ċ @ Experimental Unsigned Types Ċ class ĠB le F ido Operation Manager ( ĊĠĠĠ Ġval Ġauth enticator : ĠAuth enticator Ċ ): ĠOperation Listener Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= ĠB le F ido Operation Manager :: class . simple Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġget Operations : ĠMutable Map < String , ĠGet Operation > Ġ= ĠHashMap () ĊĠĠĠ Ġprivate Ġval Ġcreate Operations : ĠMutable Map < String , ĠCreate Operation > Ġ= ĠHashMap () ĊĊĠĠĠ Ġfun Ġhas Active Operation (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( get Operations . isNotEmpty () Ġ|| Ġcreate Operations . isNotEmpty ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġget ( ĊĠĠĠĠĠĠĠ Ġoptions : ĠGet Assertion Options , ĊĠĠĠĠĠĠĠ Ġtimeout : ĠLong ĊĠĠĠ Ġ): ĠByteArray Ġ{ ĊĊĠĠĠĠĠĠĠ ĠW AK Logger . d ( TAG , Ġ" get ") ĊĊĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġauth enticator . new Get Assertion Session () ĊĠĠĠĠĠĠĠ Ġval Ġop Ġ= ĠGet Operation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions ĠĠĠĠĠĠ Ġ= Ġoptions , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession ĠĠĠĠĠĠ Ġ= Ġsession , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifetime Timer Ġ= Ġtimeout ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġop . listener Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġget Operations [ op . op Id ] Ġ= Ġop ĊĠĠĠĠĠĠĠ Ġreturn Ġop . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġcreate ( ĊĠĠĠĠĠĠĠ Ġoptions : ĠMake Credential Options , ĊĠĠĠĠĠĠĠ Ġtimeout : ĠLong ĊĠĠĠ Ġ): ĠByteArray Ġ{ ĊĊĠĠĠĠĠĠĠ ĠW AK Logger . d ( TAG , Ġ" create ") ĊĊĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġauth enticator . new Make Credential Session () ĊĠĠĠĠĠĠĠ Ġval Ġop Ġ= ĠCreate Operation ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġoptions , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġsession , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifetime Timer ĠĠĠĠĠĠĠĠĠĠ Ġ= Ġtimeout ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġop . listener Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġcreate Operations [ op . op Id ] Ġ= Ġop ĊĠĠĠĠĠĠĠ Ġreturn Ġop . start () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġcancel () Ġ{ ĊĠĠĠĠĠĠĠ ĠW AK Logger . d ( TAG , Ġ" cancel ") ĊĠĠĠĠĠĠĠ Ġget Operations . forEach Ġ{ Ġit . value . cancel ()} ĊĠĠĠĠĠĠĠ Ġcreate Operations . forEach Ġ{ Ġit . value . cancel ()} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Finish ( op Type : ĠOperation Type , Ġop Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠW AK Logger . d ( TAG , Ġ" operation Ġfinished ") ĊĠĠĠĠĠĠĠ Ġwhen Ġ( op Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOperation Type . Get Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( get Operations . containsKey ( op Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Operations . remove ( op Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOperation Type . Create Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( create Operations . containsKey ( op Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Operations . remove ( op Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ