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 interface
SafeStmtPtr.SafePtrConsumer<E extends Throwable>
static interface
SafeStmtPtr.SafePtrDoubleFunction<E extends Throwable>
static interface
SafeStmtPtr.SafePtrFunction<T,E extends Throwable>
static interface
SafeStmtPtr.SafePtrIntFunction<E extends Throwable>
static interface
SafeStmtPtr.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 int
close()
Close this pointerboolean
equals(Object o)
int
hashCode()
boolean
isClosed()
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 SQLException
Close 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
-
-