Package org.sqlite.core
Class SafeStmtPtr
- java.lang.Object
-
- org.sqlite.core.SafeStmtPtr
-
public class SafeStmtPtr extends Object
A class for safely wrapping calls to a native pointer to a statement, ensuring no other thread has access to the pointer while it is run
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceSafeStmtPtr.SafePtrConsumer<E extends Throwable>static interfaceSafeStmtPtr.SafePtrDoubleFunction<E extends Throwable>static interfaceSafeStmtPtr.SafePtrFunction<T,E extends Throwable>static interfaceSafeStmtPtr.SafePtrIntFunction<E extends Throwable>static interfaceSafeStmtPtr.SafePtrLongFunction<E extends Throwable>
-
Constructor Summary
Constructors Constructor Description SafeStmtPtr(DB db, long ptr)Construct a new Safe Pointer Wrapper to ensure a pointer is properly handled
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intclose()Close this pointerbooleanequals(Object o)inthashCode()booleanisClosed()Check whether this pointer has been closed<T,E extends Throwable>
TsafeRun(SafeStmtPtr.SafePtrFunction<T,E> run)Run a callback with the wrapped pointer safely.<E extends Throwable>
voidsafeRunConsume(SafeStmtPtr.SafePtrConsumer<E> run)Run a callback with the wrapped pointer safely.<E extends Throwable>
doublesafeRunDouble(SafeStmtPtr.SafePtrDoubleFunction<E> run)Run a callback with the wrapped pointer safely.<E extends Throwable>
intsafeRunInt(SafeStmtPtr.SafePtrIntFunction<E> run)Run a callback with the wrapped pointer safely.<E extends Throwable>
longsafeRunLong(SafeStmtPtr.SafePtrLongFunction<E> run)Run a callback with the wrapped pointer safely.
-
-
-
Constructor Detail
-
SafeStmtPtr
public SafeStmtPtr(DB db, long ptr)
Construct a new Safe Pointer Wrapper to ensure a pointer is properly handled- Parameters:
db- the database that made this pointer. Always locked before any safe run function is executed to avoid deadlocksptr- the raw pointer
-
-
Method Detail
-
isClosed
public boolean isClosed()
Check whether this pointer has been closed- Returns:
- whether this pointer has been closed
-
close
public int close() throws SQLExceptionClose this pointer- Returns:
- the return code of the close callback function
- Throws:
SQLException- if the close callback throws an SQLException, or the pointer is locked elsewhere
-
safeRunInt
public <E extends Throwable> int safeRunInt(SafeStmtPtr.SafePtrIntFunction<E> run) throws SQLException, E extends Throwable
Run a callback with the wrapped pointer safely.- Parameters:
run- the function to run- Returns:
- the return of the passed in function
- Throws:
SQLException- if the pointer is utilized elsewhereE extends Throwable
-
safeRunLong
public <E extends Throwable> long safeRunLong(SafeStmtPtr.SafePtrLongFunction<E> run) throws SQLException, E extends Throwable
Run a callback with the wrapped pointer safely.- Parameters:
run- the function to run- Returns:
- the return of the passed in function
- Throws:
SQLException- if the pointer is utilized elsewhereE extends Throwable
-
safeRunDouble
public <E extends Throwable> double safeRunDouble(SafeStmtPtr.SafePtrDoubleFunction<E> run) throws SQLException, E extends Throwable
Run a callback with the wrapped pointer safely.- Parameters:
run- the function to run- Returns:
- the return of the passed in function
- Throws:
SQLException- if the pointer is utilized elsewhereE extends Throwable
-
safeRun
public <T,E extends Throwable> T safeRun(SafeStmtPtr.SafePtrFunction<T,E> run) throws SQLException, E extends Throwable
Run a callback with the wrapped pointer safely.- Parameters:
run- the function to run- Returns:
- the return code of the function
- Throws:
SQLException- if the pointer is utilized elsewhereE extends Throwable
-
safeRunConsume
public <E extends Throwable> void safeRunConsume(SafeStmtPtr.SafePtrConsumer<E> run) throws SQLException, E extends Throwable
Run a callback with the wrapped pointer safely.- Parameters:
run- the function to run- Throws:
SQLException- if the pointer is utilized elsewhereE extends Throwable
-
-