package Ġcom . roman wu att ier . loader . internal Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . roman wu att ier . loader . Loader Callback Ċ import Ġcom . roman wu att ier . loader . Converter Type Ċ import Ġcom . roman wu att ier . loader . internal . data . Local Request Ċ import Ġcom . roman wu att ier . loader . internal . data . Remote Request Ċ import Ġcom . roman wu att ier . loader . internal . data . Request Ċ import Ġcom . roman wu att ier . loader . internal . store . Store Ċ import Ġcom . roman wu att ier . loader . internal . utils . check MainThread Ċ import Ġjava . io . File Ċ Ċ internal Ġclass ĠAny Loader Ġprivate Ġconstructor () Ġ: ĠLoader Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject ĠProvider Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Volatile ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġinstance : ĠAny Loader ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ@ Synchron ized ĊĠĠĠĠĠĠĠ Ġfun Ġprovide Instance (): ĠAny Loader Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( instance Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġ= ĠAny Loader () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinstance Ġas ĠAny Loader ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġmodule : ĠLoader Module Ġby Ġlazy Ġ{ ĠLoader Module . provide Instance () Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġoverride Ġfun Ġ< K , ĠV > Ġload From Remote ( url : ĠString , Ġcache Dir : ĠFile , Ġconverter Type : ĠConverter Type , ĊĠĠĠĠĠĠĠ Ġcallback : ĠLoader Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck MainThread () ĊĊĠĠĠĠĠĠĠ Ġval Ġremote Request Ġ= ĠRemote Request ( url , Ġcache Dir , Ġconverter Type ) ĊĠĠĠĠĠĠĠ Ġval Ġstore Ġ= Ġmodule . get Remote Store < K , ĠV >() ĊĠĠĠĠĠĠĠ Ġload ( remote Request , Ġstore , Ġcallback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġoverride Ġfun Ġ< K , ĠV > Ġload From Local ( path : ĠString , Ġcontext : ĠContext , Ġconverter Type : ĠConverter Type , ĊĠĠĠĠĠĠĠ Ġcallback : ĠLoader Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck MainThread () ĊĊĠĠĠĠĠĠĠ Ġval Ġlocal Request Ġ= ĠLocal Request ( context , Ġpath , Ġconverter Type ) ĊĠĠĠĠĠĠĠ Ġval Ġstore Ġ= Ġmodule . getLocal Store < K , ĠV >() ĊĠĠĠĠĠĠĠ Ġload ( local Request , Ġstore , Ġcallback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< K , ĠV > Ġload ( request : ĠRequest , Ġstore : ĠStore . Async Store < K , ĠV >, Ġcallback : ĠLoader Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstore . fetch ( request , Ġcallback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< K , ĠV > Ġget ( key : ĠK ): ĠV ? Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck MainThread () ĊĊĠĠĠĠĠĠĠ Ġval Ġstore Ġ= Ġmodule . get Memory Store < K , ĠV >() ĊĠĠĠĠĠĠĠ Ġreturn Ġstore . get ( key ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġoverride Ġfun Ġ< K , ĠV > Ġclear (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck MainThread () ĊĊĠĠĠĠĠĠĠ Ġval Ġstore Ġ= Ġmodule . get Memory Store < K , ĠV >() ĊĠĠĠĠĠĠĠ Ġreturn Ġstore . clear () ĊĠĠĠ Ġ} Ċ } Ċ