package Ġorg . kode in . db . level db ĊĊ Ċ import Ġorg . kode in . log . LoggerFactory Ċ import Ġorg . kode in . memory . Closeable Ċ import Ġorg . kode in . memory . io . Allocation Ċ import Ġorg . kode in . memory . io . Read Memory Ċ Ċ /** Ċ Ġ* ĠGoogle 's ĠLevel DB Ġin ĠJava . Ċ Ġ* Ċ Ġ* ĠThis Ġinterface Ġallows Ġthe Ġuse Ġof Ġdifferent Ġimplementations Ġof ĠLevel DB . Ċ Ġ*/ Ċ public Ġinterface ĠLevel DB Ġ: ĠClose able Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġpath Ġof Ġthe ĠDB . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġval Ġpath : ĠString ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPut Ġan Ġentry Ġinto Ġthe Ġdatabase . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠThe Ġkey Ġof Ġthe Ġentry Ġto Ġput . ĊĠĠĠĠ Ġ* Ġ@ param Ġvalue ĠThe Ġvalue Ġov Ġthe Ġentry Ġto Ġput . ĊĠĠĠĠ Ġ* Ġ@ param Ġoptions ĠOptions Ġthat Ġcontrol Ġthis Ġwrite Ġoperation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġput ( key : ĠRead Memory , Ġvalue : ĠRead Memory , Ġoptions : ĠWrite Options Ġ= ĠWrite Options . DEFAULT ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDelete Ġan Ġentry Ġfrom Ġthe Ġdatabase . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠThe Ġkey Ġof Ġthe Ġentry Ġto Ġdelete . ĊĠĠĠĠ Ġ* Ġ@ param Ġoptions ĠOptions Ġthat Ġcontrol Ġthis Ġwrite Ġoperation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġdelete ( key : ĠRead Memory , Ġoptions : ĠWrite Options Ġ= ĠWrite Options . DEFAULT ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWrite Ġa Ġbatch Ġatom ically Ġto Ġthe Ġdatabase . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠAll Ġmodifications Ġthat Ġwere Ġregister d Ġin Ġthat Ġbatch Ġwill Ġbe Ġreflected Ġinto Ġthe Ġdatabase Ġat Ġonce . ĊĠĠĠĠ Ġ* ĠIt Ġis Ġtherefore Ġimpossible Ġto Ġcreate Ġa ĠSnapshot Ġof Ġthe Ġdatabase Ġthat Ġcontains Ġonly Ġparts Ġof Ġthe Ġmodifications . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġ. New Write Batch ĊĠĠĠĠ Ġ* Ġ@ see ĠWrite Batch ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġbatch ĠThe Ġbatch Ġto Ġwrite . ĊĠĠĠĠ Ġ* Ġ@ param Ġoptions ĠOptions Ġthat Ġcontrol Ġthis Ġwrite Ġoperation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġwrite ( batch : ĠWrite Batch , Ġoptions : ĠWrite Options Ġ= ĠWrite Options . DEFAULT ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġan Ġentry Ġvalue Ġbytes Ġfrom Ġthe Ġdatabase Ġfrom Ġits Ġkey . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Warning **: ĠThe Ġreturned Ġbytes Ġare Ġ` Closeable ` ! ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġkey ĠThe Ġkey Ġof Ġthe Ġentry Ġto Ġget . ĊĠĠĠĠ Ġ* Ġ@ param Ġoptions ĠOptions Ġthat Ġcontrol Ġthis Ġread Ġoperation . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġentry Ġvalue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġget ( key : ĠRead Memory , Ġoptions : ĠRead Options Ġ= ĠRead Options . DEFAULT ): ĠAl location ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew ĠCursor . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Warning **: ĠC urs ors Ġare Ġ` Closeable ` ! ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠNote Ġthat , Ġif Ġsnapshot Ġis Ġnull , Ġyou Ġcan Ġiterate Ġon Ġentries Ġthat Ġwere Ġinserted Ġafter Ġthe Ġcreation Ġof Ġthe ĠCursor . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠCursor ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġoptions ĠOptions Ġthat Ġcontrol Ġthis ĠC urs ors Ġread Ġoperations . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġnew ĠCursor . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġnew Cursor ( options : ĠRead Options Ġ= ĠRead Options . DEFAULT ): ĠCursor ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew ĠSnapshot . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Warning **: ĠSnapshot s Ġare Ġ` Closeable ` ! ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠSnapshot ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġ. Write ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġnew ĠSnapshot . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġnew Snapshot (): ĠSnapshot ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġa Ġnew ĠWrite Batch . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ** Warning **: ĠWrite B atches Ġare Ġ` Closeable ` ! ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see ĠWrite Batch ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġ. Write ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġnew ĠWrite Batch . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġnew Write Batch (): ĠWrite Batch ĊĊĠĠĠ Ġpublic Ġcompanion Ġobject Ġ{} ĊĊĠĠĠ Ġ// ĠTODO : ĠAdd Ġthese Ġmethods Ċ // ĠĠĠ Ġ/** Ċ // ĠĠĠĠ Ġ* ĠDB Ġimplementations Ġcan Ġexport Ġproperties Ġabout Ġtheir Ġstate Ġvia Ġthis Ġmethod . Ċ // ĠĠĠĠ Ġ* Ċ // ĠĠĠĠ Ġ* Ġ@ return ĠThe Ġvalue Ġof Ġthe Ġproperty , Ġif Ġfound . Ċ // ĠĠĠ Ġ*/ Ċ // ĠĠĠ Ġfun ĠgetProperty (): ĠAl location ? Ċ // Ċ // ĠĠĠ Ġ/** Ċ // ĠĠĠĠ Ġ* ĠComp act Ġthe Ġunderlying Ġstorage Ġfor Ġthe Ġkey Ġrange Ġ[ begin , end ]. Ċ // ĠĠĠĠ Ġ* Ċ // ĠĠĠĠ Ġ* ĠThe Ġcompact Range ( null , Ġnull ) Ġwill Ġcompact Ġthe Ġentire Ġdatabase . Ċ // ĠĠĠĠ Ġ* Ċ // ĠĠĠĠ Ġ* Ġ@ param Ġbegin ĠThe Ġbeginning Ġof Ġthe Ġrange , Ġor Ġnull Ġto Ġstart Ġat Ġthe Ġfirst Ġkey . Ċ // ĠĠĠĠ Ġ* Ġ@ param Ġlimit ĠThe Ġinclusive Ġlimit Ġof Ġthe Ġrange , Ġor Ġnull Ġto Ġend Ġat Ġthe Ġlast Ġkey . Ċ // ĠĠĠĠ Ġ*/ Ċ // ĠĠĠ Ġfun Ġcompact Range ( begin : ĠBytes ?, Ġlimit : ĠBytes ?) Ċ // Ċ // ĠĠĠ Ġ/** Ċ // ĠĠĠĠ Ġ* ĠThe Ġapproximate Ġfile Ġsystem Ġspace Ġused Ġby Ġkeys Ġin Ġeach Ġrange Ġ( inclusive ) Ċ // ĠĠĠĠ Ġ* Ċ // ĠĠĠĠ Ġ* ĠThe Ġresults Ġmay Ġnot Ġinclude Ġthe Ġsizes Ġof Ġrecently Ġwritten Ġdata . Ċ // ĠĠĠĠ Ġ* Ċ // ĠĠĠĠ Ġ* Ġ@ param Ġranges ĠA Ġlist Ġof Ġinclusive Ġranges Ġto Ġget Ġtheir Ġsizes . Ċ // ĠĠĠĠ Ġ* Ġ@ return ĠThe Ġcorresponding Ġlist Ġof Ġsizes . Ċ // ĠĠĠĠ Ġ*/ Ċ // ĠĠĠ Ġfun Ġget Approx imate Sizes ( ranges : ĠList < Pair < Byte , ĠByte >> ): ĠArray < Int > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA ĠWrite Batch Ġis Ġa Ġwrite Ġonly Ġobject . ĊĠĠĠĠ Ġ* ĠWhen Ġwriting Ġon Ġthe Ġbatch , Ġthe Ġdatabase Ġis Ġ** not ** Ġreflected . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠAll Ġthe Ġmodifications Ġthat Ġare Ġdone Ġusing Ġthis Ġbatch Ġwill Ġbe Ġactually Ġreflected Ġonto Ġthe Ġdatabase Ġwhen Ġcalling ĠWrite Ġwith Ġit . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġ. New Write Batch ĊĠĠĠĠ Ġ* Ġ@ see Ġ. Write ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġinterface ĠWrite Batch Ġ: ĠClose able Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRegisters Ġan Ġentry Ġto Ġbe Ġput Ġinto Ġthe Ġdatabase . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġkey ĠThe Ġkey Ġof Ġthe Ġentry Ġto Ġput . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue ĠThe Ġvalue Ġov Ġthe Ġentry Ġto Ġput . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġput ( key : ĠRead Memory , Ġvalue : ĠRead Memory ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRegisters Ġa Ġkey Ġwhose Ġentry Ġis Ġto Ġbe Ġdeleted Ġfrom Ġthe Ġdatabase . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġkey ĠThe Ġkey Ġof Ġthe Ġentry Ġto Ġdelete . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġdelete ( key : ĠRead Memory ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠClear Ġall Ġupdates Ġbuffered Ġin Ġthis Ġbatch . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġclear () ĊĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġappend ( source : ĠWrite Batch ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠAdd Ġthese Ġmethods Ċ // ĠĠĠĠĠĠĠ Ġinterface ĠHandler Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġput ( key : ĠBytes , Ġvalue : ĠBytes ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġdelete ( key : ĠBytes , Ġvalue : ĠBytes ) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġfun Ġiterate ( handler : ĠHandler ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġfun Ġget Approx imate Size () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġsnapshot Ġis Ġa Ġread - only Ġview Ġof Ġthe Ġdatabase Ġat Ġthe Ġmoment Ġit Ġis Ġcreated . ĊĠĠĠĠ Ġ* ĠL ater Ġmodifications Ġto Ġthe Ġdatabase Ġwill Ġnot Ġbe Ġreflected Ġto Ġthe Ġsnapshot . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ see Ġ. New Snapshot ĊĠĠĠĠ Ġ* Ġ@ see Ġ. Write ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġinterface ĠSnapshot Ġ: ĠClose able ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAn ĠCursor Ġto Ġiterate Ġover Ġthe Ġentries Ġof Ġa Ġdatabase Ġor Ġa ĠSnapshot . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġinterface ĠCursor Ġ: ĠClose able Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠWhether Ġor Ġnot Ġthe Ġcursor Ġis Ġin Ġa Ġvalid Ġstate . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun ĠisValid (): ĠBoolean ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPosition Ġthe Ġcursor Ġon Ġthe Ġfirst Ġentry Ġof Ġthe Ġdatabase . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġseek To First () ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPosition Ġthe Ġcursor Ġon Ġthe Ġlast Ġentry Ġof Ġthe Ġdatabase . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġseek To Last () ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPosition Ġthe Ġcursor Ġto Ġthe Ġentry Ġcorresponding Ġto Ġthe Ġprovided Ġkey Ġinside Ġthe Ġdatabase . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġthe Ġkey Ġdoes Ġnot Ġexists , Ġit Ġwill Ġbe Ġposition ed Ġto Ġthe Ġnext Ġvalid Ġentry Ġwhose Ġkey Ġwould Ġbe Ġplaced Ġafter Ġthe Ġprovided Ġkey . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġtarget ĠThe Ġkey Ġto Ġseek Ġto . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġseek To ( target : ĠRead Memory ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPosition Ġthe Ġcursor Ġon Ġthe Ġentry Ġright Ġnext Ġafter Ġthe Ġcurrent Ġone . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠNote Ġthat Ġif Ġthis Ġcursor Ġwas Ġcreated Ġwithout Ġa ĠSnapshot , Ġit Ġcan Ġbe Ġposition ned Ġon Ġan Ġentry Ġthat Ġwere Ġinserted Ġafter Ġthe Ġcreation Ġof Ġthe Ġcursor . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġnext () ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPosition Ġthe Ġcursor Ġon Ġthe Ġentry Ġright Ġbefore Ġthe Ġcurrent Ġone . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠNote Ġthat Ġif Ġthis Ġcursor Ġwas Ġcreated Ġwithout Ġa ĠSnapshot , Ġit Ġcan Ġbe Ġposition ned Ġon Ġan Ġentry Ġthat Ġwere Ġinserted Ġafter Ġthe Ġcreation Ġof Ġthe Ġcursor . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġprev () ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet Ġa ĠBuffer Ġcontaining Ġthe Ġcurrent Ġkey . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠNote Ġthat Ġthis ĠBuffer Ġis Ġvalid Ġ** as Ġlong Ġas Ġthe Ġcursor Ġis Ġnot Ġmoved **. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠThe Ġkey Ġbytes . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġtransient Key (): ĠRead Memory ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGet Ġa ĠBuffer Ġcontaining Ġthe Ġcurrent Ġvalue . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠNote Ġthat Ġthis ĠBuffer Ġis Ġvalid Ġ** as Ġlong Ġas Ġthe Ġcursor Ġis Ġnot Ġmoved **. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠThe Ġvalue Ġbytes . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġpublic Ġfun Ġtransient Value (): ĠRead Memory ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġclose () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDefines Ġhow Ġto Ġreact Ġif Ġthe Ġdatabase Ġexists Ġor Ġnot . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġenum Ġclass ĠOpen Policy ( public Ġval Ġcreate If Missing : ĠBoolean , Ġpublic Ġval Ġerror IfExists : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠOpen Ġthe Ġdatabase Ġif Ġit Ġexists , Ġfail Ġotherwise . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠOPEN ( create If Missing Ġ= Ġfalse , Ġerror IfExists Ġ= Ġfalse ), ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreate Ġa Ġnew Ġdatabase Ġif Ġit Ġdoes Ġnot Ġexist , Ġthen Ġopen Ġit . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠOPEN _ OR _ CREATE ( create If Missing Ġ= Ġtrue , Ġerror IfExists Ġ= Ġfalse ), ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreate Ġa Ġnew Ġdatabase Ġif Ġit Ġdoes Ġnot Ġexist , Ġfail Ġotherwise . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠCREATE ( create If Missing Ġ= Ġtrue , Ġerror IfExists Ġ= Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOptions Ġto Ġcontrol Ġthe Ġbehavior Ġof Ġa Ġdatabase . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġdata Ġclass ĠOptions ĊĠĠĠ Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠDefines Ġhow Ġto Ġreact Ġif Ġthe Ġdatabase Ġexists Ġor Ġnot . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ( Default : ĠOpen Policy . OPEN _ OR _ CREATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ@ see ĠOpen Policy ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġopen Policy : ĠOpen Policy Ġ= ĠOpen Policy . OPEN _ OR _ CREATE , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġtrue , Ġthe Ġimplementation Ġwill Ġdo Ġag gressive Ġchecking Ġof Ġthe Ġdata Ġit Ġis Ġprocessing Ġand Ġwill Ġstop Ġearly Ġif Ġit Ġdetect s Ġany Ġerrors . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġmay Ġhave Ġun fore seen Ġram ifications : Ġfor Ġexample , Ġa Ġcor ruption Ġof Ġone ĠDB Ġentry Ġmay Ġcause Ġa Ġlarge Ġnumber Ġof Ġentries Ġto Ġbecome Ġun readable Ġor Ġfor Ġthe Ġentire ĠDB Ġto Ġbecome Ġun open able . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ( Default : Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpar an oid Checks : ĠBoolean Ġ= Ġfalse , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġtrue , Ġthe ĠLevel DB Ġimplementation Ġwill Ġprint Ġinternal Ġlogs . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġsever ly Ġslow s Ġthe Ġdatabase Ġand Ġshould Ġnever Ġbe Ġset Ġin Ġproduction . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ( Default : Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprint Logs : ĠBoolean Ġ= Ġfalse , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠAmount Ġof Ġdata Ġto Ġbuild Ġup Ġin Ġmemory Ġ( back ed Ġby Ġan Ġun sorted Ġlog Ġon Ġdisk ) Ġbefore Ġconverting Ġto Ġa Ġsorted Ġon - disk Ġfile . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠL arger Ġvalues Ġincrease Ġperformance , Ġespecially Ġduring Ġbulk Ġloads . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠUp Ġto Ġtwo Ġwrite Ġbuffers Ġmay Ġbe Ġheld Ġin Ġmemory Ġat Ġthe Ġsame Ġtime , Ġso Ġyou Ġmay Ġwish Ġto Ġadjust Ġthis Ġparameter Ġto Ġcontrol Ġmemory Ġusage . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠAlso , Ġa Ġlarger Ġwrite Ġbuffer Ġwill Ġresult Ġin Ġa Ġlonger Ġrecovery Ġtime Ġthe Ġnext Ġtime Ġthe Ġdatabase Ġis Ġopened . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ( Default : Ġ 4 MB ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwrite BufferSize : ĠInt Ġ= Ġ 4 Ġshl Ġ 2 0 , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠNumber Ġof Ġopen Ġfiles Ġthat Ġcan Ġbe Ġused Ġby Ġthe ĠDB . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠYou Ġmay Ġneed Ġto Ġincrease Ġthis Ġif Ġyour Ġdatabase Ġhas Ġa Ġlarge Ġworking Ġset Ġ( budget Ġone Ġopen Ġfile Ġper Ġ 2 MB Ġof Ġworking Ġset ). ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ( Default : Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax Open Files : ĠInt Ġ= Ġ 1 0 0 0 , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠSize Ġof Ġthe ĠL RU Ġcache ĠLevel DB Ġwill Ġuse Ġto Ġprevent Ġun needed Ġdisk Ġaccess . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ( Default : Ġ 8 MB ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcache Size : ĠInt Ġ= Ġ 8 Ġshl Ġ 2 0 , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠAppro x imate Ġsize Ġof Ġuser Ġdata Ġpacked Ġper Ġblock . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠNote Ġthat Ġthe Ġblock Ġsize Ġspecified Ġhere Ġcorresponds Ġto Ġun compressed Ġdata . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġactual Ġsize Ġof Ġthe Ġunit Ġread Ġfrom Ġdisk Ġmay Ġbe Ġsmaller Ġif Ġcompression Ġis Ġenabled . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġparameter Ġcan Ġbe Ġchanged Ġdynamically . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ( Default : Ġ 4 K ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠblockSize : ĠInt Ġ= Ġ 4 0 9 6 , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠNumber Ġof Ġkeys Ġbetween Ġrestart Ġpoints Ġfor Ġdelta Ġencoding Ġof Ġkeys . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠMost Ġclients Ġshould Ġleave Ġthis Ġparameter Ġalone . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġparameter Ġcan Ġbe Ġchanged Ġdynamically . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ( Default : Ġ 1 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġblock Restart Interval : ĠInt Ġ= Ġ 1 6 , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠLevel db Ġwill Ġwrite Ġup Ġto Ġthis Ġamount Ġof Ġbytes Ġto Ġa Ġfile Ġbefore Ġswitching Ġto Ġa Ġnew Ġone . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠMost Ġclients Ġshould Ġleave Ġthis Ġparameter Ġalone . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠHowever Ġif Ġyour Ġfilesystem Ġis Ġmore Ġefficient Ġwith Ġlarger Ġfiles , Ġyou Ġcould Ġconsider Ġincreasing Ġthe Ġvalue . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġdown side Ġwill Ġbe Ġlonger Ġcomp actions Ġand Ġhence Ġlonger Ġlatency / performance Ġh icc ups . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠAnother Ġreason Ġto Ġincrease Ġthis Ġparameter Ġmight Ġbe Ġwhen Ġyou Ġare Ġinitially Ġpop ulating Ġa Ġlarge Ġdatabase . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ( Default : Ġ 2 MB ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmax FileSize : ĠInt Ġ= Ġ 2 Ġshl Ġ 2 0 , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠWhether Ġto Ġcompress Ġblocks Ġusing Ġthe ĠSn appy Ġcompression Ġalgorithm . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠSn appy Ġcompression Ġgives Ġlightweight Ġbut Ġfast Ġcompression . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠTyp ical Ġspeed s Ġof ĠSn appy Ġcompression Ġon Ġan ĠIntel ( R ) ĠCore ( TM ) 2 Ġ 2 . 4 GH z : ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ- Ġ~ 2 0 0 - 5 0 0 MB / s Ġcompression ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ- Ġ~ 4 0 0 - 8 0 0 MB / s Ġde compression ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠNote Ġthat Ġthese Ġspeed s Ġare Ġsignificantly Ġfaster Ġthan Ġmost Ġpersistent Ġstorage Ġspeed s , Ġand Ġtherefore Ġit Ġis Ġtypically Ġnever Ġworth Ġswitching Ġoff . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠEven Ġif Ġthe Ġinput Ġdata Ġis Ġin compress ible , Ġthe ĠSn appy Ġcompression Ġimplementation Ġwill Ġefficiently Ġdetect Ġthat Ġand Ġwill Ġswitch Ġto Ġun compressed Ġmode . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġparameter Ġcan Ġbe Ġchanged Ġdynamically . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ( Default : Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsn appy Compression : ĠBoolean Ġ= Ġtrue , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠEX PERIMENT AL : ĠIf Ġtrue , Ġappend Ġto Ġexisting ĠMAN IFEST Ġand Ġlog Ġfiles ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġwhen Ġa Ġdatabase Ġis Ġopened . Ġ ĠThis Ġcan Ġsignificantly Ġspeed Ġup Ġopen . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠDefault : Ġcurrently Ġfalse , Ġbut Ġmay Ġbecome Ġtrue Ġlater . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreuse Logs : ĠBoolean Ġ= Ġfalse , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġnon - 0 , Ġuse Ġa ĠB loom Ġfilter Ġpolicy Ġto Ġreduce Ġdisk Ġreads . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠUses Ġa Ġb loom Ġfilter Ġwith Ġapproximately Ġthe Ġspecified Ġnumber Ġof Ġbits Ġper Ġkey . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠA Ġgood Ġvalue Ġis Ġ 1 0 , Ġwhich Ġyields Ġa Ġfilter Ġwith Ġ~ Ġ 1 % Ġfalse Ġpositive Ġrate . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ( Default : Ġ 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb loom Filter Bits Per Key : ĠInt Ġ= Ġ 1 0 , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġa ĠDB Ġcannot Ġbe Ġopened , Ġyou Ġmay Ġattempt Ġto Ġset Ġthis Ġto Ġtrue Ġto Ġres urre ct Ġas Ġmuch Ġof Ġthe Ġcontents Ġof Ġthe Ġdatabase Ġas Ġpossible . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠSome Ġdata Ġmay Ġbe Ġlost , Ġso Ġbe Ġcareful Ġwhen Ġsetting Ġthis Ġon Ġa Ġdatabase Ġthat Ġcontains Ġimportant Ġinformation . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrepair On Cor ruption : ĠBoolean Ġ= Ġfalse , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogger Factory : ĠLoggerFactory Ġ= ĠLoggerFactory . default , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrack C losable Allocation : ĠBoolean Ġ= Ġfalse , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfail On Bad Close : ĠBoolean Ġ= Ġfalse Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomparator : Ġ??? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpublic Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġval ĠDEFAULT : ĠOptions Ġ= ĠOptions () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOptions Ġthat Ġcontrol Ġread Ġoperations . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġdata Ġclass ĠRead Options ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġtrue , Ġall Ġdata Ġread Ġfrom Ġunderlying Ġstorage Ġwill Ġbe Ġverified Ġagainst Ġcorresponding Ġchecksum s . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ( Default : Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġverify Checksum s : ĠBoolean Ġ= Ġfalse , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠShould Ġthe Ġdata Ġread Ġfor Ġthis Ġiteration Ġbe Ġcached Ġin Ġmemory ? ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠCall ers Ġmay Ġwish Ġto Ġset Ġthis Ġfield Ġto Ġfalse Ġfor Ġbulk Ġscans . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ( Default : Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfill Cache : ĠBoolean Ġ= Ġtrue , ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġ" snapshot " Ġis Ġnon - NULL , Ġread Ġas Ġof Ġthe Ġsupplied Ġsnapshot Ġ( which Ġmust Ġbelong Ġto Ġthe ĠDB Ġthat Ġis Ġbeing Ġread Ġand Ġwhich Ġmust Ġnot Ġhave Ġbeen Ġreleased ). ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsnapshot : ĠSnapshot ? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpublic Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġval ĠDEFAULT : ĠRead Options Ġ= ĠRead Options () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOptions Ġthat Ġcontrol Ġwrite Ġoperations . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġdata Ġclass ĠWrite Options ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġtrue , Ġthe Ġwrite Ġwill Ġbe Ġfl ushed Ġfrom Ġthe Ġoperating Ġsystem Ġbuffer Ġcache Ġ( by Ġcalling ĠWrit able File :: Sync ()) Ġbefore Ġthe Ġwrite Ġis Ġconsidered Ġcomplete . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġthis Ġflag Ġis Ġtrue , Ġwrites Ġwill Ġbe Ġslower . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġthis Ġflag Ġis Ġfalse , Ġand Ġthe Ġmachine Ġcrashes , Ġsome Ġrecent Ġwrites Ġmay Ġbe Ġlost . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠNote Ġthat Ġif Ġit Ġis Ġjust Ġthe Ġprocess Ġthat Ġcrashes Ġ( i . e ., Ġthe Ġmachine Ġdoes Ġnot Ġreboot ), Ġno Ġwrites Ġwill Ġbe Ġlost Ġeven Ġif Ġsync == false . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠIn Ġother Ġwords , Ġa ĠDB Ġwrite Ġwith Ġsync == false Ġhas Ġsimilar Ġcrash Ġsemantics Ġas Ġthe Ġ" write ()" Ġsystem Ġcall . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠA ĠDB Ġwrite Ġwith Ġsync == true Ġhas Ġsimilar Ġcrash Ġsemantics Ġto Ġa Ġ" write ()" Ġsystem Ġcall Ġfollowed Ġby Ġ" fs ync () ". ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ( Default : Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsync : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpublic Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġval ĠDEFAULT : ĠWrite Options Ġ= ĠWrite Options () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ