GlobalObjects
|
Das Objekt dieser Klasse ist die zentrale Anlaufstelle für Aktionen, welche mit GlobalObjects-Daten zu tun haben. Mehr ...
#include <GloManager.h>
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 |
RealIndexPool * | getRealIndexPool () |
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 Manager * | create (const std::string &rsSchemaPath, const std::vector< std::string > &rAllowedSchemes) |
static int | destroy () |
static Manager * | getAvailableInstance () |
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, TransactionOwner *pCommunicatorWithTreadID=nullptr) const |
void | getDependRecordsRecursive (std::map< ObjID, Record *, std::less< ObjID > > &rDependRecordMap, Record &rSourceRecord, const TableReaderInterface &rTableReaderInterface, EnDeepMode eDeepMode, TransactionOwner *pCommunicatorWithTreadID=nullptr) const |
std::size_t | getNumberReceiver () const |
std::size_t | getNumberReceiver (std::string sSchemaName) const |
Manager::Receiver * | getReceiver (Communicator *pCommunicator) |
int | getRecord (Record *&prRetVal, const glo::ObjID &rObjID, const TableReaderInterface &rTableReaderInterface, TransactionOwner *pCommunicatorWithTreadID=nullptr) const |
SchemaInterface * | getSchemaInterface (const std::string &rsSchemaName) const |
Manager::SchemaMapItem * | getSchemaMapItem (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 (const TransactionOwner &rCommunicatorWithTreadID, std::string sSchemaName) |
int | sendBEGINtoTransactionManager (const TransactionOwner &rCommunicatorWithTreadID) |
int | sendCOMMITtoTransactionManager (const TransactionOwner &rCommunicatorWithTreadID, 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, const TransactionOwner &rCommunicatorWithTreadID) |
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, const TransactionOwner &rCommunicatorWithTreadID, TransactionManager::EnStoreDelete eStoreOrDelete, Record *pRecord) |
void | unlockTransactionStepList (std::list< TransactionManager::TransactionBase * > &rTransactionStepList, const TransactionOwner &rCommunicatorWithTreadID, 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 &) | |
Manager & | operator= (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 |
LockManager * | m_pLockManager |
RealIndexPool * | m_pRealIndexPool |
TransactionManager * | m_pTransactionManager |
WatchNotifyManager * | m_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 ManagerActionVisualiser * | m_pActionVisualiser |
static Manager * | m_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 |
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.
|
protected |
Der Standard-Konstruktor steht nicht zur Verfügung.
|
protected |
Konstruktor mit Parameterübergabe; darf nur von Manager::create (...) aufgerufen werden..
[in] | rsSchemaPath | Der Datei-Pfad wo die Schemadateien zu finden sind (z.B. "C:/Pfad/"). |
[in] | rAllowedSchemes | Die bekannten Schemata bzw. deren Bezeichnungen. |
eut::ErrorNException | Bei einem Fehler wird eine Exception geworfen. |
|
protectedvirtual |
Destruktor.
|
private |
Der Copy-Konstruktor steht niccht zur Verfügung.
|
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.
[in] | iCheckStatus | Der Checkstatus, siehe Methodenbeschreibung. |
[in] | rSchema | Das betroffene Schema bzw. die Datenbank. |
[in] | rRecordMap | Die Menge der Record's, deren ObjID geprüft werden. |
[in] | rGloIndexPool | Der IndexPool, in dem die Prüfung stattfindet. |
|
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.
[in,out] | pOrderMsg | Der zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen. |
|
protected |
Verarbeitet den Auftrag, eine bestimmte Datenbank zu komprimieren. Es wird die Datenbank nach dem Komprimieren neu indiziert.
[in,out] | pOrderMsg | Der zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen. |
|
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.
[in] | rsSchemaPath | Der Datei-Pfad wo die Schemadateien zu finden sind (z.B. "C:/Pfad/"). |
[in] | rAllowedSchemes | Die bekannten Schemata bzw. deren Bezeichnungen. |
eut::ErrorNException | Bei einem Fehler wird eine Exception geworfen. |
|
protected |
Liefert einen Zeiger auf ein neu instanziiertes SchemaInterface mit der übergebenen Bezeichnung, wenn es existiert.
[in,out] | prNewSchemaInterface | Zeiger auf ein neu erstelltes SchemaInterface. |
[in] | rsSchemaName | Die Bezeichnung des Schemas bzw. der Datenbank. |
|
protected |
Entfernt alle Elemente in m_ReceiverMap und aus dem Speicher.
|
protected |
Entfernt alle Elemente in der m_SchemaMap und aus dem Speicher.
|
protected |
Verarbeitet den Auftrag, alle Beobachtungen eines bestimmten Kommunikators (ersichtlich aus dem übergebenen Auftrag) über den m_pWatchNotifyManager zu entfernen.
[in,out] | pOrderMsg | Der zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen. |
|
static |
|
protected |
Verarbeitet den Auftrag, alle ClientInfo's im Auftrag einzufügen (siehe auch OrderMsg::setOrderResult (...) ).
[in,out] | pOrderMsg | Der zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen. |
void glo::Manager::getAllClients | ( | std::vector< ClientInfo > & | rClientInfoVector, |
std::string * | psSchemaName = 0 ) const |
Liefert alle angemeldeten Kommunikatoren.
[in,out] | rClientInfoVector | Die angemeldeten Kommunikatoren mit ihrer Kommunikator-ID und der Bezeichnung der geöffneten Datenbank. |
[in] | psSchemaName | Wenn ein Zeiger auf eine Schemabezeichnung übergeben wird, werden nur die Kommunikatoren geliefert, welche die Datenbank mit dieser Schemabezeichnung geöffnet haben. |
|
protected |
Verarbeitet den Auftrag, alle unterstützten DatenTypen mit deren Max- und Min-Werten (LimitRecord) im Auftrag einzufügen (siehe auch OrderMsg::setOrderResult (...) ).
[in,out] | pOrderMsg | Der zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen. |
|
protected |
Verarbeitet den Auftrag, die Bezeichnungen aller bekannten Schemata bzw. Datenbanken, im Auftrag einzufügen (siehe auch OrderMsg::setOrderResult (...) ).
[in,out] | pOrderMsg | Der zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen. |
|
protected |
Liefert die TransactionIndexPool's aus allen Receiver in der m_ReceiverMap, wenn diese einen TransactionIndexPool haben.
[in,out] | rTransactionIndexPoolVector | Die TransactionIndexPool's. |
[in] | psSchemaName | Wenn dieser Zeiger übergeben, dann werden nur die TransactionIndexPool's, deren Clients bei der korrespondierenden Datenbank angemeldet sind, geliefert. |
[in] | pWithoutThisCommunicator | Wenn dieser Zeiger übergeben, wird dessen evtl. vorhandener TransactionIndexPool nicht geliefert. |
|
static |
Liefert eine Instanz von Manager, wenn vorhanden. Es wird der Referenzzähler inkrementiert.
|
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 (...) ).
[in,out] | pOrderMsg | Der zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen. |
|
protected |
Verarbeitet den Auftrag, eine Klasseninformation mit einer bestimmten Klassen-ID, welche im Auftrag mitgeleifert wird, im Auftrag einzufügen (siehe auch OrderMsg::setOrderResult (...) ).
[in,out] | pOrderMsg | Der zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen. |
|
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 (...) ).
[in,out] | pOrderMsg | Der zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen. |
|
protected |
Liefert alle abhängigen Datensätze in rDependRecordMap vom rSourceRecord in Abhängigkeit vom eDeepMode aus den Tabellen bzw. vom glo::TransactionManager.
[in,out] | rDependRecordMap | Der Container mit den abhängigen Datensätzen. |
[in] | rSourceRecord | Der Datensatz, dessen abhängigen Datensätze erwartet werden. |
[in] | rTableReaderInterface | Der Tabellen-Leser. |
[in] | eDeepMode | Der Aktionstiefenmodus. |
[in] | pCommunicatorWithTreadID | Wenn ein Kommunikator mit Thread-ID ü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. |
|
protected |
Liefert alle abhängigen Datensätze in rDependRecordMap vom rSourceRecord in Abhängigkeit vom eDeepMode aus den Tabellen bzw. vom glo::TransactionManager.
[in,out] | rDependRecordMap | Der Container mit den abhängigen Datensätzen. |
[in] | rSourceRecord | Der Datensatz, dessen abhängigen Datensätze erwartet werden. |
[in] | rTableReaderInterface | Der Tabellen-Leser. |
[in] | eDeepMode | Der Aktionstiefenmodus. |
[in] | pCommunicatorWithTreadID | Wenn ein Kommunikator mit Thread-ID ü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. |
void glo::Manager::getKnownBases | ( | std::vector< std::string > & | rKnownBasesVector | ) | const |
Kopiert die Bezeichnungen aller bekannten Schemata bzw. Datenbanken, in übergebenen Vector.
[in,out] | rKnownBasesVector | die Bezeichnungen aller bekannten Schemata bzw. Datenbanken. |
|
protected |
Liefert die Anzahl der Receiver in der m_ReceiverMap.
|
protected |
Liefert die Anzahl der Receiver in der m_ReceiverMap, deren Kommunikator an eine bestimmte Datenbank angemeldet sind.
[in] | sSchemaName | Die Bezeichnung des Schemas bzw. der Datenbank. |
RealIndexPool * glo::Manager::getRealIndexPool | ( | ) |
|
protected |
Liefert einen Receiver mit Referenz auf einen bestimmten Kommunikator aus der m_ReceiverMap.
[in] | pCommunicator | Der Kommunikator. |
|
protected |
Liefert einen Datensatz aus den Tabellen bzw. vom glo::TransactionManager mit übergebener Objekt-ID.
[in,out] | prRetVal | Der Datensatz. |
[in] | rObjID | Die Objekt-ID des Datensatzes. |
[in] | rTableReaderInterface | Der Tabellen-Leser. |
[in] | pCommunicatorWithTreadID | Wenn ein Kommunikator mit Thread-ID übergeben wird, wird der zu lesende Datensatz vorzugsweise aus der aktuellen Transaktion geholt und erst wenn dort nicht vorhanden, aus den Tabellen. |
|
protected |
Liefert einen Zeiger auf ein SchemaInterface mit der übergebenen Bezeichnung aus der m_SchemaMap.
[in] | rsSchemaName | Die Bezeichnung des Schemas bzw. der Datenbank. |
|
protected |
Liefert einen Zeiger auf ein SchemaMapItem mit der übergebenen Bezeichnung seines Schemas aus der m_SchemaMap.
[in] | rsSchemaName | Die Bezeichnung des Schemas bzw. der Datenbank. |
std::string glo::Manager::getSchemaPath | ( | ) | const |
Liefert den Datei-Pfad wo die Schemadatei zu finden ist.
|
static |
Liefert die Anzeigeeinstellung.
|
protected |
Fügt übergebene Datenbanknamen in m_KnownSchemes ein, wenn noch nicht vorhanden.
[in] | rNewSchemes | Die Bezeichnung des Schemas bzw. der Datenbank. |
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.
|
protected |
Liefert, wenn noch nicht geöffnet, das LockFile der Datenbank, ersichtlich aus dem übergebenen rSchemaInterface.
[in,out] | prLockFile | Das einmalig geöffnete LockFile. |
[in] | rSchemaInterface | Das Schema, dessen Datenbank durch das LogFile gesperrt werden soll. |
|
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.
[in,out] | pOrderMsg | Der zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen. |
Der Zuweisungsoperator steht nicht zur Verfügung.
|
protected |
Verarbeitet den Auftrag, einen Client (ersichtlich aus dem übergebenen Auftrag) aus seineer m_ConnectedClientsMap zu entfernen.
[in,out] | pOrderMsg | Der zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen. |
|
protected |
Verarbeitet den Auftrag, einen neuen Client (ersichtlich aus dem übergebenen Auftrag) in seine m_ConnectedClientsMap einzufügen.
[in,out] | pOrderMsg | Der zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen. |
|
protected |
Initiiert über seine m_MsgQueue ein Notify im m_pWatchNotifyManager, welches ein Objekt betrifft.
[in] | nWatchNotifyMode | Der Überwachungsmodus. |
[in] | rObjID | Die Objekt-ID des betroffenen Objekts. |
[in] | pCommunicator | Der Kommunikator. |
[in] | rsSchemaName | Der Schemaname wird für das Benachrichtigen gebraucht. |
|
protected |
Initiiert über seine m_MsgQueue Notify's im m_pWatchNotifyManager, welches die Objekte mit den Objekt-IDs aus rObjIDList betrifft.
[in] | nWatchNotifyMode | Der Überwachungsmodus. |
[in] | rObjIDList | Die Objekt-IDs der betroffenen Objekte. |
[in] | pCommunicator | Der Kommunikator. |
[in] | rsSchemaName | Der Schemaname wird für das Benachrichtigen gebraucht. |
|
protected |
Verarbeitet den Auftrag, eine bestimmte Datenbank zu reindizieren.
[in,out] | pOrderMsg | Der zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen. |
|
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.
[in] | rTransactionStepList | Die Liste mit den TransactionManager::TransactionPoint's und TransactionManager::TransactionStep's (der Transaktionsverlauf). |
[in] | rsSchemaName | Bezeichnung des Schemas bzw. der Datenbank. |
|
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.
[in,out] | pOrderMsg | Der zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen. |
[in] | pWatchNotifyManager | Wenn ein Zeiger auf einen WatchNotifyManager übergeben wird, werden auch dort noch vorhandene Aufträge storniert. |
|
protected |
Verarbeitet den Auftrag, eine bestimmte Datenbank zu reparieren.
[in,out] | pOrderMsg | Der zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen. |
|
protected |
Lässt den glo::TransactionManager den Abbruch einer Transaktion eines Kommunikators verarbeiten.
Wird von void sendToTransactionManager(OrderMsg*) aufgerufen
[in] | rCommunicatorWithTreadID | Der beauftragende Kommunikator mit Thread-ID. |
[in] | sSchemaName | Die Bezeichnung des Schemas bzw. der Datenbank. |
|
protected |
Lässt den glo::TransactionManager den Start einer Transaktion eines Kommunikators verarbeiten.
Wird von void sendToTransactionManager(OrderMsg*) aufgerufen
[in] | rCommunicatorWithTreadID | Der beauftragende Kommunikator mit Thread-ID. |
|
protected |
Lässt den glo::TransactionManager den Abschluss einer Transaktion eines Kommunikators verarbeiten.
Wird von void sendToTransactionManager(OrderMsg*) aufgerufen
[in] | rCommunicatorWithTreadID | Der beauftragende Kommunikator mit Thread-ID. |
[in] | sSchemaName | Die Bezeichnung des Schemas bzw. der Datenbank. |
[in] | pInputDataRecordMap | Wenn nicht nullptr, dann sind dort Records mit Attributen ohne Datei-Position drinn, die gesetzt werden. |
|
protected |
Verarbeitet einen Auftrag für den LockManager in m_pLockManager.
[in,out] | pOrderMsg | Der zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen. |
|
protected |
Verarbeitet einen Auftrag für den LockManager in m_pLockManager.
[in] | eOrderType | Der Typ der Abbarbeitung. Erlaubt sind: |
[in] | pSchema | Das Schema der Datanbank. |
[in] | pObjectIDsToBeLocked | Die Liste der Objekt-IDs der Objekte, die gesperrt werden sollen. |
[in] | pLockSpec | Der 'Lock-Modus' und die 'Sperrtiefe'. |
[in] | rCommunicatorWithTreadID | Der beauftragende Kommunikator mit Thread-ID. |
|
protected |
Verarbeitet einen Auftrag für einen Receiver aus der m_ReceiverMap bzw. auch für den TransactionManager in m_pTransactionManager.
[in,out] | pOrderMsg | Der zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen. |
|
protected |
Verarbeitet einen Auftrag für den TransactionManager in m_pTransactionManager.
[in,out] | pOrderMsg | Der zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen. |
|
protected |
Verarbeitet einen Auftrag für den WatchNotifyManager in m_pWatchNotifyManager.
[in,out] | pOrderMsg | Der zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen. |
|
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.
[in,out] | pOrderMsg | Der zu bearbeitende Auftrag. Evtl. auftretenden Fehler werden im Auftrag eingetragen. |
|
static |
Übernimmt ein Anzeigeobjekt um seine Aktionen in Abhängigkeit vom m_ulShowLevel anzeigen zu lassen.
[in] | pActionVisualiser | Das Anzeigeobjekt. |
|
static |
Setzt die Anzeigeeinstellung.
[in] | ulLevel | Die Anzeigeeinstellung. |
|
static |
Lässt das Anzeigeobjekt in m_pActionVisualiser eine Auftragsaktion anzeigen, wenn es vorhanden ist.
[in] | pOrderMsg | Der Auftrag mit der Kommunikator-ID und der Kommunikator-Bezeichnung für die Anzeige. |
[in] | rsActiontype | Der Typ der Anzeige als String. |
[in] | rsActionString | Die Aktion als String. |
[in] | cSE | Ein Zusatz wie z.B. eine Richtungsanmzeige (z.B. '<' oder '>'). |
|
static |
Lässt das Anzeigeobjekt in m_pActionVisualiser den übergebenen String anzeigen, wenn es vorhanden ist.
[in] | sActionString | Der anzuzeigende Text, |
|
static |
Lässt das Anzeigeobjekt in m_pActionVisualiser eine Auftragsaktion anzeigen, wenn es vorhanden ist.
[in] | pOrderMsg | Der Auftrag mit der Kommunikator-ID und der Kommunikator-Bezeichnung für die Anzeige. |
[in] | cSE | Ein Zusatz wie z.B. eine Richtungsanmzeige (z.B. '<' oder '>') |
|
static |
Lässt das Anzeigeobjekt in m_pActionVisualiser, wenn es existiert, eine Leseaktion in der Datenbank anzeiegn.
[in] | pOrderMsg | Der Auftrag mit der Kommunikator-ID und der Kommunikator-Bezeichnung für die Anzeige. |
[in] | rsActionString | Die Aktion als String. |
[in] | cSE | Ein Zusatz wie z.B. eine Richtungsanmzeige (z.B. '<' oder '>') |
|
static |
Lässt das Anzeigeobjekt in m_pActionVisualiser, wenn es existiert, eine Transaktion-Aktion in der Datenbank anzeiegn.
[in] | pOrderMsg | Der Auftrag mit der Kommunikator-ID und der Kommunikator-Bezeichnung für die Anzeige. |
[in] | rsActionString | Die Aktion als String. |
[in] | cSE | Ein Zusatz wie z.B. eine Richtungsanmzeige (z.B. '[', ']' oder 'X') |
|
static |
Lässt das Anzeigeobjekt in m_pActionVisualiser, wenn es existiert, eine Schreibaktion in der Datenbank anzeiegn.
[in] | pOrderMsg | Der Auftrag mit der Kommunikator-ID und der Kommunikator-Bezeichnung für die Anzeige. |
[in] | rsActionString | Die Aktion als String. |
[in] | cSE | Ein Zusatz wie z.B. eine Richtungsanmzeige (z.B. '<' oder '>') |
|
protected |
Läßt alle Receiver in der m_ReceiverMap eine Pause einlegen.
|
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.
[in] | sSchemaName | Die Bezeichnung des Schemas bzw. der Datenbank. |
|
protected |
Läßt alle Receiver in der m_ReceiverMap eine Pause beenden.
|
protected |
Läßt alle Receiver in der m_ReceiverMap, deren Kommunikator an eine bestimmte Datenbank angemeldet sind, eine Pause beenden.
[in] | sSchemaName | Die Bezeichnung des Schemas bzw. der Datenbank. |
int glo::Manager::takeOrder | ( | OrderMsg * | pOrderMsg | ) |
Übernimmt einen Auftrag.
[in] | pOrderMsg | Der abzuarbeitende Auftrag. |
|
protected |
Setzt einen Transaktionstep aus sendToTransactionManager (...) im m_pTransactionManager.
[in] | rSchema | Das Schema der betroffene Datenbank. |
[in] | TransactionOwner | Der betroffene Kommunikator mit Thread-ID. |
[in] | eStoreOrDelete | Speichern oder Löschen. |
[in] | pRecord | Der Datensatz, welcher in der Transaktion gespeichert bzw. gelöscht werden soll. |
|
protected |
Es werden alle gelockten Datensätze in der rTransactionStepList im m_pLockManager freigegeben.
[in] | rTransactionStepList | Die Liste mit den TransactionManager::TransactionPoint's und TransactionManager::TransactionStep's (der Transaktionsverlauf). |
[in] | rCommunicatorWithTreadID | Der Kommunikatore mit Thread-ID, welcher die Transaktion 'besitzt'. Wird hier zum Sperren der Datensätze benötigt. |
[in] | rsSchemaName | Bezeichnung des Schemas bzw. der Datenbank. |
[in] | pTransactionIndexPool | Sollte ein Zeiger auf ein TransactionIndexPool übergeben sein, wird dort die Objekt-ID eines gelöschten Objekts entfernt. |
[in] | bDelete | Wenn bDelete true, wird der jeweilige TransactionManager::TransactionStep aus dem Speicher entfernt und damit der enthaltene Record 'vergessen'. |
|
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.
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
private |
Wird true, wenn eine Datenbank geschlossen wird. Dann werden Aufträge erstmal nicht mehr abgearbeitet bis wieder false.
|
private |
Liste der Komunikatoren, welche mit dem Server verbunden sind.
|
private |
Die bekannten Schemata bzw. deren Bezeichnungen.
|
private |
Um einen Thread-sicheren Zugriff auf die Elemente des Manager zu gewährleistenn, wird über diese lokale CriticalSection der Zugriff synchronisiert.
|
private |
Die Queue mit den abzuarbeitenden Aufträgen.
|
staticprivate |
Das Anzeigenausgabe-Objekt.
|
staticprivate |
Statischer Zeiger auf einzige Instanz dieser Klasse.
|
private |
Verwaltet die Sperren der einzelnen Objekte.
|
private |
Verwaltet die Indizes der einzelnen geöffneten Datenbanken.
|
private |
Verwaltet die Transaktionen der einzelnen Komunikatoren.
|
private |
Verwaltet die Überwachungen der einzelnen Komunikatoren.
|
private |
Liste der Komunikatoren mit geöffneter Datenbank, welche mit dem Manager kommunizieren.
|
private |
Die SchemaInterfaces in einem SchemaMapItem, sortiert nach der Schemabezeichnung bzw. dem Datenbanknamen.
|
private |
Der Datei-Pfad wo die Schemadateien zu finden sind (z.B. "C:/Pfad/").
|
private |
Wird hochgezählt und jedem anmeldenden Kommunikator als ID übergeben.
|
staticprivate |
Die Anzeigenausgabe-Einstellung.
|
staticprivate |
Der Referenzzähler auf die einzige Instanz dieser Klasse.