GlobalObjects
|
The object of this class is the central point of contact for actions that deal with GlobalObjects data. More...
#include <GloManager.h>
Classes | |
struct | ObjIdWithDepends |
A structure to map the object ID of a persistent object with the data records of the dependent objects (dependent means; should be saved, deleted, monitored, locked, etc.). More... | |
class | Receiver |
Is the remote station or the communicator which communicates with the Manager. In multi-user operation there can be several remote stations or communicators. More... | |
class | SchemaMapItem |
Objects of this class represent an open database. There is one object of this class for each open database. More... | |
Public Member Functions | |
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) |
Public Member Functions inherited from 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 () |
Static Public Member Functions | |
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) |
Protected Member Functions | |
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 |
Protected Member Functions inherited from eut::RepeatingThread | |
ORDER | getOrder () |
STATUS | getStatus () |
void | setStatus (STATUS eStatus) |
void | threadWork () |
void | toOrder (ORDER eOrder) |
Private Member Functions | |
Manager (const Manager &) | |
Manager & | operator= (const Manager &) |
Private Attributes | |
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 |
Static Private Attributes | |
static ManagerActionVisualiser * | m_pActionVisualiser |
static Manager * | m_pInstance |
static ShowLevel | m_ulShowLevel |
static int | ms_iReferenceCounter |
Friends | |
class | LockManager |
class | OrderMsg |
class | TableWriterInterface |
class | TcpServerReceiver |
class | WatchNotifyManager |
Additional Inherited Members | |
Public Types inherited from 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 } |
Error range = -10301 to -10400 More... | |
enum | ORDER { eUNDEFINED , eDO_WORK , eEXIT } |
enum | STATUS { eAT_THE_START , eWORKING , ePAUSING , eENDING , eCOMPLETED } |
Public Attributes inherited from eut::RepeatingThread | |
std::string | m_strDebugInfo |
The object of this class is the central point of contact for actions that deal with GlobalObjects data.
There may only be one object of this class (singleton), which accesses the tables via helper objects using the schema or table interfaces.
Fetches data records from the tables and delivers them to requesting Base(s) or waits for action events of its bases.
Saves, changes or deletes data records in tables.
Instantiates a LockManager and an ObjectWatcher.
A writer thread is instantiated once for each database and a reader thread for each client.
The individual writer and reader threads each process their own message queue.
An IndexPool is instantiated, which builds an index for all bases that can be used by the readers and writers.
If the writer wants to write, all reader threads are stopped and wait until the writer is finished.
When a new CommunicaterThread is instantiated, the required schema is fetched from a list of schemas, copied and then passed to the CommunicaterThread in the constructor. If there is no schema yet, one is instantiated and inserted into the list of schemas. This means that the schema does not need to be read again each time it is used.
|
protected |
The standard constructor is not available.
|
protected |
Constructor with parameter transfer; may only be called by Manager::create (...).
[in] | rsSchemaPath | The file path where the schema files can be found (e.g. "C:/Path/") |
[in] | rAllowedSchemes | The known schemas or their names. |
eut::ErrorNException | In case of an error an exception is thrown. |
|
protectedvirtual |
Destructor.
|
private |
The copy constructor is not available.
|
protected |
If iCheckStatus & 1, it is checked if the object IDs in the GloRecords in the rRecordMap in the SchemaIndex of the passed SchemaInterface are all listed as NOT deleted in the passed IndexPool.
If iCheckStatus & 2, for each Record's in the rRecordMap any existing StringIndexes are determined and transferred to the Record's in the rRecordMap.
If iCheckStatus & 4, it is checked whether all Record's in the rRecordMap can be stored with respect to possibly defined unique indexes.
[in] | iCheckStatus | The check status, see method description. |
[in] | rSchema | The affected schema respectively database. |
[in] | rRecordMap | The set of GloRecords whose ObjID are checked. |
[in] | rGloIndexPool | The IndexPool in which the check takes place. |
|
protected |
Processes the order to close a specific database (the information is in the order). Removes the corresponding reader or decrements the reference counter of an existing reader of the communicator transferred in the order.
[in,out] | pOrderMsg | The order to be processed. Any errors that may occur are entered in the order. |
|
protected |
Processes the request to compress a specific database. The database is reindexed after compression.
[in,out] | pOrderMsg | The order to be processed. Any errors that may occur are entered in the order. |
|
static |
Instantiation function. Since Manager is a singleton class, this method instantiates it once and then only returns the pointer to the instance.
[in] | rsSchemaPath | The file path where the schema files can be found (e.g. "C:/Path/") |
[in] | rAllowedSchemes | The known schemas or their names. |
eut::ErrorNException | In case of an error an exception is thrown. |
|
protected |
Returns a pointer to a newly instantiated GloSchema interface with the given name, if it exists.
[in,out] | prNewSchemaInterface | Pointer to a newly created SchemaInterface. |
[in] | rsSchemaName | The name of the schema respectively database. |
|
protected |
Removes all elements in the m_ReceiverMap and from memory.
|
protected |
Removes all elements in the m_SchemaMap and from memory.
|
protected |
Processes the order to remove all observations of a particular communicator (apparent from the passed order) via the m_pWatchNotifyManager.
[in,out] | pOrderMsg | The order to be processed. Any errors that may occur are entered in the order. |
|
static |
|
protected |
Processes the order to insert all ClientInfo's in the order (see also OrderMsg::setOrderResult (...) )
[in,out] | pOrderMsg | The order to be processed. Any errors that may occur are entered in the order. |
void glo::Manager::getAllClients | ( | std::vector< ClientInfo > & | rClientInfoVector, |
std::string * | psSchemaName = 0 ) const |
Returns all registered communicators.
[in,out] | rClientInfoVector | The registered communicators with their communicator ID and the name of the open database. |
[in] | psSchemaName | If a pointer to a schema name is passed, only those communicators are returned that have opened the database with this schema name. |
|
protected |
Processes the order to insert all supported data types with their maximum and minimum values (LimitRecord) in the order (see also OrderMsg::setOrderResult (...) )
[in,out] | pOrderMsg | The order to be processed. Any errors that may occur are entered in the order. |
|
protected |
Processes the order to insert the names of all known schemes or databases in the order (see also OrderMsg::setOrderResult (...) ).
[in,out] | pOrderMsg | The order to be processed. Any errors that may occur are entered in the order. |
|
protected |
Returns the TransactionIndexPool's from all Receivers in the m_ReceiverMap if they have a TransactionIndexPool.
[in,out] | rTransactionIndexPoolVector | The TransactionIndexPool's are inserted here. |
[in] | psSchemaName | If this pointer is passed, then only the TransactionIndexPool's whose clients are logged on to the correspondin g database will be delivered. |
[in] | pWithoutThisCommunicator | If this pointer is passed, then its possibly existing TransactionIndexPool will not be delivered. |
|
static |
Liefert eine Instanz von Manager, wenn vorhanden. Es wird der Referenzzähler inkrementiert.
|
protected |
Processes the order to insert the class information (ClassInfo) of a class, depending on the parameters in the order, all or only the direct subclasses or superclasses in the order (see also OrderMsg::setOrderResult (...) )
[in,out] | pOrderMsg | The order to be processed. Any errors that may occur are entered in the order. |
|
protected |
Processes the order to insert a class information with a certain class ID, which is included in the order (see also OrderMsg::setOrderResult (...) ).
[in,out] | pOrderMsg | The order to be processed. Any errors that may occur are entered in the order. |
|
protected |
Processes the order to insert the maximum and minimum values (LimitRecord) of a supported data type (ClassInfoAttribute::Type) in the order (see also OrderMsg::setOrderResult (...) ).
[in,out] | pOrderMsg | The order to be processed. Any errors that may occur are entered in the order. |
|
protected |
Returns all dependent records in rDependRecordMap from rSourceRecord depending on the eDeepMode from the tables or glo::TransactionManager.
[in,out] | rDependRecordMap | The container with the dependent data records. |
[in] | rSourceRecord | The data record whose dependent data records are expected. |
[in] | rTableReaderInterface | The table reader. |
[in] | eDeepMode | The action depth mode. |
[in] | pCommunicatorWithTreadID | When a communicator with thread-id is passed, data records to be read (in the recursion) are preferably fetched from the current transaction and only from the tables if they do not exist there. |
|
protected |
Returns all dependent records in rDependRecordMap from rSourceRecord depending on the eDeepMode from the tables or glo::TransactionManager.
[in,out] | rDependRecordMap | The container with the dependent data records. |
[in] | rSourceRecord | The data record whose dependent data records are expected. |
[in] | rTableReaderInterface | The table reader. |
[in] | eDeepMode | The action depth mode. |
[in] | pCommunicatorWithTreadID | When a communicator with thread-id is passed, data records to be read (in the recursion) are preferably fetched from the current transaction and only from the tables if they do not exist there. |
void glo::Manager::getKnownBases | ( | std::vector< std::string > & | rKnownBasesVector | ) | const |
Copies the designations of all known schemas or databases into transferred Vector.
[in,out] | rKnownBasesVector | The names of all known schemas or databases. |
|
protected |
Returns the number of Receivers in the m_ReceiverMap.
|
protected |
Returns the number of Receivers in the m_ReceiverMap whose communicator is logged into a specific database.
[in] | sSchemaName | The name of the schema respectively database. |
RealIndexPool * glo::Manager::getRealIndexPool | ( | ) |
|
protected |
Returns a Receiver with reference to a specific communicator from the m_ReceiverMap.
[in] | pCommunicator | The communicator. |
|
protected |
Returns a data record from the tables or from the glo::TransactionManager with the object ID passed.
[in,out] | prRetVal | The data record. |
[in] | rObjID | The object ID of the data record. |
[in] | rTableReaderInterface | The table reader. |
[in] | pCommunicatorWithTreadID | If a communicator with thread-id is passed, the data record to be read is preferably fetched from the current transaction and only from the tables if it is not available there. |
|
protected |
Returns a pointer to a SchemaInterface with the given name from the m_SchemaMap.
[in] | rsSchemaName | The name of the schema respectively database. |
|
protected |
Returns a pointer to a SchemaMapItem with the passed name of its schema from the m_SchemaMap.
[in] | rsSchemaName | The name of the schema respectively database. |
std::string glo::Manager::getSchemaPath | ( | ) | const |
Returns the file path where the schema file can be found.
|
static |
Returns the display setting.
|
protected |
Inserts passed database names into m_KnownSchemes if not already present.
[in] | rNewSchemes | The name of the schema respectively database. |
bool glo::Manager::isBaseOpen | ( | Communicator * | pCommunicator | ) |
Checks if passed communicator has opened a database or if a corresponding Receiver is available in the m_ReceiverMap.
|
protected |
Returns, if not yet opened, the LockFile of the database, apparent from the passed rSchemaInterface.
[in,out] | prLockFile | The LockFile opened once. |
[in] | rSchemaInterface | The schema whose database should be locked by the LogFile. |
|
protected |
Processes the order to open a specific database (the information is in the order) and insert the communicator ID in the order (see also OrderMsg::setOrderResult (...) ). Instantiates a reader or increments the reference counter of an existing reader for the communicator passed in the order.
[in,out] | pOrderMsg | The order to be processed. Any errors that may occur are entered in the order. |
The assignment operator is not available.
|
protected |
Processes the request to remove a client (apparent from the passed order) from its m_ConnectedClientsMap
[in,out] | pOrderMsg | The order to be processed. Any errors that may occur are entered in the order. |
|
protected |
Processes the request to add a new client (apparent from the passed order) to its m_ConnectedClientsMap
[in,out] | pOrderMsg | The order to be processed. Any errors that may occur are entered in the order. |
|
protected |
Initiates a Notify in the m_pWatchNotifyManager via its m_MsgQueue, which affects an object.
[in] | nWatchNotifyMode | The watch mode. |
[in] | rObjID | The Object-ID of the affected object. |
[in] | pCommunicator | The communicator. |
[in] | rsSchemaName | The schema name is used for notification. |
|
protected |
Initiates via its m_MsgQueue Notify's in the m_pWatchNotifyManager, which affects the objects with the object IDs from rObjIDList.
[in] | nWatchNotifyMode | The watch mode. |
[in] | rObjIDList | The Object-IDs of the affected objects. |
[in] | pCommunicator | The communicator. |
[in] | rsSchemaName | The schema name is used for notification. |
|
protected |
Processes the request to reindex a specific database.
[in,out] | pOrderMsg | The order to be processed. Any errors that may occur are entered in the order. |
|
protected |
All reserved string indexes in the RealIndexPool and all TransactionIndexPools that were reserved by the TransactionManager::TransactionStep's in the parameter rTransactionStepList are released.
[in] | rTransactionStepList | The list with the TransactionManager::TransactionPoint's and TransactionManager::TransactionStep's (the transaction history). |
[in] | rsSchemaName | Name of the schema respectively database. |
|
protected |
Processes the request to remove a specific communicator (apparent from the passed order). This means that all orders from the communicator that have not yet been processed are discarded.
[in,out] | pOrderMsg | The order to be processed. Any errors that may occur are entered in the order. |
[in] | pWatchNotifyManager | If a pointer is passed to a WatchNotifyManager, orders still existing there are also cancelled. |
|
protected |
Processes the request to repair a specific database.
[in,out] | pOrderMsg | The order to be processed. Any errors that may occur are entered in the order. |
|
protected |
Makes the glo::TransactionManager handle the abort of a communicator's transaction.
Called by void sendToTransactionManager(OrderMsg*).
[in] | rCommunicatorWithTreadID | The commissioning communicator with thread-id. |
[in] | sSchemaName | The name of the schema respectively database. |
|
protected |
Makes the glo::TransactionManager handle the start of a communicator's transaction.
Called by void sendToTransactionManager(OrderMsg*).
[in] | rCommunicatorWithTreadID | The commissioning communicator with thread-id. |
|
protected |
Makes the glo::TransactionManager process the completion of a communicator's transaction.
Called by void sendToTransactionManager(OrderMsg*).
[in] | rCommunicatorWithTreadID | The commissioning communicator with thread-id. |
[in] | sSchemaName | The name of the schema respectively database. |
[in] | pInputDataRecordMap | If not nullptr, then there are records with attributes without file position that are set. |
|
protected |
Processes an order for the LockManager in m_pLockManager.
[in,out] | pOrderMsg | The order to be processed. Any errors that may occur are entered in the order. |
|
protected |
Processes an order for the LockManager in m_pLockManager.
[in] | eOrderType | The type of processing. Allowed are: |
[in] | pSchema | The schema of the database. |
[in] | pObjectIDsToBeLocked | The list of object IDs of the objects to be locked. |
[in] | pLockSpec | The 'lock mode' and the 'lock depth'. |
[in] | rCommunicatorWithTreadID | The commissioning communicator with thread-ID. |
|
protected |
Processes an order for a Receiver from the m_ReceiverMap or also for the TransactionManager in m_pTransactionManager
[in,out] | pOrderMsg | The order to be processed. Any errors that may occur are entered in the order. |
|
protected |
Processes an order for the TransactionManager in m_pTransactionManager.
[in,out] | pOrderMsg | The order to be processed. Any errors that may occur are entered in the order. |
|
protected |
Processes an order for the WatchNotifyManager in m_pWatchNotifyManager.
[in,out] | pOrderMsg | The order to be processed. Any errors that may occur are entered in the order. |
|
protected |
Processes an order for a TableWriterInterface via the SchemaMapItem in m_SchemaMap or for the TransactionManager in m_pTransactionManager.
When an order is sent to the TableWriterInterface, first all ReaderThreads are stopped, then the order is processed and then the ReaderThreads are restarted.
[in,out] | pOrderMsg | The order to be processed. Any errors that may occur are entered in the order. |
|
static |
Accepts a display object to display its actions depending on the m_ulShowLevel.
[in] | pActionVisualiser | The display object. |
|
static |
Sets the display setting.
[in] | ulLevel | The display setting. |
|
static |
Lets the display object in m_pActionVisualiser display a request action if it exists.
[in] | pOrderMsg | The order with the communicator ID and communicator name for the ad. |
[in] | rsActiontype | The type of the ad as string. |
[in] | rsActionString | The action as string. |
[in] | cSE | An addition such as a direction indicator (e.g. '<' or '>'). |
|
static |
Lets the display object in m_pActionVisualiser display a request action if it exists.
[in] | sActionString | The text to be displayed, |
|
static |
Lets the display object in m_pActionVisualiser display a request action if it exists.
[in] | pOrderMsg | The order with the communicator ID and communicator name for the ad. |
[in] | cSE | An addition such as a direction indicator (e.g. '<' or '>'). |
|
static |
Lets the display object in m_pActionVisualiser, if it exists, display a read action in the database.
[in] | pOrderMsg | The order with the communicator ID and communicator name for the ad. |
[in] | rsActionString | The action as string. |
[in] | cSE | An addition such as a direction indicator (e.g. '<' or '>'). |
|
static |
If the display object in m_pActionVisualiser exists, it will display a transaction action in the database.
[in] | pOrderMsg | The order with the communicator ID and communicator name for the ad. |
[in] | rsActionString | The action as string. |
[in] | cSE | An addition such as a direction indicator (e.g. '[', ']' or 'X'). |
|
static |
If the display object in m_pActionVisualiser exists, it will display a write action in the database.
[in] | pOrderMsg | The order with the communicator ID and communicator name for the ad. |
[in] | rsActionString | The action as string. |
[in] | cSE | An addition such as a direction indicator (e.g. '<' or '>'). |
|
protected |
Lets all Receivers in the m_ReceiverMap take a break.
|
protected |
Lets all Receivers in the Manager::m_ReceiverMap whose communicators are logged into a specific database pause.
This is used, for example, to write data to the tables during the read pause.
[in] | sSchemaName | The name of the schema respectively database. |
|
protected |
Lets all Receivers in the m_ReceiverMap finish a break.
|
protected |
Lets all Receivers in the m_ReceiverMap whose communicators are logged into a specific database finish a break.
This is used, for example, to write data to the tables during the read pause.
[in] | sSchemaName | The name of the schema respectively database. |
int glo::Manager::takeOrder | ( | OrderMsg * | pOrderMsg | ) |
Accepts an order.
[in] | pOrderMsg | The order to be processed. |
|
protected |
Sets a transaction step from sendToTransactionManager (...) in m_pTransactionManager.
[in] | rSchema | The schema of the affected database. |
[in] | TransactionOwner | The affected communicator with tread-ID. |
[in] | eStoreOrDelete | Save or delete. |
[in] | pRecord | The data record to be saved or deleted in the transaction. |
|
protected |
All locked records in the rTransactionStepList are released in the m_pLockManager.
[in] | rTransactionStepList | The list with the TransactionManager::TransactionPoint's and TransactionManager::TransactionStep's (the transaction history). |
[in] | rCommunicatorWithTreadID | The communicator with thread-is that 'owns' the transaction. Is needed here to lock the records. |
[in] | rsSchemaName | Name of the schema respectively database. |
[in] | pTransactionIndexPool | If a pointer to a TransactionIndexPool is passed, the object ID of a deleted object is removed there. |
[in] | bDelete | If bDelete is true, the respective TransactionManager::TransactionStep is removed from the memory and thus the contained record is 'forgotten'. |
|
overrideprotectedvirtual |
This method is executed as a thread. The message queue is queried for requests (the system 'sleeps' until a message is placed in the queue) and after evaluating the request, a suitable method is called.
Implements eut::RepeatingThread.
|
friend |
|
friend |
|
friend |
|
friend |
|
friend |
|
private |
Becomes true when a database is closed. In this case, orders are no longer processed until false again.
|
private |
List of communicators, which are connected to the Server.
|
private |
The known schemes or their names.
|
private |
To ensure thread-safe access to the elements of the Manager, access is synchronized via this local CriticalSection.
|
private |
The queue with the orders to be processed.
|
staticprivate |
The display object.
|
staticprivate |
Static pointer to the only instance of this class.
|
private |
Manages the locks of the individual objects.
|
private |
Manages the indexes of each open database.
|
private |
Manages the transactions of the individual communicators.
|
private |
Manages the monitoring of the individual communicators.
|
private |
List of communicators with open database, which communicate with the Manager.
|
private |
The schema interfaces in a SchemaMapItem, sorted by the schema name or database name
|
private |
The file path where the schema files can be found (e.g. "C:/Path/")
|
private |
Is counted up and given to every registering communicator as ID.
|
staticprivate |
The display output setting.
|
staticprivate |
The reference counter to the only instance of this class.