package Ġwatch . craft . storage Ċ Ċ import Ġwatch . craft . executor . on Io Thread Ċ import Ġjava . io . File Ċ import Ġjava . io . FileNotFoundException Ċ Ċ class ĠLocal Object Store ( private Ġval Ġroot Dir : ĠFile ) Ġ: ĠObject Store Ġ{ ĊĠ Ġoverride Ġsuspend Ġfun Ġwrite ( key : ĠString , Ġcontent : ĠByteArray ) Ġ{ ĊĠĠĠ Ġon Io Thread Ġ{ ĊĠĠĠĠĠ Ġ// ĠTODO Ġ- Ġswitch Ġto ĠN IO Ġand Ġuse Ġcopy To Ġto Ġmake Ġthis Ġatomic ĊĠĠĠĠĠ Ġval Ġfile Ġ= Ġresolve File ( key ) ĊĠĠĠĠĠ Ġif Ġ( file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠFile Exists Exception ( file . toString ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġfile . parent File . mkdir s () ĊĠĠĠĠĠ Ġfile . write Bytes ( content ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġsuspend Ġfun Ġread ( key : ĠString ) Ġ= Ġon Io Thread Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġresolve File ( key ). read Bytes () ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠFileNotFoundException ) Ġ{ ĊĠĠĠĠĠ Ġthrow ĠFile Does nt Exist Exception ( key ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġsuspend Ġfun Ġlist ( key : ĠString ): ĠList < String > Ġ{ ĊĠĠĠ ĠTODO () ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġresolve File ( key : ĠString ) Ġ= Ġroot Dir . resolve ( key ) ĠĠ Ġ// ĠTODO Ġ- Ġmake Ġthis Ġsafe Ċ } Ċ