Library: SQLite
Package: SQLite
Header: Poco/Data/SQLite/Notifier.h
Notifier is a wrapper for SQLite callback calls. It supports event callbacks for insert, update, delete, commit and rollback events. While (un)registering callbacks is thread-safe, execution of the callbacks themselves are not; it is the user's responsibility to ensure the thread-safey of the functions they provide as callback target. Additionally, commit callbacks may prevent database transactions from succeeding (see sqliteCommitCallbackFn documentation for details).
There can be only one set of callbacks per session (i.e. registering a new callback automatically unregisters the previous one). All callbacks are registered and enabled at Notifier contruction time and can be disabled at a later point time.
Member Functions: commitEnabled, disableAll, disableCommit, disableRollback, disableUpdate, enableAll, enableCommit, enableRollback, enableUpdate, getRow, getValue, operator ==, rollbackEnabled, setRow, setValue, sqliteCommitCallbackFn, sqliteRollbackCallbackFn, sqliteUpdateCallbackFn, updateEnabled
typedef unsigned char EnabledEventType;
A type definition for events-enabled bitmap.
typedef Poco::BasicEvent < void > Event;
Notifier(
const Session & session,
EnabledEventType enabled = SQLITE_NOTIFY_UPDATE | SQLITE_NOTIFY_COMMIT | SQLITE_NOTIFY_ROLLBACK
);
Creates a Notifier and enables all callbacks.
Notifier(
const Session & session,
const Any & value,
EnabledEventType enabled = SQLITE_NOTIFY_UPDATE | SQLITE_NOTIFY_COMMIT | SQLITE_NOTIFY_ROLLBACK
);
Creates a Notifier, assigns the value to the internal storage and and enables all callbacks.
~Notifier();
Disables all callbacks and destroys the Notifier.
bool commitEnabled() const;
Returns true if update callbacks are enabled, false otherwise.
bool disableAll();
Disables all callbacks.
bool disableCommit();
Disables commit callbacks.
bool disableRollback();
Disables rollback callbacks.
bool disableUpdate();
Disables update callbacks.
bool enableAll();
Enables all callbacks.
bool enableCommit();
Enables commit callbacks.
bool enableRollback();
Enables rollback callbacks.
bool enableUpdate();
Enables update callbacks.
Poco::Int64 getRow() const;
Returns the row number.
const Poco::Dynamic::Var & getValue() const;
Returns the value.
bool operator == (
const Notifier & other
) const;
Equality operator. Compares value, row and database handles and returns true if and only if all are equal.
bool rollbackEnabled() const;
Returns true if rollback callbacks are enabled, false otherwise.
void setRow(
Poco::Int64 row
);
Sets the row number.
template < typename T > inline void setValue(
const T & val
);
Sets the value.
static int sqliteCommitCallbackFn(
void * pVal
);
Commit callback event dispatcher. If an exception occurs, it is catched inside this function, non-zero value is returned, which causes SQLite engine to turn commit into a rollback. Therefore, callers should check for return value - if it is zero, callback completed succesfuly and transaction was committed.
static void sqliteRollbackCallbackFn(
void * pVal
);
Rollback callback event dispatcher.
static void sqliteUpdateCallbackFn(
void * pVal,
int opCode,
const char * pDB,
const char * pTable,
Poco::Int64 row
);
Update callback event dispatcher. Determines the type of the event, updates the row number and triggers the event.
bool updateEnabled() const;
Returns true if update callbacks are enabled, false otherwise.
static const EnabledEventType SQLITE_NOTIFY_COMMIT = 2;
static const EnabledEventType SQLITE_NOTIFY_ROLLBACK = 4;
static const EnabledEventType SQLITE_NOTIFY_UPDATE = 1;
Event commit;
Event erase;
Event insert;
Event rollback;
Event update;