GlobalObjects
Lade ...
Suche ...
Keine Treffer
glo::IndexPool Klassenreferenz

IndexPool ist die Basisklasse für den RealIndexPool und den TransactionIndexPool für die einzelnen Transaktionen. Mehr ...

#include <GloIndexPool.h>

Klassendiagramm für glo::IndexPool:

Klassen

class  DeletedObjIdTuple
 Klasse um gelöschte Objekte im IndexPool::SchemaIndex zu verwalten. Mehr ...
 
struct  IndexComparisionFilter
 Filter können Objekten vom Typ ObjectStrIndexIterator zugeordnet werden, welche das Iterieren durch einen ObjectStrIndex steuern.
Mittels dieser Struktur kann ein Filter mittels "<", "<=", ">", ">=", "==" und "!=" definiert werden. Wenn z.B. m_sIndexFilterValue den Wert "123" und m_eComparisionOperator den Wert GREATER_EQUAL hat, werden nur alle Objekte mit dem Index größer/gleich "123" ausgefiltert. Mehr ...
 
struct  IndexFilter
 Filter können Objekten vom Typ ObjectStrIndexIterator zugeordnet werden, welche das Iterieren durch einen ObjectStrIndex steuern.
Dieser Filter hat einen Indexfilter-Ausdruck in m_sIndexFilterValue. Mehr ...
 
struct  IndexRangeFilter
 Filter können Objekten vom Typ ObjectStrIndexIterator zugeordnet werden, welche das Iterieren durch einen ObjectStrIndex steuern. Mittels dieser Struktur kann ein Filter mittels Bereichsangabe definiert werden. Wenn z.B. m_sIndexFilterValue den Wert "123" und m_sIndexFilterEndValue den Wert "155" hat, werden alle Objekte mit dem Index kleiner "123" und größer "155" ausgefiltert. Es werden also nur, bei einer Abfrage, alle Objekte mit Index größer/gleich "123" und kleiner/gleich "155" geliefert. Mehr ...
 
class  ObjectStrIndex
 Verwaltet die einzelnen String-Indizes einer Klasse. Wenn dieses ein Unique-Index ist, sind die ObjStrIdTuple in einer Map, ansonsten in einer MultiMap. Dann können Indexe in einer MultiMap als reserviert eingefügt werden, dieses wird beim weiteren Einfügen berücksichtigt. Mehr ...
 
class  ObjectStrIndexIterator
 Hat einen Zeiger auf einen ObjectStrIndex und ermöglicht das iterieren durch diesen Index. Wird z.B. für AllSets instanziiert, damit diese unabhängig durch String-Indexe iterieren können. Mehr ...
 
class  ObjIdPosTuple
 Klasse um Objekte im IndexPool::TableObjIdIndex zu verwalten. Mehr ...
 
class  ObjStrIdTuple
 Klasse um Objekte im IndexPool::ObjectStrIndex zu verwalten. Mehr ...
 
class  SchemaIndex
 Ist die Indexverwalterklasse für ein Schema bzw. eine Datenbank. Mehr ...
 
class  TableObjIdIndex
 Verwaltet die Objekt-IDs (genutzte wie freigegebene) mit deren Position in den jeweiligen Tabellen. Mehr ...
 
class  TableObjIdIndexIterator
 Hat einen Zeiger auf einen TableObjIdIndex und ermöglicht das iterieren durch diesen Index. Wird z.B. für AllSets instanziiert, damit diese unabhängig durch Indexe iterieren können. Mehr ...
 

Öffentliche Methoden

 IndexPool ()
 
 IndexPool (const IndexPool &rT)
 
virtual ~IndexPool ()
 
void deleteAllSchemaIndexValues ()
 
virtual int getObjectStrIndexIterator (ObjectStrIndexIterator *&prObjectStrIndexIterators, const std::string &rsSchemaName, unsigned long ulClassID, const std::string &rsIndexName) const
 
virtual int getObjIdPosTuple (ObjIdPosTuple *&prRetVal, const std::string &rsSchemaName, unsigned long ulClassID, const ObjID &rObjID) const
 
virtual int getTableObjIdIndexIterator (TableObjIdIndexIterator *&prTableIterators, const std::string &rsSchemaName, unsigned long ulClassID) const
 
virtual int insertDeletedObjID (const std::string &rsSchemaName, const ObjID &rDeletedObjId)
 
virtual int insertObjIdPosTuple (const std::string &rsSchemaName, unsigned long ulClassID, const ObjIdPosTuple &rIndexTuple)
 
virtual int insertObjStrIdTuple (const std::string &rsSchemaName, unsigned long ulClassID, const std::string &rsIndexName, const ObjStrIdTuple &rIndexTuple)
 
virtual int isIndexFree (const std::string &rsSchemaName, unsigned long ulClassID, const ObjID &rObjID, const std::string &rsIndexName, const std::string &rsIndex) const
 
virtual bool isObjIdDeleted (const std::string &rsSchemaName, const ObjID &rObjID) const
 
virtual int isObjIdFree (const std::string &rsSchemaName, const ObjID &rObjID) const
 
IndexPooloperator= (const IndexPool &rT)
 
int releaseAllCommunicatorObjStrIdTuples (const std::string &rsSchemaName, const NUM_PTR ipReservingComunicator)
 
int releaseObjStrIdTuple (const std::string &rsSchemaName, unsigned long ulClassID, const std::string &rsIndexName, const NUM_PTR ipReservingComunicatorTrx)
 
virtual int removeObjId (const std::string &rsSchemaName, unsigned long ulClassID, const ObjID &rObjID)
 
virtual int removeObjStrIdTuple (const std::string &rsSchemaName, unsigned long ulClassID, const std::string &rsIndexName, const ObjID &rObjID, NUM_PTR ipReservingComunicatorTrx=0)
 
int reserveObjStrIdTuple (const std::string &rsSchemaName, unsigned long ulClassID, const std::string &rsIndexName, const ObjStrIdTuple &rIndexTuple)
 

Geschützte Methoden

void _deleteAllSchemaIndexValues ()
 
virtual bool _existsSchemaIndex (const std::string &rsSchemaName) const
 
virtual int _getFreeObjIDPos (std::streampos &rPos, const std::string &rsSchemaName, unsigned long ulClassID) const
 
virtual int _getObjectStrIndex (ObjectStrIndex *&prRetVal, const std::string &rsSchemaName, unsigned long ulClassID, const std::string &rsIndexName) const
 
virtual int _getObjectStrIndexIterator (ObjectStrIndexIterator *&prObjStrIterators, const std::string &rsSchemaName, unsigned long ulClassID, const std::string &rsIndexName) const
 
virtual int _getObjIdPosTuple (ObjIdPosTuple *&prRetVal, const std::string &rsSchemaName, unsigned long ulClassID, const ObjID &rObjID) const
 
virtual int _getSchemaIndex (SchemaIndex *&prRetVal, const std::string &rsSchemaName) const
 
virtual int _getTableObjIdIndex (TableObjIdIndex *&prRetVal, const std::string &rsSchemaName, unsigned long ulClassID) const
 
virtual int _getTableObjIdIndexIterator (TableObjIdIndexIterator *&prTableIterators, const std::string &rsSchemaName, unsigned long ulClassID) const
 
virtual int _insertDeletedObjID (const std::string &rsSchemaName, const ObjID &rDeletedObjId)
 
virtual int _insertFreeObjIDPos (const std::string &rsSchemaName, unsigned long ulClassID, std::streampos Pos)
 
virtual int _insertObjIdPosTuple (const std::string &rsSchemaName, unsigned long ulClassID, const ObjIdPosTuple &rIndexTuple)
 
virtual int _insertObjStrIdTuple (const std::string &rsSchemaName, unsigned long ulClassID, const std::string &rsIndexName, const ObjStrIdTuple &rIndexTuple)
 
virtual bool _isObjIdDeleted (const std::string &rsSchemaName, const ObjID &rObjID) const
 
virtual int _isObjIdFree (const std::string &rsSchemaName, unsigned long ulClassID, const ObjID &rObjID) const
 
virtual int _makeObjectStrIndex (const std::string &rsSchemaName, const std::string &rsTablePathName, unsigned long ulClassID, const std::string &rsIndexName, bool bUnique)
 
virtual int _makeTableObjIdIndex (const std::string &rsSchemaName, const std::string &rsTablePathName, unsigned long ulClassID)
 
virtual int _removeFreeObjIDPos (const std::string &rsSchemaName, unsigned long ulClassID, std::streampos Pos)
 
int _removeSchemaIndex (const std::string &rsSchemaName)
 
void copyMapFrom (const IndexPool &rT)
 

Geschützte Attribute

eut::CriticalSection m_LocalCriticalSection
 
std::map< std::string, SchemaIndex *, std::less< std::string > > m_SchemaIndexMap
 

Ausführliche Beschreibung

IndexPool ist die Basisklasse für den RealIndexPool und den TransactionIndexPool für die einzelnen Transaktionen.

Um das Suchen von Datensätzen in den Tabellen zu beschleunigen, wird die Objekt-ID mit der Tabellen-Position in einem TableObjIdIndex indiziert. Es wird zusätzlich ein Index von Tabellen-Positionen von gelöschten Datensätzen geführt. Diese beiden Indizes werden beim Öffnen einer Datenbank in einen RealIndexPool geladen und beim Schliessen wieder gespeichert.

Der RealIndexPool ist der Index aus der Datenbank, also real. Änderungen in der Datenbank, welche irgendeinen Index betreffen werden im RealIndexPool dokumentiert.

Wenn eine Transaktion begonnen wird, wird ein TransactionIndexPool als Kopie des RealIndexPool erstellt und gültig für die jeweilige Transaktion verwaltet.

Das bedeutet:
Wenn in der Transaktion ein Objekt eingefügt, geändert oder gelöscht wird, und der TableObjIdIndex betroffen ist, wird der Index nur im TransactionIndexPool geändert.

Wenn ausserhalb einer Transaktion ein Objekt geändert bzw. gelöscht wird, werden in allen Transaktionen der jeweilige TransactionIndexPool angepasst, wenn das Objekt NICHT in der Transaktion ist.

Wenn ausserhalb einer Transaktion ein Objekt eingefügt wird, werden in allen Transaktionen die jeweiligen Objekte vom Typ TransactionIndexPool angepasst.

Wenn ein Client nach einem Objekt fragt, wird zunächst geprüft, ob der Client in einer Transaktion ist. Dann wird dort der TransactionIndexPool gefragt; ansonsten der RealIndexPool.

Siehe auch
SchemaIndex, TableObjIdIndex, ObjectStrIndex und ClassInfoIndex

Aufbau:
Es wird für jedes Schema ein SchemaIndex aufgebaut, welcher aus den Informationen aus diesem den Index aus den Tabellen aufbaut.

Schematischer Aufbau:

|
|----------|
| |
| |
SchemaIndex1 SchemaIndex2
| | | |
| |
| |
| | |
| | |
ObjIDIndex DelObjIDPos IndexStr1/ObjId1
| | IndexStr2/ObjId2
| |
ObjId1/Pos1 |
ObjId2/Pos2 |
Pos3
Pos4
Verwaltet die einzelnen String-Indizes einer Klasse. Wenn dieses ein Unique-Index ist,...
Definition GloIndexPool.h:1801
Verwaltet die Objekt-IDs (genutzte wie freigegebene) mit deren Position in den jeweiligen Tabellen.
Definition GloIndexPool.h:1026
IndexPool ist die Basisklasse für den RealIndexPool und den TransactionIndexPool für die einzelnen Tr...
Definition GloIndexPool.h:196
Autor
Helmut Jakoby

Beschreibung der Konstruktoren und Destruktoren

◆ IndexPool() [1/2]

glo::IndexPool::IndexPool ( )

Standard-Konstruktor.

◆ IndexPool() [2/2]

glo::IndexPool::IndexPool ( const IndexPool & rT)

Copy-Konstruktor.

Parameter
[in]rTVon diesem Objekt werden die Daten übernommen.

◆ ~IndexPool()

virtual glo::IndexPool::~IndexPool ( )
virtual

Destruktor.

Dokumentation der Elementfunktionen

◆ _deleteAllSchemaIndexValues()

void glo::IndexPool::_deleteAllSchemaIndexValues ( )
protected

Entfernt alle Objekte aus m_SchemaIndexMap und aus dem Speicher.

◆ _existsSchemaIndex()

virtual bool glo::IndexPool::_existsSchemaIndex ( const std::string & rsSchemaName) const
protectedvirtual

Prüft, ob ein SchemaIndex mit einer bestimmten Bezeichnung in der m_SchemaIndexMap existiert.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") des zu prüfenden SchemaIndex.
Rückgabe
Liefert true, wenn ein SchemaIndex mit übergebenen Namen in m_SchemaIndexMap vorhanden ist.

◆ _getFreeObjIDPos()

virtual int glo::IndexPool::_getFreeObjIDPos ( std::streampos & rPos,
const std::string & rsSchemaName,
unsigned long ulClassID ) const
protectedvirtual

Liefert eine freie Tabellen-Position in einem TableObjIdIndex mit übergebener Klassen-ID in einem SchemaIndex.

Parameter
[in,out]rPosDie freie Tabellen-Position, wenn eine vorhanden war.
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") um den SchemaIndex zu identifizieren.
[in]ulClassIDDie Klassen-ID, um den TableObjIdIndex zu identifizieren.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ _getObjectStrIndex()

virtual int glo::IndexPool::_getObjectStrIndex ( ObjectStrIndex *& prRetVal,
const std::string & rsSchemaName,
unsigned long ulClassID,
const std::string & rsIndexName ) const
protectedvirtual

Liefert einen ObjectStrIndex einer bestimmten Klasse mit einer bestimmten Bezeichnung aus einen bestimmten SchemaIndex.

Parameter
[in,out]prRetValDer StringIndex, wenn vorhanden.
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") des liefernden SchemaIndex.
[in]ulClassIDDie Klassen-ID.
[in]rsIndexNameDie Indexbezeichnung. Wenn z.B. im Schema "[MyClassName.Index.IDX_MyIndexName]", dann "IDX_MyIndexName".
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Achtung
Die aufrufende Instanz darf das gelieferte Objekt nicht aus dem Speicher entfernen, es lebt nur so lange wie dieses Objekt.

◆ _getObjectStrIndexIterator()

virtual int glo::IndexPool::_getObjectStrIndexIterator ( ObjectStrIndexIterator *& prObjStrIterators,
const std::string & rsSchemaName,
unsigned long ulClassID,
const std::string & rsIndexName ) const
protectedvirtual

Liefert den ObjectStrIndexIterator eines bestimmten ObjectStrIndex einer bestimmten Datenbank.

Parameter
[in,out]prObjStrIteratorsDer IndexIterator, wenn vorhanden.
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") des zu liefernden SchemaIndex.
[in]ulClassIDDie Klassen-ID des TableObjIdIndex.
[in]rsIndexNameDie Indexbezeichnung. Wenn z.B. im Schema "[MyClassName.Index.IDX_MyIndexName]", dann "IDX_MyIndexName".
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Achtung
Die aufrufende Instanz muss das gelieferte Objekt aus dem Speicher entfernen.

◆ _getObjIdPosTuple()

virtual int glo::IndexPool::_getObjIdPosTuple ( ObjIdPosTuple *& prRetVal,
const std::string & rsSchemaName,
unsigned long ulClassID,
const ObjID & rObjID ) const
protectedvirtual

Liefert eine Objekt-ID mit ihrer Tabellen-Position aus dem TableObjIdIndex mit übergebener Klassen-ID in einem SchemaIndex mit einer bestimmten Objekt-ID.

Parameter
[in,out]prRetValWenn vorhanden, ein Zeiger auf eine Kopie der Objekt-ID mit der Tabellen-Position.
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") um den SchemaIndex zu identifizieren.
[in]ulClassIDDie Klassen-ID, um den TableObjIdIndex zu identifizieren.
[in]rObjIDDie Objekt-ID des zu liefernden Eintrags.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.
Achtung
Die aufrufende Instanz muss das gelieferte Objekt aus dem Speicher entfernen.

◆ _getSchemaIndex()

virtual int glo::IndexPool::_getSchemaIndex ( SchemaIndex *& prRetVal,
const std::string & rsSchemaName ) const
protectedvirtual

Liefert einen SchemaIndex mit einer bestimmten Bezeichnung aus der m_SchemaIndexMap.

Parameter
[in,out]prRetValDer SchemaIndex, wenn vorhanden.
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") des zu liefernden SchemaIndex.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Achtung
Die aufrufende Instanz darf das gelieferte Objekt nicht aus dem Speicher entfernen.

◆ _getTableObjIdIndex()

virtual int glo::IndexPool::_getTableObjIdIndex ( TableObjIdIndex *& prRetVal,
const std::string & rsSchemaName,
unsigned long ulClassID ) const
protectedvirtual

Liefert einen TableObjIdIndex einer bestimmten Klasse aus einen bestimmten SchemaIndex.

Parameter
[in,out]prRetValDer Index, wenn vorhanden.
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") des liefernden SchemaIndex.
[in]ulClassIDDie Klassen-ID.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Achtung
Die aufrufende Instanz darf das gelieferte Objekt nicht aus dem Speicher entfernen, es lebt nur so lange wie dieses Objekt.

◆ _getTableObjIdIndexIterator()

virtual int glo::IndexPool::_getTableObjIdIndexIterator ( TableObjIdIndexIterator *& prTableIterators,
const std::string & rsSchemaName,
unsigned long ulClassID ) const
protectedvirtual

Liefert den TableObjIdIndexIterator eines bestimmten TableObjIdIndex einer bestimmten Datenbank.

Parameter
[in,out]prTableIteratorsDer IndexIterator, wenn vorhanden.
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") des zu liefernden SchemaIndex.
[in]ulClassIDDie Klassen-ID des TableObjIdIndex.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Achtung
Die aufrufende Instanz muss das gelieferte Objekt aus dem Speicher entfernen.

◆ _insertDeletedObjID()

virtual int glo::IndexPool::_insertDeletedObjID ( const std::string & rsSchemaName,
const ObjID & rDeletedObjId )
protectedvirtual

Registriert übergeben Objekt-ID für einen SchemaIndex als gelöscht.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") um den SchemaIndex zu identifizieren.
[in]rDeletedObjIdDie als gelöscht zu registrierende Objekt-ID.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.

◆ _insertFreeObjIDPos()

virtual int glo::IndexPool::_insertFreeObjIDPos ( const std::string & rsSchemaName,
unsigned long ulClassID,
std::streampos Pos )
protectedvirtual

Regsitriert eine freie Tabellen-Position in einem TableObjIdIndex mit übergebener Klassen-ID in einem SchemaIndex.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") um den SchemaIndex zu identifizieren.
[in]ulClassIDDie Klassen-ID, um den TableObjIdIndex zu identifizieren.
[in]PosDie als 'frei' zu registrierende Tabellen-Position.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ _insertObjIdPosTuple()

virtual int glo::IndexPool::_insertObjIdPosTuple ( const std::string & rsSchemaName,
unsigned long ulClassID,
const ObjIdPosTuple & rIndexTuple )
protectedvirtual

Fügt eine Objekt-ID mit der Tabellen-Position in einen TableObjIdIndex in einem SchemaIndex ein.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") um den SchemaIndex zu identifizieren.
[in]ulClassIDDie Klassen-ID, um den TableObjIdIndex zu identifizieren.
[in]rIndexTupleDie einzufügende Objekt-ID mit der Tabellen-Position.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.
Achtung
Der SchemaIndex und der Tabellen-Index müssen vorher angelegt sein (siehe: IndexPool::_makeTableObjIdIndex (...) ).

◆ _insertObjStrIdTuple()

virtual int glo::IndexPool::_insertObjStrIdTuple ( const std::string & rsSchemaName,
unsigned long ulClassID,
const std::string & rsIndexName,
const ObjStrIdTuple & rIndexTuple )
protectedvirtual

Fügt einen StringIndex in einen ObjectStrIndex in einem SchemaIndex ein.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") um den SchemaIndex zu identifizieren.
[in]ulClassIDDie Klassen-ID, um den ObjectStrIndex zu identifizieren.
[in]rsIndexNameDie Bezeichnung des ObjectStrIndex. Wenn z.B. im Schema "[MyClassName.Index.IDX_MyIndexName]", dann "IDX_MyIndexName".
[in]rIndexTupleDer einzufügende Index.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Achtung
Der SchemaIndex und der Objekt-StringIndex müssen vorher angelegt sein (siehe: IndexPool::_makeObjectStrIndex (...) ).

◆ _isObjIdDeleted()

virtual bool glo::IndexPool::_isObjIdDeleted ( const std::string & rsSchemaName,
const ObjID & rObjID ) const
protectedvirtual

Prüft ob eine Objekt-ID in einem SchemaIndex als gelöscht geführt wird.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") um den SchemaIndex zu identifizieren.
[in]rObjIDDie zu prüfende Objekt-ID.
Rückgabe
Liefert treu, wenn die übergebene Objekt-ID als gelöscht geführt wird, ansonsten false.

◆ _isObjIdFree()

virtual int glo::IndexPool::_isObjIdFree ( const std::string & rsSchemaName,
unsigned long ulClassID,
const ObjID & rObjID ) const
protectedvirtual

Prüft eine Objekt-ID, ob diese schon in einem TableObjIdIndex in einem SchemaIndex verwaltet wird.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") um den SchemaIndex zu identifizieren.
[in]ulClassIDDie Klassen-ID, um den TableObjIdIndex zu identifizieren.
[in]rObjIDDie zu prüfende Objekt-ID.
Rückgabe
Liefert 1, wenn rObjID nicht verwaltet wird, ansonsten 0.
Ein Rückgabwert < 0 zeigt einen Fehler an.

◆ _makeObjectStrIndex()

virtual int glo::IndexPool::_makeObjectStrIndex ( const std::string & rsSchemaName,
const std::string & rsTablePathName,
unsigned long ulClassID,
const std::string & rsIndexName,
bool bUnique )
protectedvirtual

Gerneriert einen ObjectStrIndex mit einer Bezeichnung, für eine Klasse mit einer bestimmten Klassen-ID für einen bestimmten SchemaIndex. Sollte der SchemaIndex noch nicht existieren, wird auch dieser generiert.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase").
[in]rsTablePathNameDie, für den ObjectStrIndex notwendige, vollständige Verzeichnisbezeichnung, in dem die Tabellen zu finden sind wie z.B. "C:/Pfad/Data/".
[in]ulClassIDDie Klassen-ID der verwalteten Indexe.
[in]rsIndexNameDie Indexbezeichnung. Wenn z.B. im Schema "[MyClassName.Index.IDX_MyIndexName]", dann "IDX_MyIndexName".
[in]bUniqueWenn true, dann handelt es sich um einen eindeutigen Index (jeder Eintrag kann nur einmal vorhanden sein), ansonsten sind mehrere gleiche Einträge möglich.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.

◆ _makeTableObjIdIndex()

virtual int glo::IndexPool::_makeTableObjIdIndex ( const std::string & rsSchemaName,
const std::string & rsTablePathName,
unsigned long ulClassID )
protectedvirtual

Gerneriert einen TableObjIdIndex für eine Klasse mit einer bestimmten Klassen-ID für einen bestimmten SchemaIndex. Sollte der SchemaIndex noch nicht existieren, wird auch dieser generiert.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase").
[in]rsTablePathNameDie, für den TableObjIdIndex notwendige, vollständige Verzeichnisbezeichnung, in dem die Tabellen zu finden sind wie z.B. "C:/Pfad/Data/".
[in]ulClassIDDie Klassen-ID der verwalteten Indexe.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.

◆ _removeFreeObjIDPos()

virtual int glo::IndexPool::_removeFreeObjIDPos ( const std::string & rsSchemaName,
unsigned long ulClassID,
std::streampos Pos )
protectedvirtual

Entfernt eine freie Tabellen-Position in einem TableObjIdIndex mit übergebener Klassen-ID in einem SchemaIndex.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") um den SchemaIndex zu identifizieren.
[in]ulClassIDDie Klassen-ID, um den TableObjIdIndex zu identifizieren.
[in]PosDie entfernte Tabellen-Position.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ _removeSchemaIndex()

int glo::IndexPool::_removeSchemaIndex ( const std::string & rsSchemaName)
protected

Entfernt den SchemaIndex mit übergebener Schemabezeichnung aus m_SchemaIndexMap.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") des zu entfernenden SchemaIndex.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.

◆ copyMapFrom()

void glo::IndexPool::copyMapFrom ( const IndexPool & rT)
protected

Entfernt alle Objekte aus m_SchemaIndexMap und aus dem Speicher. Dann werden alle Elemente der gleichen Liste des übergebenen IndexPool kopiert.
Wird vom operator= genutzt.

Parameter
[in]rTDer IndexPool, dessen Indexe kopiert werden sollen.
Zu beachten
Diese Methode sperrt weitere Aufrufe von Methoden dieser Klasse und rT, welche mit m_LocalCriticalSection abgesichert sind.

◆ deleteAllSchemaIndexValues()

void glo::IndexPool::deleteAllSchemaIndexValues ( )

Entfernt alle Objekte aus m_SchemaIndexMap und aus dem Speicher.

Zu beachten
Diese Methode sperrt weitere Aufrufe von Methoden dieser Klasse, welche mit m_LocalCriticalSection abgesichert sind.

◆ getObjectStrIndexIterator()

virtual int glo::IndexPool::getObjectStrIndexIterator ( ObjectStrIndexIterator *& prObjectStrIndexIterators,
const std::string & rsSchemaName,
unsigned long ulClassID,
const std::string & rsIndexName ) const
virtual

Liefert den ObjectStrIndexIterator eines bestimmten ObjectStrIndex einer bestimmten Datenbank.

Parameter
[in,out]prObjectStrIndexIteratorsDer Iterator, wenn vorhanden.
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") des zu liefernden SchemaIndex.
[in]ulClassIDDie Klassen-ID des TableObjIdIndex.
[in]rsIndexNameDie Bezeichnung des zu prüfenden Index. Wenn z.B. im Schema "[MyClassName.Index.IDX_MyIndexName]", dann "IDX_MyIndexName".
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Achtung
Die aufrufende Instanz muss das gelieferte Objekt aus dem Speicher entfernen.
Zu beachten
Diese Methode sperrt weitere Aufrufe von Methoden dieser Klasse, welche mit m_LocalCriticalSection abgesichert sind.

◆ getObjIdPosTuple()

virtual int glo::IndexPool::getObjIdPosTuple ( ObjIdPosTuple *& prRetVal,
const std::string & rsSchemaName,
unsigned long ulClassID,
const ObjID & rObjID ) const
virtual

Liefert eine Objekt-ID mit ihrer Tabellen-Position aus dem TableObjIdIndex mit übergebener Klassen-ID in einem SchemaIndex mit einer bestimmten Objekt-ID.

Parameter
[in,out]prRetValWenn vorhanden, ein Zeiger auf eine Kopie der Objekt-ID mit der Tabellen-Position.
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") um den SchemaIndex zu identifizieren.
[in]ulClassIDDie Klassen-ID, um den TableObjIdIndex zu identifizieren.
[in]rObjIDDie Objekt-ID des zu liefernden Eintrags.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.
Achtung
Die aufrufende Instanz muss das gelieferte Objekt aus dem Speicher entfernen.
Zu beachten
Diese Methode sperrt weitere Aufrufe von Methoden dieser Klasse, welche mit m_LocalCriticalSection abgesichert sind.

◆ getTableObjIdIndexIterator()

virtual int glo::IndexPool::getTableObjIdIndexIterator ( TableObjIdIndexIterator *& prTableIterators,
const std::string & rsSchemaName,
unsigned long ulClassID ) const
virtual

Liefert den TableObjIdIndexIterator eines bestimmten TableObjIdIndex einer bestimmten Datenbank.

Parameter
[in,out]prTableIteratorsDer Iterator, wenn vorhanden.
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") des zu liefernden SchemaIndex.
[in]ulClassIDDie Klassen-ID des TableObjIdIndex.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Achtung
Die aufrufende Instanz muss das gelieferte Objekt aus dem Speicher entfernen.
Zu beachten
Diese Methode sperrt weitere Aufrufe von Methoden dieser Klasse, welche mit m_LocalCriticalSection abgesichert sind.

◆ insertDeletedObjID()

virtual int glo::IndexPool::insertDeletedObjID ( const std::string & rsSchemaName,
const ObjID & rDeletedObjId )
virtual

Registriert die übergebene Objekt-ID für einen SchemaIndex als gelöscht.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") um den SchemaIndex zu identifizieren.
[in]rDeletedObjIdDie als gelöscht zu registrierende Objekt-ID.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Zu beachten
Diese Methode sperrt weitere Aufrufe von Methoden dieser Klasse, welche mit m_LocalCriticalSection abgesichert sind.

◆ insertObjIdPosTuple()

virtual int glo::IndexPool::insertObjIdPosTuple ( const std::string & rsSchemaName,
unsigned long ulClassID,
const ObjIdPosTuple & rIndexTuple )
virtual

Fügt eine Objekt-ID mit der Tabellen-Position in einen TableObjIdIndex in einem SchemaIndex ein.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") um den SchemaIndex zu identifizieren.
[in]ulClassIDDie Klassen-ID, um den TableObjIdIndex zu identifizieren.
[in]rIndexTupleDie einzufügende Objekt-ID mit der Tabellen-Position.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.
Achtung
Der SchemaIndex und der Tabellen-Index müssen vorher angelegt sein (siehe: IndexPool::_makeTableObjIdIndex (...) ).
Zu beachten
Diese Methode sperrt weitere Aufrufe von Methoden dieser Klasse, welche mit m_LocalCriticalSection abgesichert sind.

◆ insertObjStrIdTuple()

virtual int glo::IndexPool::insertObjStrIdTuple ( const std::string & rsSchemaName,
unsigned long ulClassID,
const std::string & rsIndexName,
const ObjStrIdTuple & rIndexTuple )
virtual

Fügt einen StringIndex in einen ObjectStrIndex in einem SchemaIndex ein.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") um den SchemaIndex zu identifizieren.
[in]ulClassIDDie Klassen-ID, um den ObjectStrIndex zu identifizieren.
[in]rsIndexNameDie Bezeichnung des ObjectStrIndex. Wenn z.B. im Schema "[MyClassName.Index.IDX_MyIndexName]", dann "IDX_MyIndexName".
[in]rIndexTupleDer einzufügende Index.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Achtung
Der SchemaIndex und der Objekt-StringIndex müssen vorher angelegt sein (siehe: IndexPool::_makeObjectStrIndex (...) ).
Zu beachten
Diese Methode sperrt weitere Aufrufe von Methoden dieser Klasse, welche mit m_LocalCriticalSection abgesichert sind.

◆ isIndexFree()

virtual int glo::IndexPool::isIndexFree ( const std::string & rsSchemaName,
unsigned long ulClassID,
const ObjID & rObjID,
const std::string & rsIndexName,
const std::string & rsIndex ) const
virtual

Prüft, ob ein IndexString noch für einen bestimmten ObjectStrIndex in einem SchemaIndex frei ist.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") um den SchemaIndex zu identifizieren.
[in]ulClassIDDie Klassen-ID, um den ObjectStrIndex zu identifizieren.
[in]rObjIDDie Objekt-ID, um den ObjectStrIndex zu identifizieren.
[in]rsIndexNameDie Bezeichnung des zu prüfenden Index. Wenn z.B. im Schema "[MyClassName.Index.IDX_MyIndexName]", dann "IDX_MyIndexName".
[in]rsIndexDer zu überprüfende Index.
Rückgabe
Liefert 1 wenn nicht vergeben oder 0, wenn schon vergeben.
Ein Rückgabwert < 0 zeigt einen Fehler an.
Zu beachten
Diese Methode sperrt weitere Aufrufe von Methoden dieser Klasse, welche mit m_LocalCriticalSection abgesichert sind.

◆ isObjIdDeleted()

virtual bool glo::IndexPool::isObjIdDeleted ( const std::string & rsSchemaName,
const ObjID & rObjID ) const
virtual

Prüft ob eine Objekt-ID in einem SchemaIndex als gelöscht gekennzeichnet ist.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") um den SchemaIndex zu identifizieren.
[in]rObjIDDie zu prüfende Objekt-ID.
Rückgabe
Liefert treu, wenn die übergebene Objekt-ID als gelöscht gekennzeichnet ist, ansonsten false.
Zu beachten
Diese Methode sperrt weitere Aufrufe von Methoden dieser Klasse, welche mit m_LocalCriticalSection abgesichert sind.

◆ isObjIdFree()

virtual int glo::IndexPool::isObjIdFree ( const std::string & rsSchemaName,
const ObjID & rObjID ) const
virtual

Prüft eine Objekt-ID, ob diese schon in einem TableObjIdIndex in einem SchemaIndex verwaltet wird.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") um den SchemaIndex zu identifizieren.
[in]rObjIDDie zu prüfende Objekt-ID.
Rückgabe
Liefert 1, wenn rObjID nicht verwaltet wird, ansonsten 0.
Ein Rückgabwert < 0 zeigt einen Fehler an.
Zu beachten
Diese Methode sperrt weitere Aufrufe von Methoden dieser Klasse, welche mit m_LocalCriticalSection abgesichert sind.

◆ operator=()

IndexPool & glo::IndexPool::operator= ( const IndexPool & rT)

Zuweisungsoperator.

Parameter
[in]rTVon diesem Objekt werden die Daten übernommen.

◆ releaseAllCommunicatorObjStrIdTuples()

int glo::IndexPool::releaseAllCommunicatorObjStrIdTuples ( const std::string & rsSchemaName,
const NUM_PTR ipReservingComunicator )

Gibt alle Unique-StringIndex in einen ObjectStrIndex in einem SchemaIndex frei, welche vom übergebenen Kommunikator reserviert wurden.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") um den SchemaIndex zu identifizieren.
[in]ipReservingComunicatorDie auf NUM_PTR gecastete Adresse des Kommunikators, der den Index reserviert hat.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Ausnahmebehandlung
eut::ErrorNExceptionWenn ipReservingComunicator == 0 ist, wird eine Exception geworfen.
Zu beachten
Diese Methode sperrt weitere Aufrufe von Methoden dieser Klasse, welche mit m_LocalCriticalSection abgesichert sind.
Siehe auch
IndexPool::reserveObjStrIdTuple (...)

◆ releaseObjStrIdTuple()

int glo::IndexPool::releaseObjStrIdTuple ( const std::string & rsSchemaName,
unsigned long ulClassID,
const std::string & rsIndexName,
const NUM_PTR ipReservingComunicatorTrx )

Gibt einen StringIndex in einen ObjectStrIndex in einem SchemaIndex, wenn dieser ein Unique-Index ist, frei.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") um den SchemaIndex zu identifizieren.
[in]ulClassIDDie Klassen-ID, um den ObjectStrIndex zu identifizieren.
[in]rsIndexNameDie Bezeichnung des ObjectStrIndex. Wenn z.B. im Schema "[MyClassName.Index.IDX_MyIndexName]", dann "IDX_MyIndexName".
[in]ipReservingComunicatorTrxDer Transaktionsschritt, für den die Reservierung angefordert wurde.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Ausnahmebehandlung
eut::ErrorNExceptionWenn ipReservingComunicatorTrx == 0 ist, wird eine Exception geworfen.
Zu beachten
Diese Methode sperrt weitere Aufrufe von Methoden dieser Klasse, welche mit m_LocalCriticalSection abgesichert sind.
Siehe auch
IndexPool::reserveObjStrIdTuple (...)

◆ removeObjId()

virtual int glo::IndexPool::removeObjId ( const std::string & rsSchemaName,
unsigned long ulClassID,
const ObjID & rObjID )
virtual

Entfernt den Eintrag mit übergebener Objekt-ID aus dem TableObjIdIndex mit übergebener Klassen-ID in einem SchemaIndex.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") um den SchemaIndex zu identifizieren.
[in]ulClassIDDie Klassen-ID, um den TableObjIdIndex zu identifizieren.
[in]rObjIDDie zu entfernende Objekt-ID.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Achtung
Der SchemaIndex und der TableObjIdIndex müssen vorher angelegt sein (siehe: IndexPool::_makeTableObjIdIndex (...) ).
Zu beachten
Diese Methode sperrt weitere Aufrufe von Methoden dieser Klasse, welche mit m_LocalCriticalSection abgesichert sind.

◆ removeObjStrIdTuple()

virtual int glo::IndexPool::removeObjStrIdTuple ( const std::string & rsSchemaName,
unsigned long ulClassID,
const std::string & rsIndexName,
const ObjID & rObjID,
NUM_PTR ipReservingComunicatorTrx = 0 )
virtual

Entfernt String-Index eines Objektes mit übergebener Bezeichnung aus dem ObjectStrIndex mit übergebener Klassen-ID in einem SchemaIndex.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") um den SchemaIndex zu identifizieren.
[in]ulClassIDDie Klassen-ID, um den ObjectStrIndex zu identifizieren.
[in]rsIndexNameDie Bezeichnung des ObjectStrIndex. Wenn z.B. im Schema "[MyClassName.Index.IDX_MyIndexName]", dann "IDX_MyIndexName".
[in]rObjIDDie Objekt-ID des zu entfernenden Indexes.
[in]ipReservingComunicatorTrxDie auf NUM_PTR gecastete Adresse eines Communicator's, in dessen Transaktion der Index ggf. reserviert wurde. Wenn diese gesetzt, wird nur ein reservierter Index gelöscht.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Achtung
Der SchemaIndex und der Objekt-StringIndex müssen vorher angelegt sein (siehe: IndexPool::_makeObjectStrIndex (...) ).
Zu beachten
Diese Methode sperrt weitere Aufrufe von Methoden dieser Klasse, welche mit m_LocalCriticalSection abgesichert sind.

◆ reserveObjStrIdTuple()

int glo::IndexPool::reserveObjStrIdTuple ( const std::string & rsSchemaName,
unsigned long ulClassID,
const std::string & rsIndexName,
const ObjStrIdTuple & rIndexTuple )

Reserviert einen StringIndex in einen ObjectStrIndex in einem SchemaIndex, wenn dieser ein Unique-Index ist.

Parameter
[in]rsSchemaNameDie Schemabezeichnung (z.B. "MyGloBase") um den SchemaIndex zu identifizieren.
[in]ulClassIDDie Klassen-ID, um den ObjectStrIndex zu identifizieren.
[in]rsIndexNameDie Bezeichnung des ObjectStrIndex. Wenn z.B. im Schema "[MyClassName.Index.IDX_MyIndexName]", dann "IDX_MyIndexName".
[in]rIndexTupleDer zu reservierende Index.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Ausnahmebehandlung
eut::ErrorNExceptionWenn ObjStrIdTuple::m_ipReservingComunicatorTrx im Parameter rIndexTuple nicht gesetzt ist, wird eine Exception geworfen.
Zu beachten
Diese Methode sperrt weitere Aufrufe von Methoden dieser Klasse, welche mit m_LocalCriticalSection abgesichert sind.
Siehe auch
IndexPool::releaseObjStrIdTuple (...)

Dokumentation der Datenelemente

◆ m_LocalCriticalSection

eut::CriticalSection glo::IndexPool::m_LocalCriticalSection
protected

Um einen Thread-sicheren Zugriff auf die Elemente des IndexPool und Unterklassen zu gewährleisten, wird über diese lokale CriticalSection der Zugriff synchronisiert.

◆ m_SchemaIndexMap

std::map< std::string, SchemaIndex * , std::less< std::string > > glo::IndexPool::m_SchemaIndexMap
protected

Für jede geöffnete Datenbank gibt es einen SchemaIndex.


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei: