/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠGoogle ĠLLC . Ċ Ġ* Ċ Ġ* ĠThis Ġcode Ġmay Ġonly Ġbe Ġused Ġunder Ġthe ĠBSD Ġstyle Ġlicense Ġfound Ġat Ċ Ġ* Ġhttp :// polymer . github . io / LICENSE . txt Ċ Ġ* Ċ Ġ* ĠCode Ġdistributed Ġby ĠGoogle Ġas Ġpart Ġof Ġthis Ġproject Ġis Ġalso Ġsubject Ġto Ġan Ġadditional ĠIP Ġrights Ċ Ġ* Ġgrant Ġfound Ġat Ċ Ġ* Ġhttp :// polymer . github . io / PAT ENTS . txt Ċ Ġ*/ Ċ Ċ package Ġar cs . android . storage . service Ċ Ċ import Ġar cs . core . host . Arc Host Manager Ċ import Ġar cs . core . storage . Driver Factory Ċ import Ġar cs . core . storage . Storage Key Ċ import Ġar cs . core . storage . driver . Database Driver Provider Ċ import Ġjava . util . concurrent . Concurrent HashMap Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . launch Ċ Ċ /** Ċ Ġ* ĠA Ġ[ Storage Service Manager ] Ġis Ġused Ġby Ġa Ġclient Ġof Ġthe Ġ[ Storage Service ] Ġto Ġmanage Ċ Ġ* Ġdata Ġstored Ġwithin Ġthe Ġ[ Storage Service ]. Ċ Ġ*/ Ċ @ Opt In ( Experimental Cor outines Api :: class ) Ċ class ĠStorage Service Manager ( ĊĠ Ġ/** Ġ[ Coroutine Scope ] Ġon Ġwhich Ġthis Ġ[ Storage Service Manager ] Ġruns . Ġ*/ ĊĠ Ġprivate Ġval Ġscope : ĠCor outine Scope , ĊĊĠ Ġ/** ĠThe Ġ[ Driver Factory ] Ġthat 's Ġmanaging Ġactive Ġdrivers Ġfor Ġthe Ġservice . Ġ*/ ĊĠ Ġprivate Ġval Ġdriver Factory : ĠDriver Factory , ĊĊĠ Ġ/** ĠThe Ġstores Ġmanaged Ġby ĠStorage Service . Ġ*/ ĊĠ Ġval Ġstores : ĠConcurrent HashMap < Storage Key , ĠDeferred Store < *, Ġ*, Ġ* >> Ċ ) Ġ: ĠI Storage Service Manager . Stub () Ġ{ ĊĊĠ Ġoverride Ġfun Ġclear All ( result Callback : ĠI Result Callback ) Ġ{ ĊĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠ ĠArc Host Manager . pause All Hosts For Ġ{ ĊĠĠĠĠĠĠĠ Ġdriver Factory . removeAll Entities () ĊĠĠĠĠĠĠĠ Ġ// ĠClear Ġstores Ġmap , Ġto Ġremove Ġcached Ġdata Ġ( as Ġa Ġpre ca ution Ġonly , Ġas Ġchanges Ġshould ĊĠĠĠĠĠĠĠ Ġ// Ġpropagate Ġto Ġstores ). ĊĠĠĠĠĠĠĠ Ġstores . clear () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġresult Callback . on Result ( null ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġclear Data Between ( ĊĠĠĠ ĠstartTime Millis : ĠLong , ĊĠĠĠ ĠendTime Millis : ĠLong , ĊĠĠĠ Ġresult Callback : ĠI Result Callback ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠ ĠArc Host Manager . pause All Hosts For Ġ{ ĊĠĠĠĠĠĠĠ Ġdriver Factory . remove Entities Created Between ( startTime Millis , ĠendTime Millis ) ĊĠĠĠĠĠĠĠ Ġ// ĠClear Ġstores Ġmap , Ġto Ġremove Ġcached Ġdata Ġ( as Ġa Ġpre ca ution Ġonly , Ġas Ġchanges Ġshould ĊĠĠĠĠĠĠĠ Ġ// Ġpropagate Ġto Ġstores ). ĊĠĠĠĠĠĠĠ Ġstores . clear () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġresult Callback . on Result ( null ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġreset Databases ( result Callback : ĠI Result Callback ) Ġ{ ĊĠĠĠ Ġscope . launch Ġ{ ĊĠĠĠĠĠ ĠDatabase Driver Provider . manager . reset All () ĊĠĠĠĠĠ Ġ// ĠClear Ġstores Ġmap , Ġto Ġremove Ġcached Ġdata , Ġas Ġreset ting Ġthe Ġdatabase Ġdoes Ġnot Ġpropagate ĊĠĠĠĠĠ Ġ// Ġchanges Ġto Ġthe Ġstores . ĊĠĠĠĠĠ Ġstores . clear () ĊĠĠĠĠĠ Ġresult Callback . on Result ( null ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ