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

Das Objekt dieser Klasse ist die zentrale Anlaufstelle für Aktionen, welche mit GlobalObjects-Daten zu tun haben. Mehr ...

#include <GloManager.h>

Klassendiagramm für glo::Manager:

Klassen

struct  ObjIdWithDepends
 Eine Struktur um die Objekt-ID eines persistenten Objekts mit den Datensätzen der abhängigen Objekte (abhängig bedeutet; sollen mitgespeichert, mitgelöscht, mitüberwacht, mitgesperrt etc. werden) abzubilden. Mehr ...
 
class  Receiver
 Ist die Gegenstelle bzw. der Kommunikator, welcher mit dem Manager kommuniziert. Bei dem Mehrbenutzbetrieb kann es mehrere Gegenstellen bzw. Kommunikatoren geben. Mehr ...
 
class  SchemaMapItem
 Objekte dieser Klasse repräsentieren eine geöffnete Datenbank. Es gibt für jede geöffnete Datenbank ein Objekt dieser Klasse. Mehr ...
 

Öffentliche Methoden

void getAllClients (std::vector< ClientInfo > &rClientInfoVector, std::string *psSchemaName=0) const
 
void getKnownBases (std::vector< std::string > &rKnownBasesVector) const
 
RealIndexPoolgetRealIndexPool ()
 
std::string getSchemaPath () const
 
bool isBaseOpen (Communicator *pCommunicator)
 
int takeOrder (OrderMsg *pOrderMsg)
 
- Öffentliche Methoden geerbt von eut::RepeatingThread
 RepeatingThread ()
 
virtual ~RepeatingThread ()
 
virtual void cancel ()
 
virtual void finishBreak ()
 
int getBreakCounter ()
 
bool isInExclusiveAccess () const
 
void setExclusiveAccess ()
 
void signalInput ()
 
virtual int start ()
 
RepeatingThread::STATUS status () const
 
virtual void takeABreak ()
 
bool testCancel ()
 
void unsetExclusiveAccess ()
 
void waitForInput ()
 

Öffentliche, statische Methoden

static Managercreate (const std::string &rsSchemaPath, const std::vector< std::string > &rAllowedSchemes)
 
static int destroy ()
 
static ManagergetAvailableInstance ()
 
static ShowLevel getShowLevel ()
 
static void setActionVisualiser (ManagerActionVisualiser *pActionVisualiser)
 
static void setShowLevel (ShowLevel ulLevel)
 
static void showAction (const OrderMsg *pOrderMsg, const std::string &rsActiontype, const std::string &rsActionString, char cSE)
 
static void showActionString (const std::string &sActionString)
 
static void showOrderAction (OrderMsg *pOrderMsg, char cSE)
 
static void showReaderAction (OrderMsg *pOrderMsg, const std::string &rsActionString, char cSE)
 
static void showTransactionAction (OrderMsg *pOrderMsg, const std::string &rsActionString, char cSE)
 
static void showWriterAction (OrderMsg *pOrderMsg, const std::string &rsActionString, char cSE)
 

Geschützte Methoden

 Manager ()
 
 Manager (const std::string &rsSchemaPath, const std::vector< std::string > &rAllowedSchemes)
 
virtual ~Manager ()
 
int checkAllRecordIndices (int iCheckStatus, const SchemaInterface &rSchema, const std::map< ObjID, Record *, std::less< ObjID > > &rRecordMap, IndexPool &rGloIndexPool) const
 
void closeBase (OrderMsg *pOrderMsg)
 
void compressBase (OrderMsg *pOrderMsg)
 
int createSchemaInterface (SchemaInterface *&prNewSchemaInterface, const std::string &rsSchemaName) const
 
void deleteAllObjectsInReceiverMap ()
 
void deleteAllObjectsInSchemaMap ()
 
void deleteCommunicatorWatches (OrderMsg *pOrderMsg)
 
void getAllClients (OrderMsg *pOrderMsg) const
 
void getAllDataTypes (OrderMsg *pOrderMsg) const
 
void getAllKnownBases (OrderMsg *pOrderMsg) const
 
void getAllTransactionIndexPools (std::vector< TransactionIndexPool * > &rTransactionIndexPoolVector, std::string *psSchemaName=0, Communicator *pWithoutThisCommunicator=0) const
 
void getBaseOrSubClassInfos (OrderMsg *pOrderMsg) const
 
void getClassInfo (OrderMsg *pOrderMsg) const
 
void getDataTypeLimits (OrderMsg *pOrderMsg) const
 
void getDependRecords (std::map< ObjID, Record *, std::less< ObjID > > &rDependRecordMap, Record &rSourceRecord, const TableReaderInterface &rTableReaderInterface, EnDeepMode eDeepMode, Communicator *pCommunicator=NULL_PTR) const
 
void getDependRecordsRecursive (std::map< ObjID, Record *, std::less< ObjID > > &rDependRecordMap, Record &rSourceRecord, const TableReaderInterface &rTableReaderInterface, EnDeepMode eDeepMode, Communicator *pCommunicator=NULL_PTR) const
 
std::size_t getNumberReceiver () const
 
std::size_t getNumberReceiver (std::string sSchemaName) const
 
Manager::ReceivergetReceiver (Communicator *pCommunicator)
 
SchemaInterfacegetSchemaInterface (const std::string &rsSchemaName) const
 
Manager::SchemaMapItemgetSchemaMapItem (const std::string &rsSchemaName) const
 
void insertInKnownBases (const std::vector< std::string > &rNewSchemes)
 
int lockBaseExclusive (std::ofstream *&prLockFile, const SchemaInterface &rSchemaInterface)
 
void openBase (OrderMsg *pOrderMsg)
 
void processDisconnectedClient (OrderMsg *pOrderMsg)
 
void processNewConnectedClient (OrderMsg *pOrderMsg)
 
void processObjectNotify (TdWatchNotifyMode nWatchNotifyMode, const ObjID &rObjID, Communicator *pCommunicator, const std::string &rsSchemaName)
 
void processObjectNotify (TdWatchNotifyMode nWatchNotifyMode, const std::list< ObjID > &rObjIDList, Communicator *pCommunicator, const std::string &rsSchemaName)
 
void reindexBase (OrderMsg *pOrderMsg)
 
void releaseStrIndexesFromTransactionStepList (std::list< TransactionManager::TransactionBase * > &rTransactionStepList, std::string &rsSchemaName)
 
void removeCommunicator (OrderMsg *pOrderMsg, WatchNotifyManager *pWatchNotifyManager=0)
 
void repairBase (OrderMsg *pOrderMsg)
 
int sendABORTtoTransactionManager (Communicator *pCommunicator, std::string sSchemaName)
 
int sendBEGINtoTransactionManager (Communicator *pCommunicator)
 
int sendCOMMITtoTransactionManager (Communicator *pCommunicator, std::string sSchemaName, std::map< ObjID, Record *, std::less< ObjID > > *pInputDataRecordMap)
 
void sendToLockManager (OrderMsg *pOrderMsg)
 
int sendToLockManager (OrderMsg::EnOrderType eOrderType, SchemaInterface *pSchema, std::list< ObjID > *pObjectIDsToBeLocked, LockSpecification *pLockSpec, Communicator *pCommunicator)
 
void sendToReaderThread (OrderMsg *pOrderMsg)
 
void sendToTransactionManager (OrderMsg *pOrderMsg)
 
void sendToWatchNotifyManager (OrderMsg *pOrderMsg)
 
void sendToWriter (OrderMsg *pOrderMsg)
 
void switchOffAllRecieverReader ()
 
void switchOffRecieverReader (std::string sSchemaName)
 
void switchOnAllRecieverReader ()
 
void switchOnRecieverReader (std::string sSchemaName)
 
int transactionManagerSetTransactionStep (const SchemaInterface &rSchema, Communicator *pCommunicator, TransactionManager::EnStoreDelete eStoreOrDelete, Record *pRecord)
 
void unlockTransactionStepList (std::list< TransactionManager::TransactionBase * > &rTransactionStepList, Communicator *pCommunicator, const std::string &rsSchemaName, TransactionIndexPool *pTransactionIndexPool, bool bDelete)
 
virtual void work () override
 
- Geschützte Methoden geerbt von eut::RepeatingThread
ORDER getOrder ()
 
STATUS getStatus ()
 
void setStatus (STATUS eStatus)
 
void threadWork ()
 
void toOrder (ORDER eOrder)
 

Private Methoden

 Manager (const Manager &)
 
Manageroperator= (const Manager &)
 

Private Attribute

bool m_bWorkingExclusiv
 
std::map< SOCKET, ClientInfo, std::less< SOCKET > > m_ConnectedClientsMap
 
std::vector< std::string > m_KnownSchemes
 
eut::CriticalSection m_LocalCriticalSection
 
std::queue< OrderMsg * > m_MsgQueue
 
LockManagerm_pLockManager
 
RealIndexPoolm_pRealIndexPool
 
TransactionManagerm_pTransactionManager
 
WatchNotifyManagerm_pWatchNotifyManager
 
std::map< Communicator *, Receiver *, std::less< Communicator * > > m_ReceiverMap
 
std::map< std::string, SchemaMapItem *, std::less< std::string > > m_SchemaMap
 
std::string m_strSchemaPath
 
unsigned int m_uiCommunicatorID
 

Statische, private Attribute

static ManagerActionVisualiserm_pActionVisualiser
 
static Managerm_pInstance
 
static ShowLevel m_ulShowLevel
 
static int ms_iReferenceCounter
 

Freundbeziehungen

class LockManager
 
class OrderMsg
 
class TableWriterInterface
 
class TcpServerReceiver
 
class WatchNotifyManager
 

Weitere Geerbte Elemente

- Öffentliche Typen geerbt von eut::RepeatingThread
enum  EuTHREADERROR { EuTHREAD_ERR_NO_THREAD = -10301 , EuTHREAD_ERR_THREAD_ALREADY_WORKING = -10302 , EuTHREAD_ERR_THREAD_BREAK_COUNT_LESS_THAN_ZERO = -10303 , EuTHREAD_ERR_UNKNOWN = -10400 }
 Fehlerbereich = -10301 bis -10400 Mehr ...
 
enum  ORDER { eUNDEFINED , eDO_WORK , eEXIT }
 
enum  STATUS {
  eAT_THE_START , eWORKING , ePAUSING , eENDING ,
  eCOMPLETED
}
 
- Öffentliche Attribute geerbt von eut::RepeatingThread
std::string m_strDebugInfo
 

Ausführliche Beschreibung

Das Objekt dieser Klasse ist die zentrale Anlaufstelle für Aktionen, welche mit GlobalObjects-Daten zu tun haben.

Es darf nur ein Objekt dieser Klasse geben (Singleton), welches über Helferobjekte auf die Tabellen über die Schema bzw. Tabellen-Schnittstellen zugreift.

Holt aus den Tabellen Datensätze und liefert diese an anfragende Base(s) bzw. wartet auf Aktionsereignisse seiner Bases.

Speichert, ändert bzw. löscht in Tabellen die Datensätze.

instanziiert einen LockManager und einen ObjektWatcher.

Es wird einmalig ein Writer-Thread für jede Datenbank und für jeden Client ein Reader-Thread instanziiert.

Die einzelnen Writer- und Reader-Threads arbeiten jeweils eine eigene Nachrichten-Queue ab.

Es wird ein IndexPool instantiert, welcher für alle genutzten Bases einen Index aufbaut, die von den Readern und Writern genutzt werden können.

Wenn der Writer schreiben möchte, werden alle Reader-Threads angehalten und warten bis der Writer fertig ist.

Wenn ein neuer CommunicaterThread instanziiert wird, wird in einer Liste von Schemata das geforderte Schema geholt, kopiert und dann dem CommunicaterThread im Konstruktor übergeben. Wenn es noch kein Schema geben sollte, wird eines instanziiert und zusätzlich in die Liste der Schemas eingefügt. Somit braucht das Schema nicht bei jedem Gebrauch neu ein gelesen werden.

Autor
Helmut Jakoby

Beschreibung der Konstruktoren und Destruktoren

◆ Manager() [1/3]

glo::Manager::Manager ( )
protected

Der Standard-Konstruktor steht nicht zur Verfügung.

◆ Manager() [2/3]

glo::Manager::Manager ( const std::string & rsSchemaPath,
const std::vector< std::string > & rAllowedSchemes )
protected

Konstruktor mit Parameterübergabe; darf nur von Manager::create (...) aufgerufen werden..

Parameter
[in]rsSchemaPathDer Datei-Pfad wo die Schemadateien zu finden sind (z.B. "C:/Pfad/").
[in]rAllowedSchemesDie bekannten Schemata bzw. deren Bezeichnungen.
Ausnahmebehandlung
eut::ErrorNExceptionBei einem Fehler wird eine Exception geworfen.

◆ ~Manager()

virtual glo::Manager::~Manager ( )
protectedvirtual

Destruktor.

◆ Manager() [3/3]

glo::Manager::Manager ( const Manager & )
private

Der Copy-Konstruktor steht niccht zur Verfügung.

Dokumentation der Elementfunktionen

◆ checkAllRecordIndices()

int glo::Manager::checkAllRecordIndices ( int iCheckStatus,
const SchemaInterface & rSchema,
const std::map< ObjID, Record *, std::less< ObjID > > & rRecordMap,
IndexPool & rGloIndexPool ) const
protected

Wenn iCheckStatus & 1 wird geprüft, ob die Objekt-IDs in den Record's in der rRecordMap im SchemaIndex des übergebenen SchemaInterface alle im übergebenen IndexPool als NICHT gelöscht geführt werden.
Wenn iCheckStatus & 2 werden für jeden Record's in der rRecordMap ggf. vorhandene StringIndexe ermittelt und in die Record's in der rRecordMap übertragen.
Wenn iCheckStatus & 4 wird geprüft ob alle Record's in der rRecordMap in Bezug auf ggf. definierte eindeutige Indexe gespeichert werden können.

Parameter
[in]iCheckStatusDer Checkstatus, siehe Methodenbeschreibung.
[in]rSchemaDas betroffene Schema bzw. die Datenbank.
[in]rRecordMapDie Menge der Record's, deren ObjID geprüft werden.
[in]rGloIndexPoolDer IndexPool, in dem die Prüfung stattfindet.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an, also eine Prüfung ist fehlgeschlagen.
Siehe auch
Record::getAllIndexStrings(), Record::insertInAllIndexStrings (...), Record::getIndexString (...) und Record::m_IndexStrNameTupleVector).

◆ closeBase()

void glo::Manager::closeBase ( OrderMsg * pOrderMsg)
protected

Verarbeitet den Auftrag, eine bestimmte Datenbank zu schliessen (die Informationen sind im Auftrag). Entfernt den entsprechenden Reader bzw. dekrementiert den Referenzzähler eines vorhanden Readers des, im Auftrag übergebenen, Kommunikator.

Parameter
[in,out]pOrderMsgDer zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen.
Siehe auch
OrderMsg::eCLOSE_BASE

◆ compressBase()

void glo::Manager::compressBase ( OrderMsg * pOrderMsg)
protected

Verarbeitet den Auftrag, eine bestimmte Datenbank zu komprimieren. Es wird die Datenbank nach dem Komprimieren neu indiziert.

Parameter
[in,out]pOrderMsgDer zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen.
Achtung
Das gewünschte wird nur gelingen, wenn die Datenbank von keiner Instanz geöffnet ist.
Ohne vorheriges Verbinden (siehe auch PrivateBase::connect() ) scheitert die Methode.
Siehe auch
OrderMsg::eCOMPRESS_BASE

◆ create()

static Manager * glo::Manager::create ( const std::string & rsSchemaPath,
const std::vector< std::string > & rAllowedSchemes )
static

Instanziierungsfunktion. Da es sich bei Manager um eine Singleton-Class handelt, wird diese von dieser Methode einmalig instanziiert und dann nur noch der Pointer auf die Instanz geliefert.

Parameter
[in]rsSchemaPathDer Datei-Pfad wo die Schemadateien zu finden sind (z.B. "C:/Pfad/").
[in]rAllowedSchemesDie bekannten Schemata bzw. deren Bezeichnungen.
Rückgabe
Zeiger auf die einzige Instanz dieser Klasse.
Ausnahmebehandlung
eut::ErrorNExceptionBei einem Fehler wird eine Exception geworfen.
Achtung
Die gelieferte Instanz muss mit Manager::destroy() aus dem Speicher entfernt werden.

◆ createSchemaInterface()

int glo::Manager::createSchemaInterface ( SchemaInterface *& prNewSchemaInterface,
const std::string & rsSchemaName ) const
protected

Liefert einen Zeiger auf ein neu instanziiertes SchemaInterface mit der übergebenen Bezeichnung, wenn es existiert.

Parameter
[in,out]prNewSchemaInterfaceZeiger auf ein neu erstelltes SchemaInterface.
[in]rsSchemaNameDie Bezeichnung des Schemas bzw. der Datenbank.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Achtung
Die aufrufende Instanz muss das gelieferte Objekt aus dem Speicher entfernen.

◆ deleteAllObjectsInReceiverMap()

void glo::Manager::deleteAllObjectsInReceiverMap ( )
protected

Entfernt alle Elemente in m_ReceiverMap und aus dem Speicher.

◆ deleteAllObjectsInSchemaMap()

void glo::Manager::deleteAllObjectsInSchemaMap ( )
protected

Entfernt alle Elemente in der m_SchemaMap und aus dem Speicher.

◆ deleteCommunicatorWatches()

void glo::Manager::deleteCommunicatorWatches ( OrderMsg * pOrderMsg)
protected

Verarbeitet den Auftrag, alle Beobachtungen eines bestimmten Kommunikators (ersichtlich aus dem übergebenen Auftrag) über den m_pWatchNotifyManager zu entfernen.

Parameter
[in,out]pOrderMsgDer zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen.
Siehe auch
OrderMsg::eDELETE_COMMUNICATOR_WATCHES

◆ destroy()

static int glo::Manager::destroy ( )
static

Wenn die aufrufende Instanz die letzte mit einer Referenz auf die einzige Instanz von Manager ist, wird diese Instanz von Manager aus dem Speicher entfernt.

Rückgabe
Rückgabe ist die Anzahl der Noch-Referenzen auf diese Instanz.

◆ getAllClients() [1/2]

void glo::Manager::getAllClients ( OrderMsg * pOrderMsg) const
protected

Verarbeitet den Auftrag, alle ClientInfo's im Auftrag einzufügen (siehe auch OrderMsg::setOrderResult (...) ).

Parameter
[in,out]pOrderMsgDer zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen.
Siehe auch
OrderMsg::eGET_ALL_CLIENTS

◆ getAllClients() [2/2]

void glo::Manager::getAllClients ( std::vector< ClientInfo > & rClientInfoVector,
std::string * psSchemaName = 0 ) const

Liefert alle angemeldeten Kommunikatoren.

Parameter
[in,out]rClientInfoVectorDie angemeldeten Kommunikatoren mit ihrer Kommunikator-ID und der Bezeichnung der geöffneten Datenbank.
[in]psSchemaNameWenn ein Zeiger auf eine Schemabezeichnung übergeben wird, werden nur die Kommunikatoren geliefert, welche die Datenbank mit dieser Schemabezeichnung geöffnet haben.
Siehe auch
OrderMsg::eGET_ALL_CLIENTS

◆ getAllDataTypes()

void glo::Manager::getAllDataTypes ( OrderMsg * pOrderMsg) const
protected

Verarbeitet den Auftrag, alle unterstützten DatenTypen mit deren Max- und Min-Werten (LimitRecord) im Auftrag einzufügen (siehe auch OrderMsg::setOrderResult (...) ).

Parameter
[in,out]pOrderMsgDer zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen.
Siehe auch
OrderMsg::eGET_ALL_DEFAULT_LIMITS

◆ getAllKnownBases()

void glo::Manager::getAllKnownBases ( OrderMsg * pOrderMsg) const
protected

Verarbeitet den Auftrag, die Bezeichnungen aller bekannten Schemata bzw. Datenbanken, im Auftrag einzufügen (siehe auch OrderMsg::setOrderResult (...) ).

Parameter
[in,out]pOrderMsgDer zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen.
Siehe auch
OrderMsg::eGET_ALL_BASES

◆ getAllTransactionIndexPools()

void glo::Manager::getAllTransactionIndexPools ( std::vector< TransactionIndexPool * > & rTransactionIndexPoolVector,
std::string * psSchemaName = 0,
Communicator * pWithoutThisCommunicator = 0 ) const
protected

Liefert die TransactionIndexPool's aus allen Receiver in der m_ReceiverMap, wenn diese einen TransactionIndexPool haben.

Parameter
[in,out]rTransactionIndexPoolVectorDie TransactionIndexPool's.
[in]psSchemaNameWenn dieser Zeiger übergeben, dann werden nur die TransactionIndexPool's, deren Clients bei der korrespondierenden Datenbank angemeldet sind, geliefert.
[in]pWithoutThisCommunicatorWenn dieser Zeiger übergeben, wird dessen evtl. vorhandener TransactionIndexPool nicht geliefert.
Achtung
Die in rTransactionIndexPoolVector gelieferten TransactionIndexPool's dürfen von der aufrufenden Instanz nicht aus dem Speicher entfernt werden.

◆ getAvailableInstance()

static Manager * glo::Manager::getAvailableInstance ( )
static

Liefert eine Instanz von Manager, wenn vorhanden. Es wird der Referenzzähler inkrementiert.

Rückgabe
Zeiger auf die einzige Instanz dieser Klasse.
Achtung
Die gelieferte Instanz muss mit Manager::destroy() aus dem Speicher entfernt werden.

◆ getBaseOrSubClassInfos()

void glo::Manager::getBaseOrSubClassInfos ( OrderMsg * pOrderMsg) const
protected

Verarbeitet den Auftrag, die Klasseninformation (ClassInfo) einer Klasse, je nach Parameter im Auftrag, alle oder nur die direkten Unter- bzw. Oberklassen im Auftrag einzufügen (siehe auch OrderMsg::setOrderResult (...) ).

Parameter
[in,out]pOrderMsgDer zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen.
Siehe auch
OrderMsg::eGET_SUBCLASS_INFOS
OrderMsg::eGET_BASECLASS_INFOS
OrderMsg::eGET_ALL_SUBCLASS_INFOS
OrderMsg::eGET_ALL_BASECLASS_INFOS
OrderMsg::eGET_ALL_CLASS_INFOS

◆ getClassInfo()

void glo::Manager::getClassInfo ( OrderMsg * pOrderMsg) const
protected

Verarbeitet den Auftrag, eine Klasseninformation mit einer bestimmten Klassen-ID, welche im Auftrag mitgeleifert wird, im Auftrag einzufügen (siehe auch OrderMsg::setOrderResult (...) ).

Parameter
[in,out]pOrderMsgDer zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen.
Siehe auch
OrderMsg::eGET_CLASSINFO_BY_CLASSID, OrderMsg::eGET_CLASSINFO_BY_CLASSNAME, OrderMsg::eIS_KNOWN_CLASSID, OrderMsg::eIS_SUPER_CLASS_FROM

◆ getDataTypeLimits()

void glo::Manager::getDataTypeLimits ( OrderMsg * pOrderMsg) const
protected

Verarbeitet den Auftrag, von einem unterstützten DatenTypen (ClassInfoAttribute::Type) die Max- und Min-Werten (LimitRecord) im Auftrag einzufügen (siehe auch OrderMsg::setOrderResult (...) ).

Parameter
[in,out]pOrderMsgDer zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen.
Siehe auch
OrderMsg::eGET_DATATYPE_LIMITS

◆ getDependRecords()

void glo::Manager::getDependRecords ( std::map< ObjID, Record *, std::less< ObjID > > & rDependRecordMap,
Record & rSourceRecord,
const TableReaderInterface & rTableReaderInterface,
EnDeepMode eDeepMode,
Communicator * pCommunicator = NULL_PTR ) const
protected

Liefert alle abhängigen Datensätze in rDependRecordMap vom rSourceRecord in Abhängigkeit vom eDeepMode aus den Tabellen bzw. vom glo::TransactionManager.

Parameter
[in,out]rDependRecordMapDer Container mit den abhängigen Datensätzen.
[in]rSourceRecordDer Datensatz, dessen abhängigen Datensätze erwartet werden.
[in]rTableReaderInterfaceDer Tabellen-Leser.
[in]eDeepModeDer Aktionstiefenmodus.
[in]pCommunicatorWenn ein Kommunikator übergeben wird, werden zu lesende Datensätze (in der Recursion) vorzugsweise aus der aktuellen Transaktion geholt und erst wenn dort nicht vorhanden, aus den Tabellen.
Zu beachten
Ist durch eine lokale eut::CriticalSection abgesichert.

◆ getDependRecordsRecursive()

void glo::Manager::getDependRecordsRecursive ( std::map< ObjID, Record *, std::less< ObjID > > & rDependRecordMap,
Record & rSourceRecord,
const TableReaderInterface & rTableReaderInterface,
EnDeepMode eDeepMode,
Communicator * pCommunicator = NULL_PTR ) const
protected

Liefert alle abhängigen Datensätze in rDependRecordMap vom rSourceRecord in Abhängigkeit vom eDeepMode aus den Tabellen bzw. vom glo::TransactionManager.

Parameter
[in,out]rDependRecordMapDer Container mit den abhängigen Datensätzen.
[in]rSourceRecordDer Datensatz, dessen abhängigen Datensätze erwartet werden.
[in]rTableReaderInterfaceDer Tabellen-Leser.
[in]eDeepModeDer Aktionstiefenmodus.
[in]pCommunicatorWenn ein Kommunikator übergeben wird, werden zu lesende Datensätze (in der Recursion) vorzugsweise aus der aktuellen Transaktion geholt und erst wenn dort nicht vorhanden, aus den Tabellen.
Zu beachten
Für Glo-Entwickler: Ist in GloRecordAttributeFunctions.cpp implementiert, damit Erweiterungen von Datensatz-Attributen dort gesammelt vorgenommen werden können.

◆ getKnownBases()

void glo::Manager::getKnownBases ( std::vector< std::string > & rKnownBasesVector) const

Kopiert die Bezeichnungen aller bekannten Schemata bzw. Datenbanken, in übergebenen Vector.

Parameter
[in,out]rKnownBasesVectordie Bezeichnungen aller bekannten Schemata bzw. Datenbanken.
Siehe auch
OrderMsg::eGET_ALL_BASES

◆ getNumberReceiver() [1/2]

std::size_t glo::Manager::getNumberReceiver ( ) const
protected

Liefert die Anzahl der Receiver in der m_ReceiverMap.

Rückgabe
Die Anzahl der Receiver.

◆ getNumberReceiver() [2/2]

std::size_t glo::Manager::getNumberReceiver ( std::string sSchemaName) const
protected

Liefert die Anzahl der Receiver in der m_ReceiverMap, deren Kommunikator an eine bestimmte Datenbank angemeldet sind.

Parameter
[in]sSchemaNameDie Bezeichnung des Schemas bzw. der Datenbank.
Rückgabe
Die Anzahl der Receiver.

◆ getRealIndexPool()

RealIndexPool * glo::Manager::getRealIndexPool ( )

Liefert den realen IndexPool.

Rückgabe
Der reale IndexPool.
Achtung
Die aufrufende Instanz darf das gelieferte Objekt nicht aus dem Speicher entfernen. Es lebt nur so lange wie dieses Objekt.

◆ getReceiver()

Manager::Receiver * glo::Manager::getReceiver ( Communicator * pCommunicator)
protected

Liefert einen Receiver mit Referenz auf einen bestimmten Kommunikator aus der m_ReceiverMap.

Parameter
[in]pCommunicatorDer Kommunikator.
Rückgabe
Der gefundene Receiver, wenn vorhanden.
Achtung
Das gelieferte Objekt darf von der aufrufernden Instanz nicht aus dem Speicher entfernt werden.

◆ getSchemaInterface()

SchemaInterface * glo::Manager::getSchemaInterface ( const std::string & rsSchemaName) const
protected

Liefert einen Zeiger auf ein SchemaInterface mit der übergebenen Bezeichnung aus der m_SchemaMap.

Parameter
[in]rsSchemaNameDie Bezeichnung des Schemas bzw. der Datenbank.
Rückgabe
Das gefundene SchemaInterface, ansonsten 0.
Achtung
Die aufrufende Instanz darf das gelieferte Objekt nicht aus dem Speicher entfernen.

◆ getSchemaMapItem()

Manager::SchemaMapItem * glo::Manager::getSchemaMapItem ( const std::string & rsSchemaName) const
protected

Liefert einen Zeiger auf ein SchemaMapItem mit der übergebenen Bezeichnung seines Schemas aus der m_SchemaMap.

Parameter
[in]rsSchemaNameDie Bezeichnung des Schemas bzw. der Datenbank.
Rückgabe
Das gefundene SchemaMapItem, ansonsten 0.
Achtung
Die aufrufende Instanz darf das gelieferte Objekt nicht aus dem Speicher entfernen.

◆ getSchemaPath()

std::string glo::Manager::getSchemaPath ( ) const

Liefert den Datei-Pfad wo die Schemadatei zu finden ist.

Rückgabe
Vollständige Pfadbezeichnung (z.B. "C:/Pfad/").

◆ getShowLevel()

static ShowLevel glo::Manager::getShowLevel ( )
static

Liefert die Anzeigeeinstellung.

Rückgabe
Die Anzeigeeinstellung.

◆ insertInKnownBases()

void glo::Manager::insertInKnownBases ( const std::vector< std::string > & rNewSchemes)
protected

Fügt übergebene Datenbanknamen in m_KnownSchemes ein, wenn noch nicht vorhanden.

Parameter
[in]rNewSchemesDie Bezeichnung des Schemas bzw. der Datenbank.

◆ isBaseOpen()

bool glo::Manager::isBaseOpen ( Communicator * pCommunicator)

Prüft, ob übergebener Kommunikator eine Datenbank geöffnet hat bzw. ob ein entsprechender Receiver in der m_ReceiverMap vorhanden ist.

Rückgabe
Liefert true, wenn übergebener Kommunikator eine Datenbank geöffnet hat.

◆ lockBaseExclusive()

int glo::Manager::lockBaseExclusive ( std::ofstream *& prLockFile,
const SchemaInterface & rSchemaInterface )
protected

Liefert, wenn noch nicht geöffnet, das LockFile der Datenbank, ersichtlich aus dem übergebenen rSchemaInterface.

Parameter
[in,out]prLockFileDas einmalig geöffnete LockFile.
[in]rSchemaInterfaceDas Schema, dessen Datenbank durch das LogFile gesperrt werden soll.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an, z.B. ERR_BASE_LOCKED wenn Datei schon gelockt.
Achtung
Das gelieferte Objekt muss von der aufrufenden Instanz aus dem Speicher entfernt werden.

◆ openBase()

void glo::Manager::openBase ( OrderMsg * pOrderMsg)
protected

Verarbeitet den Auftrag, eine bestimmte Datenbank zu öffnen (die Informationen sind im Auftrag) und die Kommunikator-ID im Auftrag einzufügen (siehe auch OrderMsg::setOrderResult (...) ). Instanziiert einen Reader bzw. erhöht den Referenzzähler eines vorhanden Readers für, im Auftrag übergebenen, Kommunikator.

Parameter
[in,out]pOrderMsgDer zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen.
Siehe auch
OrderMsg::eOPEN_BASE

◆ operator=()

Manager & glo::Manager::operator= ( const Manager & )
private

Der Zuweisungsoperator steht nicht zur Verfügung.

◆ processDisconnectedClient()

void glo::Manager::processDisconnectedClient ( OrderMsg * pOrderMsg)
protected

Verarbeitet den Auftrag, einen Client (ersichtlich aus dem übergebenen Auftrag) aus seineer m_ConnectedClientsMap zu entfernen.

Parameter
[in,out]pOrderMsgDer zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen.
Siehe auch
OrderMsg::eDISCONNECTED_CLIENT

◆ processNewConnectedClient()

void glo::Manager::processNewConnectedClient ( OrderMsg * pOrderMsg)
protected

Verarbeitet den Auftrag, einen neuen Client (ersichtlich aus dem übergebenen Auftrag) in seine m_ConnectedClientsMap einzufügen.

Parameter
[in,out]pOrderMsgDer zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen.
Siehe auch
OrderMsg::eNEW_CONNECTED_CLIENT

◆ processObjectNotify() [1/2]

void glo::Manager::processObjectNotify ( TdWatchNotifyMode nWatchNotifyMode,
const ObjID & rObjID,
Communicator * pCommunicator,
const std::string & rsSchemaName )
protected

Initiiert über seine m_MsgQueue ein Notify im m_pWatchNotifyManager, welches ein Objekt betrifft.

Parameter
[in]nWatchNotifyModeDer Überwachungsmodus.
[in]rObjIDDie Objekt-ID des betroffenen Objekts.
[in]pCommunicatorDer Kommunikator.
[in]rsSchemaNameDer Schemaname wird für das Benachrichtigen gebraucht.

◆ processObjectNotify() [2/2]

void glo::Manager::processObjectNotify ( TdWatchNotifyMode nWatchNotifyMode,
const std::list< ObjID > & rObjIDList,
Communicator * pCommunicator,
const std::string & rsSchemaName )
protected

Initiiert über seine m_MsgQueue Notify's im m_pWatchNotifyManager, welches die Objekte mit den Objekt-IDs aus rObjIDList betrifft.

Parameter
[in]nWatchNotifyModeDer Überwachungsmodus.
[in]rObjIDListDie Objekt-IDs der betroffenen Objekte.
[in]pCommunicatorDer Kommunikator.
[in]rsSchemaNameDer Schemaname wird für das Benachrichtigen gebraucht.

◆ reindexBase()

void glo::Manager::reindexBase ( OrderMsg * pOrderMsg)
protected

Verarbeitet den Auftrag, eine bestimmte Datenbank zu reindizieren.

Parameter
[in,out]pOrderMsgDer zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen.
Achtung
Das gewünschte wird nur gelingen, wenn die Datenbank von keiner Instanz geöffnet ist.
Ohne vorheriges Verbinden (siehe auch PrivateBase::connect() ) scheitert die Methode.
Siehe auch
OrderMsg::eREINDEX_BASE

◆ releaseStrIndexesFromTransactionStepList()

void glo::Manager::releaseStrIndexesFromTransactionStepList ( std::list< TransactionManager::TransactionBase * > & rTransactionStepList,
std::string & rsSchemaName )
protected

Es werden alle reservierten String-Indexe im RealIndexPool und allen TransactionIndexPool's freigegeben, die von den TransactionManager::TransactionStep's im Parameter rTransactionStepList reserviert wurden.

Parameter
[in]rTransactionStepListDie Liste mit den TransactionManager::TransactionPoint's und TransactionManager::TransactionStep's (der Transaktionsverlauf).
[in]rsSchemaNameBezeichnung des Schemas bzw. der Datenbank.
Siehe auch
IndexPool::releaseObjStrIdTuple (...)

◆ removeCommunicator()

void glo::Manager::removeCommunicator ( OrderMsg * pOrderMsg,
WatchNotifyManager * pWatchNotifyManager = 0 )
protected

Verarbeitet den Auftrag, einen bestimmten Kommunikator (ersichtlich aus dem übergebenen Auftrag) zu entfernen. Das bedeutet, dass alle noch nicht verarbeiteten Auftrage des Kommunikatores verworfen werden.

Parameter
[in,out]pOrderMsgDer zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen.
[in]pWatchNotifyManagerWenn ein Zeiger auf einen WatchNotifyManager übergeben wird, werden auch dort noch vorhandene Aufträge storniert.
Siehe auch
OrderMsg::eCLOSE_BASE
OrderMsg::eDELETE_COMMUNICATOR_WATCHES
OrderMsg::eNOTIFY_CLIENT

◆ repairBase()

void glo::Manager::repairBase ( OrderMsg * pOrderMsg)
protected

Verarbeitet den Auftrag, eine bestimmte Datenbank zu reparieren.

Siehe auch
Base::repairsBase (...)
Parameter
[in,out]pOrderMsgDer zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen.
Achtung
Das gewünschte wird nur gelingen, wenn die Datenbank von keiner Instanz geöffnet ist.
Ohne vorheriges Verbinden (siehe auch PrivateBase::connect() ) scheitert die Methode.
Siehe auch
OrderMsg::eREPAIR_BASE

◆ sendABORTtoTransactionManager()

int glo::Manager::sendABORTtoTransactionManager ( Communicator * pCommunicator,
std::string sSchemaName )
protected

Lässt den glo::TransactionManager den Abbruch einer Transaktion eines Kommunikators verarbeiten.
Wird von void sendToTransactionManager(OrderMsg*) aufgerufen

Parameter
[in]pCommunicatorDer beauftragende Kommunikator.
[in]sSchemaNameDie Bezeichnung des Schemas bzw. der Datenbank.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ sendBEGINtoTransactionManager()

int glo::Manager::sendBEGINtoTransactionManager ( Communicator * pCommunicator)
protected

Lässt den glo::TransactionManager den Start einer Transaktion eines Kommunikators verarbeiten.
Wird von void sendToTransactionManager(OrderMsg*) aufgerufen

Parameter
[in]pCommunicatorDer beauftragende Kommunikator.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ sendCOMMITtoTransactionManager()

int glo::Manager::sendCOMMITtoTransactionManager ( Communicator * pCommunicator,
std::string sSchemaName,
std::map< ObjID, Record *, std::less< ObjID > > * pInputDataRecordMap )
protected

Lässt den glo::TransactionManager den Abschluss einer Transaktion eines Kommunikators verarbeiten.
Wird von void sendToTransactionManager(OrderMsg*) aufgerufen

Parameter
[in]pCommunicatorDer beauftragende Kommunikator.
[in]sSchemaNameDie Bezeichnung des Schemas bzw. der Datenbank.
[in]pInputDataRecordMapWenn nicht NULL_PTR, dann sind dort Records mit Attributen ohne Datei-Position drinn, die gesetzt werden.
Rückgabe
Ein Rückgabewert < 0 zeigt einen Fehler an.

◆ sendToLockManager() [1/2]

void glo::Manager::sendToLockManager ( OrderMsg * pOrderMsg)
protected

Verarbeitet einen Auftrag für den LockManager in m_pLockManager.

Parameter
[in,out]pOrderMsgDer zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen.
Siehe auch
OrderMsg::eLOCK
OrderMsg::eUNLOCK
OrderMsg::eIS_LOCKED
OrderMsg::eIS_ALLOWED
OrderMsg::eGET_PROCESSING_POSSIBILITIES

◆ sendToLockManager() [2/2]

int glo::Manager::sendToLockManager ( OrderMsg::EnOrderType eOrderType,
SchemaInterface * pSchema,
std::list< ObjID > * pObjectIDsToBeLocked,
LockSpecification * pLockSpec,
Communicator * pCommunicator )
protected

Verarbeitet einen Auftrag für den LockManager in m_pLockManager.

Parameter
[in]eOrderTypeDer Typ der Abbarbeitung.
Erlaubt sind:
[in]pSchemaDas Schema der Datanbank.
[in]pObjectIDsToBeLockedDie Liste der Objekt-IDs der Objekte, die gesperrt werden sollen.
[in]pLockSpecDer 'Lock-Modus' und die 'Sperrtiefe'.
[in]pCommunicatorDer beauftragende Kommunikator.

◆ sendToReaderThread()

◆ sendToTransactionManager()

void glo::Manager::sendToTransactionManager ( OrderMsg * pOrderMsg)
protected

Verarbeitet einen Auftrag für den TransactionManager in m_pTransactionManager.

Parameter
[in,out]pOrderMsgDer zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen.
Siehe auch
OrderMsg::eSTORE
OrderMsg::eDELETE
OrderMsg::eBEGIN_TRANSACTION
OrderMsg::eCOMMIT_TRANSACTION
OrderMsg::eABORT_TRANSACTION

◆ sendToWatchNotifyManager()

void glo::Manager::sendToWatchNotifyManager ( OrderMsg * pOrderMsg)
protected

◆ sendToWriter()

void glo::Manager::sendToWriter ( OrderMsg * pOrderMsg)
protected

Verarbeitet einen Auftrag für einen TableWriterInterface über das SchemaMapItem in der m_SchemaMap bzw. für den TransactionManager in m_pTransactionManager.

Wenn ein Auftrag an das TableWriterInterface, werden zuerst alle ReaderThreads angehalten, dann der Auftrag bearbeitet um danach wieder die ReaderThreads wieder gestartet.

Parameter
[in,out]pOrderMsgDer zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen.
Siehe auch
OrderMsg::eASSIGN

◆ setActionVisualiser()

static void glo::Manager::setActionVisualiser ( ManagerActionVisualiser * pActionVisualiser)
static

Übernimmt ein Anzeigeobjekt um seine Aktionen in Abhängigkeit vom m_ulShowLevel anzeigen zu lassen.

Parameter
[in]pActionVisualiserDas Anzeigeobjekt.
Achtung
Das übergebene Anzeigeobjekt geht in den Besitz dieses Objekts über, darf ergo von übergender Instanz nicht mehr aus dem Speicher entfernt werden, dieses erledigt diese Instanz.

◆ setShowLevel()

static void glo::Manager::setShowLevel ( ShowLevel ulLevel)
static

Setzt die Anzeigeeinstellung.

Parameter
[in]ulLevelDie Anzeigeeinstellung.

◆ showAction()

static void glo::Manager::showAction ( const OrderMsg * pOrderMsg,
const std::string & rsActiontype,
const std::string & rsActionString,
char cSE )
static

Lässt das Anzeigeobjekt in m_pActionVisualiser eine Auftragsaktion anzeigen, wenn es vorhanden ist.

Parameter
[in]pOrderMsgDer Auftrag mit der Kommunikator-ID und der Kommunikator-Bezeichnung für die Anzeige.
[in]rsActiontypeDer Typ der Anzeige als String.
[in]rsActionStringDie Aktion als String.
[in]cSEEin Zusatz wie z.B. eine Richtungsanmzeige (z.B. '<' oder '>').

◆ showActionString()

static void glo::Manager::showActionString ( const std::string & sActionString)
static

Lässt das Anzeigeobjekt in m_pActionVisualiser den übergebenen String anzeigen, wenn es vorhanden ist.

Parameter
[in]sActionStringDer anzuzeigende Text,

◆ showOrderAction()

static void glo::Manager::showOrderAction ( OrderMsg * pOrderMsg,
char cSE )
static

Lässt das Anzeigeobjekt in m_pActionVisualiser eine Auftragsaktion anzeigen, wenn es vorhanden ist.

Parameter
[in]pOrderMsgDer Auftrag mit der Kommunikator-ID und der Kommunikator-Bezeichnung für die Anzeige.
[in]cSEEin Zusatz wie z.B. eine Richtungsanmzeige (z.B. '<' oder '>')

◆ showReaderAction()

static void glo::Manager::showReaderAction ( OrderMsg * pOrderMsg,
const std::string & rsActionString,
char cSE )
static

Lässt das Anzeigeobjekt in m_pActionVisualiser, wenn es existiert, eine Leseaktion in der Datenbank anzeiegn.

Parameter
[in]pOrderMsgDer Auftrag mit der Kommunikator-ID und der Kommunikator-Bezeichnung für die Anzeige.
[in]rsActionStringDie Aktion als String.
[in]cSEEin Zusatz wie z.B. eine Richtungsanmzeige (z.B. '<' oder '>')

◆ showTransactionAction()

static void glo::Manager::showTransactionAction ( OrderMsg * pOrderMsg,
const std::string & rsActionString,
char cSE )
static

Lässt das Anzeigeobjekt in m_pActionVisualiser, wenn es existiert, eine Transaktion-Aktion in der Datenbank anzeiegn.

Parameter
[in]pOrderMsgDer Auftrag mit der Kommunikator-ID und der Kommunikator-Bezeichnung für die Anzeige.
[in]rsActionStringDie Aktion als String.
[in]cSEEin Zusatz wie z.B. eine Richtungsanmzeige (z.B. '[', ']' oder 'X')

◆ showWriterAction()

static void glo::Manager::showWriterAction ( OrderMsg * pOrderMsg,
const std::string & rsActionString,
char cSE )
static

Lässt das Anzeigeobjekt in m_pActionVisualiser, wenn es existiert, eine Schreibaktion in der Datenbank anzeiegn.

Parameter
[in]pOrderMsgDer Auftrag mit der Kommunikator-ID und der Kommunikator-Bezeichnung für die Anzeige.
[in]rsActionStringDie Aktion als String.
[in]cSEEin Zusatz wie z.B. eine Richtungsanmzeige (z.B. '<' oder '>')

◆ switchOffAllRecieverReader()

void glo::Manager::switchOffAllRecieverReader ( )
protected

Läßt alle Receiver in der m_ReceiverMap eine Pause einlegen.

◆ switchOffRecieverReader()

void glo::Manager::switchOffRecieverReader ( std::string sSchemaName)
protected

Läßt alle Receiver in der Manager::m_ReceiverMap, deren Kommunikator an eine bestimmte Datenbank angemeldet sind, eine Pause einlegen.

Wird u.a. genutzt, um wärend der Lesepause Daten in die Tabellen zu schreiben.

Parameter
[in]sSchemaNameDie Bezeichnung des Schemas bzw. der Datenbank.

◆ switchOnAllRecieverReader()

void glo::Manager::switchOnAllRecieverReader ( )
protected

Läßt alle Receiver in der m_ReceiverMap eine Pause beenden.

◆ switchOnRecieverReader()

void glo::Manager::switchOnRecieverReader ( std::string sSchemaName)
protected

Läßt alle Receiver in der m_ReceiverMap, deren Kommunikator an eine bestimmte Datenbank angemeldet sind, eine Pause beenden.

Parameter
[in]sSchemaNameDie Bezeichnung des Schemas bzw. der Datenbank.

◆ takeOrder()

int glo::Manager::takeOrder ( OrderMsg * pOrderMsg)

Übernimmt einen Auftrag.

Parameter
[in]pOrderMsgDer abzuarbeitende Auftrag.

◆ transactionManagerSetTransactionStep()

int glo::Manager::transactionManagerSetTransactionStep ( const SchemaInterface & rSchema,
Communicator * pCommunicator,
TransactionManager::EnStoreDelete eStoreOrDelete,
Record * pRecord )
protected

Setzt einen Transaktionstep aus sendToTransactionManager (...) im m_pTransactionManager.

Parameter
[in]rSchemaDas Schema der betroffene Datenbank.
[in]pCommunicatorDer betroffene Kommunikator.
[in]eStoreOrDeleteSpeichern oder Löschen.
[in]pRecordDer Datensatz, welcher in der Transaktion gespeichert bzw. gelöscht werden soll.
Rückgabe
Eine Rückgabe < 0 zeigt einen Fehler an.
Siehe auch
TransactionManager->setTransactionStep (...)

◆ unlockTransactionStepList()

void glo::Manager::unlockTransactionStepList ( std::list< TransactionManager::TransactionBase * > & rTransactionStepList,
Communicator * pCommunicator,
const std::string & rsSchemaName,
TransactionIndexPool * pTransactionIndexPool,
bool bDelete )
protected

Es werden alle gelockten Datensätze in der rTransactionStepList im m_pLockManager freigegeben.

Parameter
[in]rTransactionStepListDie Liste mit den TransactionManager::TransactionPoint's und TransactionManager::TransactionStep's (der Transaktionsverlauf).
[in]pCommunicatorDer Kommunikatore, welcher die Transaktion 'besitzt'. Wird hier zum Sperren der Datensätze benötigt.
[in]rsSchemaNameBezeichnung des Schemas bzw. der Datenbank.
[in]pTransactionIndexPoolSollte ein Zeiger auf ein TransactionIndexPool übergeben sein, wird dort die Objekt-ID eines gelöschten Objekts entfernt.
[in]bDeleteWenn bDelete true, wird der jeweilige TransactionManager::TransactionStep aus dem Speicher entfernt und damit der enthaltene Record 'vergessen'.
Siehe auch
LockManager::unlockObject (...)
TransactionIndexPool::removeTransactionDeletedObjID (...)

◆ work()

virtual void glo::Manager::work ( )
overrideprotectedvirtual

Diese Methode wird als Thread ausgeführt. Es wird die Nachrichten-Queue nach Aufträgen abgefragt (es wird 'geschlafen' bis eine Nachricht in die Queue gestellt wird) und nach Auswertung des Auftrags eine passende Methode aufgerufen.

Implementiert eut::RepeatingThread.

Freundbeziehungen und Funktionsdokumentation

◆ LockManager

friend class LockManager
friend

◆ OrderMsg

friend class OrderMsg
friend

◆ TableWriterInterface

friend class TableWriterInterface
friend

◆ TcpServerReceiver

friend class TcpServerReceiver
friend

◆ WatchNotifyManager

friend class WatchNotifyManager
friend

Dokumentation der Datenelemente

◆ m_bWorkingExclusiv

bool glo::Manager::m_bWorkingExclusiv
private

Wird true, wenn eine Datenbank geschlossen wird. Dann werden Aufträge erstmal nicht mehr abgearbeitet bis wieder false.

◆ m_ConnectedClientsMap

std::map< SOCKET, ClientInfo , std::less< SOCKET > > glo::Manager::m_ConnectedClientsMap
private

Liste der Komunikatoren, welche mit dem Server verbunden sind.

◆ m_KnownSchemes

std::vector<std::string> glo::Manager::m_KnownSchemes
private

Die bekannten Schemata bzw. deren Bezeichnungen.

◆ m_LocalCriticalSection

eut::CriticalSection glo::Manager::m_LocalCriticalSection
private

Um einen Thread-sicheren Zugriff auf die Elemente des Manager zu gewährleistenn, wird über diese lokale CriticalSection der Zugriff synchronisiert.

◆ m_MsgQueue

std::queue< OrderMsg * > glo::Manager::m_MsgQueue
private

Die Queue mit den abzuarbeitenden Aufträgen.

◆ m_pActionVisualiser

ManagerActionVisualiser* glo::Manager::m_pActionVisualiser
staticprivate

Das Anzeigenausgabe-Objekt.

◆ m_pInstance

Manager* glo::Manager::m_pInstance
staticprivate

Statischer Zeiger auf einzige Instanz dieser Klasse.

◆ m_pLockManager

LockManager* glo::Manager::m_pLockManager
private

Verwaltet die Sperren der einzelnen Objekte.

◆ m_pRealIndexPool

RealIndexPool* glo::Manager::m_pRealIndexPool
private

Verwaltet die Indizes der einzelnen geöffneten Datenbanken.

◆ m_pTransactionManager

TransactionManager* glo::Manager::m_pTransactionManager
private

Verwaltet die Transaktionen der einzelnen Komunikatoren.

◆ m_pWatchNotifyManager

WatchNotifyManager* glo::Manager::m_pWatchNotifyManager
private

Verwaltet die Überwachungen der einzelnen Komunikatoren.

◆ m_ReceiverMap

std::map< Communicator *, Receiver * , std::less< Communicator * > > glo::Manager::m_ReceiverMap
private

Liste der Komunikatoren mit geöffneter Datenbank, welche mit dem Manager kommunizieren.

◆ m_SchemaMap

std::map< std::string, SchemaMapItem *, std::less< std::string > > glo::Manager::m_SchemaMap
private

Die SchemaInterfaces in einem SchemaMapItem, sortiert nach der Schemabezeichnung bzw. dem Datenbanknamen.

◆ m_strSchemaPath

std::string glo::Manager::m_strSchemaPath
private

Der Datei-Pfad wo die Schemadateien zu finden sind (z.B. "C:/Pfad/").

◆ m_uiCommunicatorID

unsigned int glo::Manager::m_uiCommunicatorID
private

Wird hochgezählt und jedem anmeldenden Kommunikator als ID übergeben.

◆ m_ulShowLevel

ShowLevel glo::Manager::m_ulShowLevel
staticprivate

Die Anzeigenausgabe-Einstellung.

◆ ms_iReferenceCounter

int glo::Manager::ms_iReferenceCounter
staticprivate

Der Referenzzähler auf die einzige Instanz dieser Klasse.


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