package Ġpw . bin om . db . sqlite Ċ Ċ import Ġpw . bin om . atomic . Atomic Boolean Ċ import Ġpw . bin om . concurrency .* Ċ import Ġpw . bin om . coroutine . start Ċ import Ġpw . bin om . db . Transaction Mode Ċ import Ġpw . bin om . db . async . Async Connection Ċ import Ġpw . bin om . db . async . Async PreparedStatement Ċ import Ġpw . bin om . db . async . Async Statement Ċ import Ġpw . bin om . db . async . Database Info Ċ import Ġpw . bin om . db . sync . Sync Connection Ċ import Ġpw . bin om . do Freeze Ċ import Ġpw . bin om . io . use Ċ import Ġpw . bin om . never Freeze Ċ Ċ class ĠAsync Connection Adapter Ġprivate Ġconstructor ( val Ġworker : ĠWorker , Ġval Ġconnection : ĠReference < Sync Connection >) Ġ: ĊĠĠĠ ĠAsync Connection Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġcreate ( creator : Ġ() Ġ-> ĠSync Connection ): ĠAsync Connection Adapter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġw Ġ= ĠWorker . create () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreator . do Freeze () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġref Ġ= Ġw . start Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreator (). as Reference () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAsync Connection Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworker Ġ= Ġw , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Ġ= Ġref ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġval Ġbusy Ġ= ĠAtomic Boolean ( false ) ĊĊĠĠĠ Ġoverride Ġval Ġis Connected : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= Ġconnection ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġworker . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . value . isConnected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. join AndGet OrThrow () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġdb Info : ĠDatabase Info ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠSQLite SQL Database Info ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġset Transaction Mode ( mode : ĠTransaction Mode ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= Ġconnection ĊĠĠĠĠĠĠĠ Ġwhen Ġ( mode ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Mode . SERIAL IZ ABLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworker . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . value . createStatement (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . executeQuery (" PR AG MA Ġread _ un committed Ġ= Ġfalse ; ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTransaction Mode . READ _ UN COMMIT TED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworker . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . value . createStatement (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . executeQuery (" PR AG MA Ġread _ un committed Ġ= Ġtrue ; ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" SQL Ġnot Ġsupport Ġtransaction Ġisolation Ġmode Ġ$ mode ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ_ transaction Mode Ġ= Ġmode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġ_ transaction Mode : ĠTransaction Mode Ġ= ĠTransaction Mode . SERIAL IZ ABLE ĊĊĠĠĠ Ġoverride Ġval Ġtransaction Mode : ĠTransaction Mode ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ transaction Mode ĊĊĠĠĠ Ġoverride Ġval Ġtype : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= Ġconnection ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġworker . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . value . type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. join AndGet OrThrow () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġasync Close () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= Ġconnection ĊĠĠĠĠĠĠĠ Ġworker . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . value . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconnection . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġcommit () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! transaction Started ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Transaction Ġnot Ġstarted ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= Ġconnection ĊĠĠĠĠĠĠĠ Ġworker . execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . value . commit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtransaction Started Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġcreate Statement (): ĠAsync Statement Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= Ġconnection ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġworker . start Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . value . createStatement (). as Reference () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠAsync Statement Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref Ġ= Ġresult , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworker Ġ= Ġworker , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Ready For Query (): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġ! busy . value ĊĊĠĠĠ Ġprivate Ġvar Ġtransaction Started Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġbegin Transaction () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( transaction Started ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Transaction Ġalready Ġstarted ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= Ġconnection ĊĠĠĠĠĠĠĠ Ġworker . start Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . value . createStatement (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . executeUpdate (" begin ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtransaction Started Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġprepare Statement ( query : ĠString ): ĠAsync PreparedStatement Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= Ġconnection ĊĠĠĠĠĠĠĠ Ġval Ġref Ġ= Ġworker . start Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . value . prepareStatement ( query ). as Reference () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠAsync PreparedStatement Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġref Ġ= Ġref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġworker Ġ= Ġworker , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnection Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġrollback () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! transaction Started ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Transaction Ġnot Ġstarted ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= Ġconnection ĊĠĠĠĠĠĠĠ Ġworker . start Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . value . rollback () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtransaction Started Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġnever Freeze () ĊĠĠĠ Ġ} Ċ }