Package org.sqlite.core
Class SafeStmtPtr
- java.lang.Object
-
- org.sqlite.core.SafeStmtPtr
-
public class SafeStmtPtr extends java.lang.ObjectA 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 java.lang.Throwable>static interfaceSafeStmtPtr.SafePtrDoubleFunction<E extends java.lang.Throwable>static interfaceSafeStmtPtr.SafePtrFunction<T,E extends java.lang.Throwable>static interfaceSafeStmtPtr.SafePtrIntFunction<E extends java.lang.Throwable>static interfaceSafeStmtPtr.SafePtrLongFunction<E extends java.lang.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 pointerprivate voidensureOpen()booleanequals(java.lang.Object o)inthashCode()private intinternalClose()booleanisClosed()Check whether this pointer has been closed<T,E extends java.lang.Throwable>
TsafeRun(SafeStmtPtr.SafePtrFunction<T,E> run)Run a callback with the wrapped pointer safely.<E extends java.lang.Throwable>
voidsafeRunConsume(SafeStmtPtr.SafePtrConsumer<E> run)Run a callback with the wrapped pointer safely.<E extends java.lang.Throwable>
doublesafeRunDouble(SafeStmtPtr.SafePtrDoubleFunction<E> run)Run a callback with the wrapped pointer safely.<E extends java.lang.Throwable>
intsafeRunInt(SafeStmtPtr.SafePtrIntFunction<E> run)Run a callback with the wrapped pointer safely.<E extends java.lang.Throwable>
longsafeRunLong(SafeStmtPtr.SafePtrLongFunction<E> run)Run a callback with the wrapped pointer safely.
-
-
-
Field Detail
-
db
private final DB db
-
ptr
private final long ptr
-
closed
private volatile boolean closed
-
closedRC
private int closedRC
-
closeException
private java.sql.SQLException closeException
-
-
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 java.sql.SQLExceptionClose this pointer- Returns:
- the return code of the close callback function
- Throws:
java.sql.SQLException- if the close callback throws an SQLException, or the pointer is locked elsewhere
-
internalClose
private int internalClose() throws java.sql.SQLException- Throws:
java.sql.SQLException
-
safeRunInt
public <E extends java.lang.Throwable> int safeRunInt(SafeStmtPtr.SafePtrIntFunction<E> run) throws java.sql.SQLException, E extends java.lang.Throwable
Run a callback with the wrapped pointer safely.- Parameters:
run- the function to run- Returns:
- the return of the passed in function
- Throws:
java.sql.SQLException- if the pointer is utilized elsewhereE extends java.lang.Throwable
-
safeRunLong
public <E extends java.lang.Throwable> long safeRunLong(SafeStmtPtr.SafePtrLongFunction<E> run) throws java.sql.SQLException, E extends java.lang.Throwable
Run a callback with the wrapped pointer safely.- Parameters:
run- the function to run- Returns:
- the return of the passed in function
- Throws:
java.sql.SQLException- if the pointer is utilized elsewhereE extends java.lang.Throwable
-
safeRunDouble
public <E extends java.lang.Throwable> double safeRunDouble(SafeStmtPtr.SafePtrDoubleFunction<E> run) throws java.sql.SQLException, E extends java.lang.Throwable
Run a callback with the wrapped pointer safely.- Parameters:
run- the function to run- Returns:
- the return of the passed in function
- Throws:
java.sql.SQLException- if the pointer is utilized elsewhereE extends java.lang.Throwable
-
safeRun
public <T,E extends java.lang.Throwable> T safeRun(SafeStmtPtr.SafePtrFunction<T,E> run) throws java.sql.SQLException, E extends java.lang.Throwable
Run a callback with the wrapped pointer safely.- Parameters:
run- the function to run- Returns:
- the return code of the function
- Throws:
java.sql.SQLException- if the pointer is utilized elsewhereE extends java.lang.Throwable
-
safeRunConsume
public <E extends java.lang.Throwable> void safeRunConsume(SafeStmtPtr.SafePtrConsumer<E> run) throws java.sql.SQLException, E extends java.lang.Throwable
Run a callback with the wrapped pointer safely.- Parameters:
run- the function to run- Throws:
java.sql.SQLException- if the pointer is utilized elsewhereE extends java.lang.Throwable
-
ensureOpen
private void ensureOpen() throws java.sql.SQLException- Throws:
java.sql.SQLException
-
equals
public boolean equals(java.lang.Object o)
- Overrides:
equalsin classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
-