|
Rezervační systém
|
třída pro zápis do žurnálu ...
#include <Journal.h>
Veřejné metody | |
| CWriteJournal (const char *pszPath, unsigned uiLimit, CMemoryDb *cDb) | |
| konstruktor ... | |
| ~CWriteJournal () | |
| destruktor ... | |
| void | AskBackup (void) |
| požadavek na vyprázdnění žurnálu ... | |
| bool | AddItem (unsigned uiType, unsigned uiLength, const void *pData) |
| přidání položky do žurnálu ... | |
třída pro zápis do žurnálu
Třída zajišťuje práci se souborem žurnálu. Pro svou práci si vytvoří pomocné vlákno (jež je po naprostou většinu času uspáno). Slouží k přidávání jednotlivých položek do žurnálu, zároveň kontroluje, zda velikost souboru nepřesáhla přednastavený limit. Pokud ano, je probuzeno pracovní vlákno, které zajistí provedení zálohy databáze a vyprázdnění žurnálu. Podrobněji zde.
| CWriteJournal::CWriteJournal | ( | const char * | pszPath, |
| unsigned | uiLimit, | ||
| CMemoryDb * | cDb | ||
| ) |
konstruktor
Vytvoření třídy obnáší i vytvoření pracovního vlákna pro provádění zálohy databáze (včetně synchronizačním objektů) a vytvoření (prázdného) souboru žurnálu v požadovaném umístění.
| [in] | pszPath | určení složky pro uložení interní zálohy databáze a souboru žurnálu. Konkrétní jména jsou určena vnitřními konstantami. Volající je odpovědný za to, že proces má odpovídající přístupová práva do zadané složky. |
| [in] | uiLimit | limit velikosti žurnálového souboru. Při jeho překročení je vyvolána interní záloha databáze. |
| [in] | cDb | ukazatel na instanci databáze, se kterou je žurnál spojen. |
| CWriteJournal::~CWriteJournal | ( | ) |
destruktor
Před zrušením třídy je legálně ukončeno pracovní vlákno a jsou uvolněny synchronizační objekty.
| bool CWriteJournal::AddItem | ( | unsigned | uiType, |
| unsigned | uiLength, | ||
| const void * | pData | ||
| ) |
přidání položky do žurnálu
Do žurnálu je přidána další položka dle parametrů metody. V případě, že velikost žurnálu překročí přednastavenou mez, bude co nejdříve provedena kompletní záloha celé databáze a soubor žurnálu následně vymazán.
| [in] | uiType | typ položky (pro účely identifikace položky se používá výčtový typ CCommand::EQueryCmd) |
| [in] | uiLength | velikost dat (v bytech) |
| [in] | pData | ukazatel na data, která jsou spojena s konkrétním příkazem (velikost a struktura dat se liší podle příkazu) |
| void CWriteJournal::AskBackup | ( | void | ) |
požadavek na vyprázdnění žurnálu
Obsluha vnějšího požadavku na provedení interní zálohy celé databáze a tím i vyprázdnění souboru žurnálu. Požadavek je uložen a bude vyřízen pracovním vláknem co nejdříve (po získání výhradního přístupu k databázi).
1.8.5