A C++ interface towards an SQLITE database. More...
#include "sqlite-output.h"
Inheritance diagram for ns3::SQLiteOutput:
Collaboration diagram for ns3::SQLiteOutput:Public Member Functions | |
| SQLiteOutput (const std::string &name, const std::string &semName) | |
| SQLiteOutput constructor. More... | |
| ~SQLiteOutput () | |
| Destructor. More... | |
| template<> | |
| bool | Bind (sqlite3_stmt *stmt, int pos, const double &value) const |
| Bind a value to a sqlite statement. More... | |
| template<> | |
| bool | Bind (sqlite3_stmt *stmt, int pos, const int &value) const |
| Bind a value to a sqlite statement. More... | |
| template<> | |
| bool | Bind (sqlite3_stmt *stmt, int pos, const long &value) const |
| Bind a value to a sqlite statement. More... | |
| template<> | |
| bool | Bind (sqlite3_stmt *stmt, int pos, const long long &value) const |
| Bind a value to a sqlite statement. More... | |
| template<> | |
| bool | Bind (sqlite3_stmt *stmt, int pos, const std::string &value) const |
| Bind a value to a sqlite statement. More... | |
| template<typename T > | |
| bool | Bind (sqlite3_stmt *stmt, int pos, const T &value) const |
| Bind a value to a sqlite statement. More... | |
| template<> | |
| bool | Bind (sqlite3_stmt *stmt, int pos, const Time &value) const |
| Bind a value to a sqlite statement. More... | |
| template<> | |
| bool | Bind (sqlite3_stmt *stmt, int pos, const uint16_t &value) const |
| Bind a value to a sqlite statement. More... | |
| template<> | |
| bool | Bind (sqlite3_stmt *stmt, int pos, const uint32_t &value) const |
| Bind a value to a sqlite statement. More... | |
| template<> | |
| bool | Bind (sqlite3_stmt *stmt, int pos, const uint8_t &value) const |
| Bind a value to a sqlite statement. More... | |
| template<> | |
| int | RetrieveColumn (sqlite3_stmt *stmt, int pos) const |
| Retrieve a value from an executed statement. More... | |
| template<typename T > | |
| T | RetrieveColumn (sqlite3_stmt *stmt, int pos) const |
| Retrieve a value from an executed statement. More... | |
| void | SetJournalInMemory () |
| Instruct SQLite to store the journal in memory. More... | |
| bool | SpinExec (const std::string &cmd) const |
| Execute a command until the return value is OK or an ERROR. More... | |
| bool | SpinExec (sqlite3_stmt *stmt) const |
| Execute a command until the return value is OK or an ERROR. More... | |
| bool | SpinPrepare (sqlite3_stmt **stmt, const std::string &cmd) const |
| Prepare a statement. More... | |
| bool | WaitExec (const std::string &cmd) const |
| Execute a command, waiting on a system semaphore. More... | |
| bool | WaitExec (sqlite3_stmt *stmt) const |
| Execute a command, waiting on a system semaphore. More... | |
| bool | WaitPrepare (sqlite3_stmt **stmt, const std::string &cmd) const |
| Prepare a statement, waiting on a system semaphore. More... | |
Public Member Functions inherited from ns3::SimpleRefCount< SQLiteOutput > | |
| SimpleRefCount () | |
| Default constructor. More... | |
| SimpleRefCount (const SimpleRefCount &o) | |
| Copy constructor. More... | |
| uint32_t | GetReferenceCount (void) const |
| Get the reference count of the object. More... | |
| SimpleRefCount & | operator= (const SimpleRefCount &o) |
| Assignment operator. More... | |
| void | Ref (void) const |
| Increment the reference count. More... | |
| void | Unref (void) const |
| Decrement the reference count. More... | |
Static Public Member Functions | |
| static int | SpinFinalize (sqlite3_stmt *stmt) |
| Finalize a statement until the result is ok or an error. More... | |
| static int | SpinReset (sqlite3_stmt *stmt) |
| Reset a statement until the result is ok or an error. More... | |
| static int | SpinStep (sqlite3_stmt *stmt) |
| Execute a step operation on a statement until the result is ok or an error. More... | |
Protected Member Functions | |
| int | WaitExec (sqlite3 *db, const std::string &cmd) const |
| Execute a command, waiting on a system semaphore. More... | |
| int | WaitExec (sqlite3 *db, sqlite3_stmt *stmt) const |
| Execute a statement, waiting on a system semaphore. More... | |
| int | WaitPrepare (sqlite3 *db, sqlite3_stmt **stmt, const std::string &cmd) const |
| Prepare a statement, waiting on a system semaphore. More... | |
Static Protected Member Functions | |
| static bool | CheckError (sqlite3 *db, int rc, const std::string &cmd, sem_t *sem, bool hardExit) |
| Check any error in the db. More... | |
| static void | Error (sqlite3 *db, const std::string &cmd) |
| Fail, printing an error message from sqlite. More... | |
| static int | SpinExec (sqlite3 *db, const std::string &cmd) |
| Execute a command ignoring concurrency problems, retrying instead. More... | |
| static int | SpinExec (sqlite3 *db, sqlite3_stmt *stmt) |
| Execute a Prepared Statement Object ignoring concurrency problems, retrying instead. More... | |
| static int | SpinPrepare (sqlite3 *db, sqlite3_stmt **stmt, const std::string &cmd) |
| Preparing a command ignoring concurrency problems, retrying instead. More... | |
Private Attributes | |
| sqlite3 * | m_db |
| Database pointer. More... | |
| std::string | m_dBname |
| Database name. More... | |
| std::string | m_semName |
| System semaphore name. More... | |
A C++ interface towards an SQLITE database.
The class is able to execute commands, and retrieve results, from an SQLITE database. The methods with the "Spin" prefix, in case of concurrent access to the database, will spin until the operation is applied. The methods with the "Wait" prefix will wait on a system semaphore.
If you run multiple simulations that write on the same database, it is recommended to use the "Wait" prefixed methods. Otherwise, if the access to the database is unique, using "Spin" methods will speed up database access.
The database is opened in the constructor, and closed in the deconstructor.
Definition at line 45 of file sqlite-output.h.
| ns3::SQLiteOutput::SQLiteOutput | ( | const std::string & | name, |
| const std::string & | semName | ||
| ) |
SQLiteOutput constructor.
| name | database name |
| semName | system semaphore name |
Definition at line 30 of file sqlite-output.cc.
References m_db, and NS_ABORT_MSG_UNLESS.
| ns3::SQLiteOutput::~SQLiteOutput | ( | ) |
Destructor.
Definition at line 37 of file sqlite-output.cc.
References m_db, and NS_ABORT_MSG_UNLESS.
| bool ns3::SQLiteOutput::Bind | ( | sqlite3_stmt * | stmt, |
| int | pos, | ||
| const double & | value | ||
| ) | const |
Bind a value to a sqlite statement.
| stmt | Sqlite statement |
| pos | Position of the bind argument inside the statement |
| value | Value to bind |
Definition at line 144 of file sqlite-output.cc.
| bool ns3::SQLiteOutput::Bind | ( | sqlite3_stmt * | stmt, |
| int | pos, | ||
| const int & | value | ||
| ) | const |
Bind a value to a sqlite statement.
| stmt | Sqlite statement |
| pos | Position of the bind argument inside the statement |
| value | Value to bind |
Definition at line 216 of file sqlite-output.cc.
| bool ns3::SQLiteOutput::Bind | ( | sqlite3_stmt * | stmt, |
| int | pos, | ||
| const long & | value | ||
| ) | const |
Bind a value to a sqlite statement.
| stmt | Sqlite statement |
| pos | Position of the bind argument inside the statement |
| value | Value to bind |
Definition at line 168 of file sqlite-output.cc.
| bool ns3::SQLiteOutput::Bind | ( | sqlite3_stmt * | stmt, |
| int | pos, | ||
| const long long & | value | ||
| ) | const |
Bind a value to a sqlite statement.
| stmt | Sqlite statement |
| pos | Position of the bind argument inside the statement |
| value | Value to bind |
Definition at line 180 of file sqlite-output.cc.
| bool ns3::SQLiteOutput::Bind | ( | sqlite3_stmt * | stmt, |
| int | pos, | ||
| const std::string & | value | ||
| ) | const |
Bind a value to a sqlite statement.
| stmt | Sqlite statement |
| pos | Position of the bind argument inside the statement |
| value | Value to bind |
Definition at line 228 of file sqlite-output.cc.
| bool ns3::SQLiteOutput::Bind | ( | sqlite3_stmt * | stmt, |
| int | pos, | ||
| const T & | value | ||
| ) | const |
Bind a value to a sqlite statement.
| stmt | Sqlite statement |
| pos | Position of the bind argument inside the statement |
| value | Value to bind |
Definition at line 123 of file sqlite-output.cc.
References NS_FATAL_ERROR.
| bool ns3::SQLiteOutput::Bind | ( | sqlite3_stmt * | stmt, |
| int | pos, | ||
| const Time & | value | ||
| ) | const |
Bind a value to a sqlite statement.
| stmt | Sqlite statement |
| pos | Position of the bind argument inside the statement |
| value | Value to bind |
Definition at line 132 of file sqlite-output.cc.
References ns3::Time::GetSeconds().
Here is the call graph for this function:| bool ns3::SQLiteOutput::Bind | ( | sqlite3_stmt * | stmt, |
| int | pos, | ||
| const uint16_t & | value | ||
| ) | const |
Bind a value to a sqlite statement.
| stmt | Sqlite statement |
| pos | Position of the bind argument inside the statement |
| value | Value to bind |
Definition at line 192 of file sqlite-output.cc.
| bool ns3::SQLiteOutput::Bind | ( | sqlite3_stmt * | stmt, |
| int | pos, | ||
| const uint32_t & | value | ||
| ) | const |
Bind a value to a sqlite statement.
| stmt | Sqlite statement |
| pos | Position of the bind argument inside the statement |
| value | Value to bind |
Definition at line 156 of file sqlite-output.cc.
| bool ns3::SQLiteOutput::Bind | ( | sqlite3_stmt * | stmt, |
| int | pos, | ||
| const uint8_t & | value | ||
| ) | const |
Bind a value to a sqlite statement.
| stmt | Sqlite statement |
| pos | Position of the bind argument inside the statement |
| value | Value to bind |
Definition at line 204 of file sqlite-output.cc.
|
staticprotected |
Check any error in the db.
| db | Database |
| rc | Sqlite return code |
| cmd | Command |
| sem | System semaphore |
| hardExit | if true, will exit the program |
Definition at line 333 of file sqlite-output.cc.
References second::cmd, and Error().
Referenced by SpinExec(), WaitExec(), and WaitPrepare().
Here is the call graph for this function:
Here is the caller graph for this function:
|
staticprotected |
Fail, printing an error message from sqlite.
| db | Database |
| cmd | Command |
Definition at line 327 of file sqlite-output.cc.
References second::cmd, and NS_ABORT_MSG.
Referenced by CheckError().
Here is the caller graph for this function:| double ns3::SQLiteOutput::RetrieveColumn | ( | sqlite3_stmt * | stmt, |
| int | pos | ||
| ) | const |
Retrieve a value from an executed statement.
| stmt | sqlite statement |
| pos | Column position |
Definition at line 100 of file sqlite-output.cc.
| T ns3::SQLiteOutput::RetrieveColumn | ( | sqlite3_stmt * | stmt, |
| int | pos | ||
| ) | const |
Retrieve a value from an executed statement.
| stmt | sqlite statement |
| pos | Column position |
Definition at line 92 of file sqlite-output.cc.
References NS_FATAL_ERROR.
| void ns3::SQLiteOutput::SetJournalInMemory | ( | ) |
Instruct SQLite to store the journal in memory.
May lead to data losses in case of unexpected program exits.
Definition at line 46 of file sqlite-output.cc.
References NS_LOG_FUNCTION, and SpinExec().
Here is the call graph for this function:| bool ns3::SQLiteOutput::SpinExec | ( | const std::string & | cmd | ) | const |
Execute a command until the return value is OK or an ERROR.
Ignore errors due to concurrency, the method will repeat the command instead
| cmd | Command |
Definition at line 53 of file sqlite-output.cc.
References second::cmd, m_db, and SpinExec().
Referenced by SetJournalInMemory(), and SpinExec().
Here is the call graph for this function:
Here is the caller graph for this function:
|
staticprotected |
Execute a command ignoring concurrency problems, retrying instead.
| db | Database |
| cmd | Command |
Definition at line 357 of file sqlite-output.cc.
References CheckError(), second::cmd, SpinFinalize(), SpinPrepare(), and SpinStep().
Here is the call graph for this function:
|
staticprotected |
Execute a Prepared Statement Object ignoring concurrency problems, retrying instead.
| db | Database |
| stmt | Prepared Statement Object |
Definition at line 383 of file sqlite-output.cc.
References CheckError(), SpinFinalize(), and SpinStep().
Here is the call graph for this function:| bool ns3::SQLiteOutput::SpinExec | ( | sqlite3_stmt * | stmt | ) | const |
Execute a command until the return value is OK or an ERROR.
| stmt | SQLite statement |
Definition at line 59 of file sqlite-output.cc.
References CheckError(), m_db, and SpinExec().
Here is the call graph for this function:
|
static |
Finalize a statement until the result is ok or an error.
Ignores concurrency errors; it will retry instead of failing.
| stmt | Statement |
Definition at line 301 of file sqlite-output.cc.
Referenced by SpinExec(), and WaitExec().
Here is the caller graph for this function:
|
staticprotected |
Preparing a command ignoring concurrency problems, retrying instead.
| db | Database |
| stmt | Statement |
| cmd | Command to prepare |
Definition at line 273 of file sqlite-output.cc.
References second::cmd.
| bool ns3::SQLiteOutput::SpinPrepare | ( | sqlite3_stmt ** | stmt, |
| const std::string & | cmd | ||
| ) | const |
Prepare a statement.
| stmt | Sqlite statement |
| cmd | Command to prepare inside the statement |
Definition at line 85 of file sqlite-output.cc.
References second::cmd, m_db, and SpinPrepare().
Referenced by SpinExec(), SpinPrepare(), and WaitExec().
Here is the call graph for this function:
Here is the caller graph for this function:
|
static |
Reset a statement until the result is ok or an error.
Ignores concurrency errors: it will retry instead of failing.
| stmt | Statement |
Definition at line 313 of file sqlite-output.cc.
|
static |
Execute a step operation on a statement until the result is ok or an error.
Ignores concurrency errors; it will retry instead of failing.
| stmt | Statement |
Definition at line 288 of file sqlite-output.cc.
Referenced by SpinExec(), and WaitExec().
Here is the caller graph for this function:| bool ns3::SQLiteOutput::WaitExec | ( | const std::string & | cmd | ) | const |
Execute a command, waiting on a system semaphore.
| cmd | Command to be executed |
Definition at line 66 of file sqlite-output.cc.
References CheckError(), second::cmd, m_db, and WaitExec().
Referenced by WaitExec().
Here is the call graph for this function:
Here is the caller graph for this function:
|
protected |
Execute a command, waiting on a system semaphore.
| db | Database |
| cmd | Command |
Definition at line 433 of file sqlite-output.cc.
References CheckError(), second::cmd, m_semName, NS_ABORT_MSG_IF, SpinFinalize(), SpinPrepare(), and SpinStep().
Here is the call graph for this function:
|
protected |
Execute a statement, waiting on a system semaphore.
| db | Database |
| stmt | Statement |
Definition at line 398 of file sqlite-output.cc.
References CheckError(), m_semName, NS_ABORT_MSG_IF, NS_FATAL_ERROR, SpinFinalize(), and SpinStep().
Here is the call graph for this function:| bool ns3::SQLiteOutput::WaitExec | ( | sqlite3_stmt * | stmt | ) | const |
Execute a command, waiting on a system semaphore.
| stmt | Sqlite3 statement to be executed |
Definition at line 73 of file sqlite-output.cc.
References m_db, and WaitExec().
Here is the call graph for this function:
|
protected |
Prepare a statement, waiting on a system semaphore.
| db | Database |
| stmt | Statement |
| cmd | Command to prepare |
Definition at line 238 of file sqlite-output.cc.
References CheckError(), second::cmd, m_semName, NS_ABORT_MSG_IF, and NS_FATAL_ERROR.
Here is the call graph for this function:| bool ns3::SQLiteOutput::WaitPrepare | ( | sqlite3_stmt ** | stmt, |
| const std::string & | cmd | ||
| ) | const |
Prepare a statement, waiting on a system semaphore.
| stmt | Sqlite statement |
| cmd | Command to prepare inside the statement |
Definition at line 79 of file sqlite-output.cc.
References second::cmd, m_db, and WaitPrepare().
Referenced by WaitPrepare().
Here is the call graph for this function:
Here is the caller graph for this function:
|
private |
Database pointer.
Definition at line 228 of file sqlite-output.h.
Referenced by SQLiteOutput(), ~SQLiteOutput(), SpinExec(), SpinPrepare(), WaitExec(), and WaitPrepare().
|
private |
Database name.
Definition at line 226 of file sqlite-output.h.
|
private |
System semaphore name.
Definition at line 227 of file sqlite-output.h.
Referenced by WaitExec(), and WaitPrepare().