1#ifndef INC_GLODBMANAGER_H 
    2#define INC_GLODBMANAGER_H 
   54#if defined (__PTHREADS) 
   65#if defined (__PTHREADS) 
   67  #include <semaphore.h> 
   99    #pragma warning( disable : 4251 ) 
  171  #if defined (__PTHREADS) 
  514                            std::map< 
ObjID, 
Record *, std::less<ObjID> > * pDependRecordMap );
 
 
  593          #if defined(_MSC_VER) 
  609          #elif defined(__MINGW32__) || defined(__MINGW64__) 
  623            void * m_hLockFileHandle;
 
  625          #elif defined(__GNUC__) 
  639            int m_iLockFileHandle;
 
  662          #if defined(_MSC_VER) 
  696                            std::ofstream * pLockFile );
 
  698          #elif defined(__MINGW32__) || defined(__MINGW64__) 
  733                            void * hLockFileHandle );
 
  735          #elif defined(__GNUC__) 
  770                            int iLockFileHandle );
 
  774          #if defined(_MSC_VER) 
  785          #elif defined(__MINGW32__) || defined(__MINGW64__) 
  796          #elif defined(__GNUC__) 
 
 1011      std::map< std::string, SchemaMapItem *, std::less< std::string > > 
m_SchemaMap;
 
 1046      std::map< Communicator *, Receiver * , std::less< Communicator * > > 
m_ReceiverMap;
 
 1117      #if defined (__PTHREADS) 
 1137      #if defined(__GNUC__) 
 1138        __attribute__((noreturn))
 
 1161                const std::vector< std::string > & rAllowedSchemes );
 
 1219                                const std::vector< std::string > & rAllowedSchemes );
 
 1340                              const std::string & rsActiontype,
 
 1341                              const std::string & rsActionString,
 
 1385                                          const std::string & rsActionString,
 
 1408                                    const std::string & rsActionString,
 
 1431                                    const std::string & rsActionString,
 
 1535                          std::string * psSchemaName = 0 ) 
const;
 
 1610                                 const std::string & rsSchemaName ) 
const;
 
 2052                                          std::string sSchemaName );
 
 2081                                          std::string sSchemaName,
 
 2082                                          std::map< 
ObjID, 
Record *, std::less<ObjID> > * pInputDataRecordMap );
 
 2178                              std::list<ObjID> * pObjectIDsToBeLocked,
 
 2244                                const ObjID & rObjID,
 
 2246                                const std::string & rsSchemaName );
 
 2268                                const std::list<ObjID> & rObjIDList,
 
 2270                                const std::string & rsSchemaName );
 
 2275      #if defined(_MSC_VER) 
 2305      #elif defined(__MINGW32__) || defined(__MINGW64__) 
 2335      #elif defined(__GNUC__) 
 2506                                        std::string * psSchemaName = 0,
 
 2579                                  const std::map< 
ObjID, 
Record *, std::less<ObjID> > & rRecordMap,
 
 2606                                                     std::string & rsSchemaName );
 
 2646                                      const std::string & rsSchemaName,
 
 
 2837    #pragma warning( default : 4251 ) 
Header für CriticalSection
 
Header für EuEndlessPThread
 
Header für EuPCriticalSection
 
Header für RepeatingThread
 
Header für LockSpecification
 
Header für TransactionManager    TransactionManager::TransactionBase   TransactionManager::Transactio...
 
Header für TransactionOwner
 
Für jede Bibliothek, hier 'GlobalObjects' gibt es eine Typen-Datei.
 
#define __glo_export_dll
Definition GloTypes.h:70
 
Header für WatchSpecification
 
Bindet die Socket-Bibliothek/en ein und definiert Socket-Typen.
 
Ist ein Mutex, welcher über sein Lock-Modus abgefragt werden kann. Siehe isLocked().
Definition EuPCriticalSection.h:121
 
Ist ein Mutex, welcher über sein Lock-Modus abgefragt werden kann. Siehe isLocked().
Definition EuCriticalSection.h:126
 
Basisklasse für einen Thread der seine Arbeit endlos bis zum Abbruch ausführt.
Definition EuRepeatingThread.h:111
 
Ein CommunicaterThread nimmt Aufträge für sein TableReaderInterface an.
Definition GloCommunicaterThread.h:89
 
OberKlasse von LocalThread, ClientThread und ServerThread, weil diese als Sender und Empfänger (Kommu...
Definition GloCommunicator.h:93
 
IndexPool ist die Basisklasse für den RealIndexPool und den TransactionIndexPool für die einzelnen Tr...
Definition GloIndexPool.h:196
 
Objekte dieser Klasse überwachen den Sperrzustand von Objekten.
Definition GloLockManager.h:239
 
Um Objekte sperren zu können, werden der 'Lock-Modus' und die 'Sperrtiefe' als Parameter benötigt....
Definition GloLockSpecification.h:65
 
Ist die Gegenstelle bzw. der Kommunikator, welcher mit dem Manager kommuniziert. Bei dem Mehrbenutzbe...
Definition GloManager.h:208
 
CommunicaterThread * m_pCommunicatorThread
Definition GloManager.h:264
 
std::string getSchemaName() const
 
std::string m_sSchemaName
Definition GloManager.h:242
 
unsigned int m_uiRefCounter
Definition GloManager.h:229
 
unsigned int decrementRefCounter()
 
Receiver(const std::string &sSchemaName, CommunicaterThread *pCommunicatorThread, Communicator *pCommunicator)
 
Receiver(const Receiver &)
 
Communicator * m_pCommunicator
Definition GloManager.h:253
 
unsigned int incrementRefCounter()
 
CommunicaterThread * getCommunicatorThread() const
 
Communicator * getCommunicator() const
 
Objekte dieser Klasse repräsentieren eine geöffnete Datenbank. Es gibt für jede geöffnete Datenbank e...
Definition GloManager.h:552
 
TableWriterInterface * m_pTableWriterInterface
Definition GloManager.h:591
 
unsigned int Counter() const
 
SchemaMapItem(const SchemaMapItem &)
 
SchemaInterface * m_pSchema
Definition GloManager.h:580
 
std::ofstream * m_pLockFile
Definition GloManager.h:607
 
unsigned int m_uiCounter
Definition GloManager.h:569
 
TableWriterInterface * getTableWriterInterface() const
 
SchemaInterface * getSchema() const
 
SchemaMapItem(SchemaInterface *pSchema, RealIndexPool *pRealIndexPool, std::ofstream *pLockFile)
 
Zeigt die Aktionen des Manager über std::cout an.
Definition GloManagerActionVisualiser.h:70
 
Das Objekt dieser Klasse ist die zentrale Anlaufstelle für Aktionen, welche mit GlobalObjects-Daten z...
Definition GloManager.h:176
 
int transactionManagerSetTransactionStep(const SchemaInterface &rSchema, const TransactionOwner &rCommunicatorWithTreadID, TransactionManager::EnStoreDelete eStoreOrDelete, Record *pRecord)
 
int createSchemaInterface(SchemaInterface *&prNewSchemaInterface, const std::string &rsSchemaName) const
 
static ShowLevel getShowLevel()
 
std::map< SOCKET, ClientInfo, std::less< SOCKET > > m_ConnectedClientsMap
Definition GloManager.h:1033
 
RealIndexPool * getRealIndexPool()
 
static Manager * create(const std::string &rsSchemaPath, const std::vector< std::string > &rAllowedSchemes)
 
void deleteCommunicatorWatches(OrderMsg *pOrderMsg)
 
void openBase(OrderMsg *pOrderMsg)
 
void getDependRecordsRecursive(std::map< ObjID, Record *, std::less< ObjID > > &rDependRecordMap, Record &rSourceRecord, const TableReaderInterface &rTableReaderInterface, EnDeepMode eDeepMode, TransactionOwner *pCommunicatorWithTreadID=nullptr) const
 
friend class TcpServerReceiver
Definition GloManager.h:183
 
void sendToWatchNotifyManager(OrderMsg *pOrderMsg)
 
void getAllTransactionIndexPools(std::vector< TransactionIndexPool * > &rTransactionIndexPoolVector, std::string *psSchemaName=0, Communicator *pWithoutThisCommunicator=0) const
 
void compressBase(OrderMsg *pOrderMsg)
 
std::size_t getNumberReceiver() const
 
static void showWriterAction(OrderMsg *pOrderMsg, const std::string &rsActionString, char cSE)
 
friend class LockManager
Definition GloManager.h:181
 
std::vector< std::string > m_KnownSchemes
Definition GloManager.h:998
 
void getAllDataTypes(OrderMsg *pOrderMsg) const
 
WatchNotifyManager * m_pWatchNotifyManager
Definition GloManager.h:1079
 
Manager::SchemaMapItem * getSchemaMapItem(const std::string &rsSchemaName) const
 
static ManagerActionVisualiser * m_pActionVisualiser
Definition GloManager.h:963
 
int getRecord(Record *&prRetVal, const glo::ObjID &rObjID, const TableReaderInterface &rTableReaderInterface, TransactionOwner *pCommunicatorWithTreadID=nullptr) const
 
void deleteAllObjectsInReceiverMap()
 
std::map< Communicator *, Receiver *, std::less< Communicator * > > m_ReceiverMap
Definition GloManager.h:1046
 
std::string getSchemaPath() const
 
eut::CriticalSection m_LocalCriticalSection
Definition GloManager.h:1120
 
void processObjectNotify(TdWatchNotifyMode nWatchNotifyMode, const std::list< ObjID > &rObjIDList, Communicator *pCommunicator, const std::string &rsSchemaName)
 
int checkAllRecordIndices(int iCheckStatus, const SchemaInterface &rSchema, const std::map< ObjID, Record *, std::less< ObjID > > &rRecordMap, IndexPool &rGloIndexPool) const
 
static int ms_iReferenceCounter
Definition GloManager.h:930
 
void insertInKnownBases(const std::vector< std::string > &rNewSchemes)
 
std::string m_strSchemaPath
Definition GloManager.h:987
 
void deleteAllObjectsInSchemaMap()
 
int lockBaseExclusive(std::ofstream *&prLockFile, const SchemaInterface &rSchemaInterface)
 
void processObjectNotify(TdWatchNotifyMode nWatchNotifyMode, const ObjID &rObjID, Communicator *pCommunicator, const std::string &rsSchemaName)
 
void getDataTypeLimits(OrderMsg *pOrderMsg) const
 
LockManager * m_pLockManager
Definition GloManager.h:1057
 
friend class OrderMsg
Definition GloManager.h:182
 
static ShowLevel m_ulShowLevel
Definition GloManager.h:952
 
static void showTransactionAction(OrderMsg *pOrderMsg, const std::string &rsActionString, char cSE)
 
friend class TableWriterInterface
Definition GloManager.h:184
 
void releaseStrIndexesFromTransactionStepList(std::list< TransactionManager::TransactionBase * > &rTransactionStepList, std::string &rsSchemaName)
 
void getBaseOrSubClassInfos(OrderMsg *pOrderMsg) const
 
void repairBase(OrderMsg *pOrderMsg)
 
void switchOffAllRecieverReader()
 
void getDependRecords(std::map< ObjID, Record *, std::less< ObjID > > &rDependRecordMap, Record &rSourceRecord, const TableReaderInterface &rTableReaderInterface, EnDeepMode eDeepMode, TransactionOwner *pCommunicatorWithTreadID=nullptr) const
 
void sendToTransactionManager(OrderMsg *pOrderMsg)
 
static void setActionVisualiser(ManagerActionVisualiser *pActionVisualiser)
 
void getAllKnownBases(OrderMsg *pOrderMsg) const
 
int sendToLockManager(OrderMsg::EnOrderType eOrderType, SchemaInterface *pSchema, std::list< ObjID > *pObjectIDsToBeLocked, LockSpecification *pLockSpec, const TransactionOwner &rCommunicatorWithTreadID)
 
void getClassInfo(OrderMsg *pOrderMsg) const
 
int sendCOMMITtoTransactionManager(const TransactionOwner &rCommunicatorWithTreadID, std::string sSchemaName, std::map< ObjID, Record *, std::less< ObjID > > *pInputDataRecordMap)
 
void removeCommunicator(OrderMsg *pOrderMsg, WatchNotifyManager *pWatchNotifyManager=0)
 
int sendBEGINtoTransactionManager(const TransactionOwner &rCommunicatorWithTreadID)
 
void sendToLockManager(OrderMsg *pOrderMsg)
 
static void showOrderAction(OrderMsg *pOrderMsg, char cSE)
 
virtual void work() override
 
void closeBase(OrderMsg *pOrderMsg)
 
void getKnownBases(std::vector< std::string > &rKnownBasesVector) const
 
std::map< std::string, SchemaMapItem *, std::less< std::string > > m_SchemaMap
Definition GloManager.h:1011
 
static Manager * getAvailableInstance()
 
int sendABORTtoTransactionManager(const TransactionOwner &rCommunicatorWithTreadID, std::string sSchemaName)
 
void getAllClients(std::vector< ClientInfo > &rClientInfoVector, std::string *psSchemaName=0) const
 
static void showActionString(const std::string &sActionString)
 
void getAllClients(OrderMsg *pOrderMsg) const
 
void unlockTransactionStepList(std::list< TransactionManager::TransactionBase * > &rTransactionStepList, const TransactionOwner &rCommunicatorWithTreadID, const std::string &rsSchemaName, TransactionIndexPool *pTransactionIndexPool, bool bDelete)
 
void switchOnRecieverReader(std::string sSchemaName)
 
SchemaInterface * getSchemaInterface(const std::string &rsSchemaName) const
 
std::size_t getNumberReceiver(std::string sSchemaName) const
 
bool m_bWorkingExclusiv
Definition GloManager.h:1103
 
void sendToReaderThread(OrderMsg *pOrderMsg, bool bOnlyRefreshError=false)
 
static void showReaderAction(OrderMsg *pOrderMsg, const std::string &rsActionString, char cSE)
 
friend class WatchNotifyManager
Definition GloManager.h:180
 
std::queue< OrderMsg * > m_MsgQueue
Definition GloManager.h:1022
 
void reindexBase(OrderMsg *pOrderMsg)
 
void sendToWriter(OrderMsg *pOrderMsg)
 
unsigned int m_uiCommunicatorID
Definition GloManager.h:976
 
static void setShowLevel(ShowLevel ulLevel)
 
Manager(const std::string &rsSchemaPath, const std::vector< std::string > &rAllowedSchemes)
 
RealIndexPool * m_pRealIndexPool
Definition GloManager.h:1090
 
static void showAction(const OrderMsg *pOrderMsg, const std::string &rsActiontype, const std::string &rsActionString, char cSE)
 
void processNewConnectedClient(OrderMsg *pOrderMsg)
 
void switchOnAllRecieverReader()
 
int takeOrder(OrderMsg *pOrderMsg)
 
void processDisconnectedClient(OrderMsg *pOrderMsg)
 
static Manager * m_pInstance
Definition GloManager.h:941
 
bool isBaseOpen(Communicator *pCommunicator)
 
void switchOffRecieverReader(std::string sSchemaName)
 
Manager::Receiver * getReceiver(Communicator *pCommunicator)
 
TransactionManager * m_pTransactionManager
Definition GloManager.h:1068
 
Ein Objekt-ID besteht aus der Klassen-ID, einer Datenbank-ID und der eigentlichen eindeutigen ObjektZ...
Definition GloObjID.h:84
 
EnOrderType
Definition GloOrderMsg.h:105
 
Der reale Index im Gegensatz zum TransactionIndexPool, welcher für jede Transaktion erstellt wird.
Definition GloRealIndexPool.h:69
 
Objekte dieser Klasse transportieren die Daten von den Tabellen ins persistente Objekt und von diesen...
Definition GloRecord.h:108
 
Diese Klasse ist die Schnittstelle zu einem GlobalObjects-Schema. Sie beinhaltet alle Klasseninformat...
Definition GloSchemaInterface.h:91
 
Der Server, welcher mit Client's kommuniziert.
Definition GloServer.h:71
 
Ein Objekt dieser Klasse greift auf Tabellen zu und liest Datensätze (Record) und Binärdateien (eut::...
Definition GloTableReaderInterface.h:88
 
Ein Objekt dieser Klasse greift auf Tabellen zu und schreibt Datensätze (Record) und Binärdateien (eu...
Definition GloTableWriterInterface.h:77
 
Dieser Index wird in jeder Transaktion generiert und die Änderungen wie speichern,...
Definition GloTransactionIndexPool.h:66
 
Klasse um Transaktionen zu gewährleisten.
Definition GloTransactionManager.h:172
 
EnStoreDelete
Definition GloTransactionManager.h:186
 
Um Transaktionen nicht nur einem glo::Communicator zur Verfügung zu stellen, sondern auch einzelnen T...
Definition GloTransactionOwner.h:81
 
Klassen um persistente Objekte überwachen zu können und bei Änderungen die jeweiligen Clients zu bean...
Definition GloWatchNotifyManager.h:352
 
Definition GloAbstractBaseLot.h:49
 
EnDeepMode
Definition GloTypes.h:273
 
unsigned long ShowLevel
Definition GloTypes.h:858
 
unsigned long TdWatchNotifyMode
Definition GloTypes.h:577
 
Eine Struktur um ClientDaten zwischen Datenbank und Client zu transportieren.
Definition GloClientInfo.h:71
 
ObjIdWithDepends(const ObjID &rObjID, std::map< ObjID, Record *, std::less< ObjID > > *pDependRecordMap)
 
std::map< ObjID, Record *, std::less< ObjID > > * m_pDependRecordMap
Definition GloManager.h:481
 
ObjID m_ObjID
Definition GloManager.h:465