Mixes for Privacy and Anonymity in the Internet
|
Public Member Functions | |
CADatabase () | |
~CADatabase () | |
SINT32 | insert (UINT8 key[16], UINT64 timestamp) |
Inserts this key in the replay DB. More... | |
SINT32 | start () |
SINT32 | stop () |
SINT32 | test () |
Static Public Member Functions | |
static SINT32 | measurePerformance (UINT8 *strLogFile, UINT32 lowerBoundEntries, UINT32 upperBoundEntries, UINT32 stepBy, UINT32 meassuresPerStep, UINT32 insertsPerMeasure) |
This mehtod can be used to measure the performance of the Replay database. More... | |
Private Member Functions | |
t_databaseInfo * | createDBInfo () |
Creates and initialises a dbinfo struct. More... | |
SINT32 | clearDB (t_databaseInfo *pDB) |
clears the whole database pDB - but does not delete the hashtable pDB More... | |
SINT32 | deleteDB (t_databaseInfo *&pDB) |
Deletes the whole database pDB. More... | |
SINT32 | nextClock () |
SINT32 | fill (UINT32 nrOfEntries) |
Pre fills the database with nrOfEntries random entries. More... | |
SINT32 | simulateInsert (UINT8 key[16]) |
This is a modified copy of insert() which simulates the insert() function as close as possible without actually changing the replay database. More... | |
Private Attributes | |
UINT64 | m_lastSwitch |
t_databaseInfo * | m_currDatabase |
t_databaseInfo * | m_nextDatabase |
t_databaseInfo * | m_prevDatabase |
volatile bool | m_bRun |
volatile SINT32 | m_currentClock |
CAMutex * | m_pMutex |
CAThread * | m_pThread |
Friends | |
THREAD_RETURN | db_loopMaintenance (void *param) |
CADatabase::CADatabase | ( | ) |
References createDBInfo(), m_currDatabase, m_currentClock, m_lastSwitch, m_nextDatabase, m_pMutex, m_prevDatabase, and m_pThread.
Referenced by measurePerformance().
CADatabase::~CADatabase | ( | ) |
References deleteDB(), CAMutex::lock(), m_currDatabase, m_nextDatabase, m_pMutex, m_prevDatabase, stop(), and CAMutex::unlock().
|
private |
clears the whole database pDB - but does not delete the hashtable pDB
pDB | database to delete |
References _t_database_info::m_pHashTable, and _t_database_entry::next.
Referenced by deleteDB(), and nextClock().
|
private |
Creates and initialises a dbinfo struct.
Referenced by CADatabase().
|
private |
Deletes the whole database pDB.
pDB | database to delete |
References clearDB(), and E_SUCCESS.
Referenced by ~CADatabase().
Pre fills the database with nrOfEntries random entries.
nrOfEntries | number of entries to put in the database |
References E_SUCCESS, getRandom(), and insert().
Referenced by measurePerformance(), and test().
Inserts this key in the replay DB.
References E_SUCCESS, E_UNKNOWN, FUTURE_TOLERANCE, _t_database_entry::key, CAMutex::lock(), m_currDatabase, m_lastSwitch, m_nextDatabase, _t_database_info::m_pHashTable, m_pMutex, m_prevDatabase, _t_database_info::m_u32Size, _t_database_entry::next, SECONDS_PER_INTERVALL, and CAMutex::unlock().
Referenced by fill(), CAFirstMixA::loop(), CALastMixA::loop(), and CALastMixB::loop().
|
static |
This mehtod can be used to measure the performance of the Replay database.
The results are stored in a file in csv format. Ths method will do several measures with different numbers of elements in the database. These number could be specified using owerBoundEntries,upperBoundEntries and stepBy.
strLogFile | the log file name |
lowerBoundEntries | the number of entries in the database (at beginn) |
upperBoundEntries | the number of entries in the database (at end) |
stepBy | how many entries should be added for each new measurement |
meassuresPerStep | how many measure values should be generate per step. That means that the experiement is repeated this many times. |
insertsPerMeasure | one measure value will be the time: (Total Insertion Time)/insertsPerMeasure |
References CADatabase(), diff64(), E_SUCCESS, fill(), getcurrentTimeMicros(), getRandom(), initRandom(), O_LARGEFILE, CAMsg::printMsg(), S_IREAD, S_IWRITE, and simulateInsert().
|
private |
This is a modified copy of insert() which simulates the insert() function as close as possible without actually changing the replay database.
References E_SUCCESS, CAMutex::lock(), m_currDatabase, m_currentClock, m_pMutex, _t_database_info::m_u32Size, and CAMutex::unlock().
Referenced by measurePerformance().
SINT32 CADatabase::start | ( | ) |
References db_loopMaintenance, m_bRun, m_pThread, CAThread::setMainLoop(), and CAThread::start().
Referenced by CAFirstMix::init(), and CAMiddleMix::init().
SINT32 CADatabase::stop | ( | ) |
References E_SUCCESS, CAThread::join(), m_bRun, and m_pThread.
Referenced by ~CADatabase().
|
friend |
Referenced by start().
|
private |
Referenced by CADatabase(), insert(), nextClock(), simulateInsert(), and ~CADatabase().
|
private |
Referenced by CADatabase(), and simulateInsert().
|
private |
Referenced by CADatabase(), insert(), and nextClock().
|
private |
Referenced by CADatabase(), insert(), nextClock(), and ~CADatabase().
|
private |
Referenced by CADatabase(), insert(), nextClock(), simulateInsert(), and ~CADatabase().
|
private |
Referenced by CADatabase(), insert(), nextClock(), and ~CADatabase().
|
private |
Referenced by CADatabase(), start(), and stop().