1#ifndef INC_GLODBMANAGER_H
2#define INC_GLODBMANAGER_H
54#if defined (__PTHREADS)
65#if defined (__PTHREADS)
67 #include <semaphore.h>
75#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__)
77#elif defined(__GNUC__)
81 #include <sys/types.h>
82 #include <sys/socket.h>
83 #include <netinet/in.h>
85 #include <arpa/inet.h>
86 #define SOCKET uintptr_t
87 #define SOCKADDR_IN sockaddr_in
88 #define SOCKADDR sockaddr
89 #define HOSTENT hostent
90 #define INVALID_SOCKET (SOCKET)(~0)
91 #define SOCKET_ERROR (-1)
98 class CommunicaterThread;
101 class ManagerActionVisualiser;
105 class SchemaInterface;
107 class TableReaderInterface;
108 class TransactionIndexPool;
109 class TableWriterInterface;
110 class WatchNotifyManager;
116 #pragma warning( disable : 4251 )
188 #if defined (__PTHREADS)
531 std::map<
ObjID,
Record *, std::less<ObjID> > * pDependRecordMap );
610 #if defined(_MSC_VER)
626 #elif defined(__MINGW32__) || defined(__MINGW64__)
640 void * m_hLockFileHandle;
642 #elif defined(__GNUC__)
656 int m_iLockFileHandle;
679 #if defined(_MSC_VER)
713 std::ofstream * pLockFile );
715 #elif defined(__MINGW32__) || defined(__MINGW64__)
750 void * hLockFileHandle );
752 #elif defined(__GNUC__)
787 int iLockFileHandle );
791 #if defined(_MSC_VER)
802 #elif defined(__MINGW32__) || defined(__MINGW64__)
813 #elif defined(__GNUC__)
1028 std::map< std::string, SchemaMapItem *, std::less< std::string > >
m_SchemaMap;
1063 std::map< Communicator *, Receiver * , std::less< Communicator * > >
m_ReceiverMap;
1134 #if defined (__PTHREADS)
1154 #if defined(__GNUC__)
1155 __attribute__((noreturn))
1178 const std::vector< std::string > & rAllowedSchemes );
1236 const std::vector< std::string > & rAllowedSchemes );
1357 const std::string & rsActiontype,
1358 const std::string & rsActionString,
1402 const std::string & rsActionString,
1425 const std::string & rsActionString,
1448 const std::string & rsActionString,
1552 std::string * psSchemaName = 0 )
const;
1627 const std::string & rsSchemaName )
const;
2059 std::string sSchemaName );
2088 std::string sSchemaName,
2089 std::map<
ObjID,
Record *, std::less<ObjID> > * pInputDataRecordMap );
2185 std::list<ObjID> * pObjectIDsToBeLocked,
2251 const ObjID & rObjID,
2253 const std::string & rsSchemaName );
2275 const std::list<ObjID> & rObjIDList,
2277 const std::string & rsSchemaName );
2282 #if defined(_MSC_VER)
2312 #elif defined(__MINGW32__) || defined(__MINGW64__)
2339 int lockBaseExclusive(
void *& prLockFileHandle,
2342 #elif defined(__GNUC__)
2369 int lockBaseExclusive(
int & riLockFileHandle,
2513 std::string * psSchemaName = 0,
2586 const std::map<
ObjID,
Record *, std::less<ObjID> > & rRecordMap,
2613 std::string & rsSchemaName );
2653 const std::string & rsSchemaName,
2844 #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
Basisklasse für einen Thread der seine Arbeit endlos bis zum Abbruch ausführt.
Definition EuEndlessPThread.h:84
Ist ein Mutex, welcher über sein Lock-Modus abgefragt werden kann. Siehe isLocked().
Definition EuPCriticalSection.h:104
Ist ein Mutex, welcher über sein Lock-Modus abgefragt werden kann. Siehe isLocked().
Definition EuCriticalSection.h:109
Basisklasse für einen Thread der seine Arbeit endlos bis zum Abbruch ausführt.
Definition EuRepeatingThread.h:93
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:225
CommunicaterThread * m_pCommunicatorThread
Definition GloManager.h:281
std::string getSchemaName() const
std::string m_sSchemaName
Definition GloManager.h:259
unsigned int m_uiRefCounter
Definition GloManager.h:246
unsigned int decrementRefCounter()
Receiver(const std::string &sSchemaName, CommunicaterThread *pCommunicatorThread, Communicator *pCommunicator)
Receiver(const Receiver &)
Communicator * m_pCommunicator
Definition GloManager.h:270
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:569
TableWriterInterface * m_pTableWriterInterface
Definition GloManager.h:608
unsigned int Counter() const
SchemaMapItem(const SchemaMapItem &)
SchemaInterface * m_pSchema
Definition GloManager.h:597
std::ofstream * m_pLockFile
Definition GloManager.h:624
unsigned int m_uiCounter
Definition GloManager.h:586
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:193
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:1050
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
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)
std::vector< std::string > m_KnownSchemes
Definition GloManager.h:1015
void getAllDataTypes(OrderMsg *pOrderMsg) const
WatchNotifyManager * m_pWatchNotifyManager
Definition GloManager.h:1096
Manager::SchemaMapItem * getSchemaMapItem(const std::string &rsSchemaName) const
static ManagerActionVisualiser * m_pActionVisualiser
Definition GloManager.h:980
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:1063
std::string getSchemaPath() const
eut::CriticalSection m_LocalCriticalSection
Definition GloManager.h:1137
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:947
void insertInKnownBases(const std::vector< std::string > &rNewSchemes)
std::string m_strSchemaPath
Definition GloManager.h:1004
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:1074
static ShowLevel m_ulShowLevel
Definition GloManager.h:969
static void showTransactionAction(OrderMsg *pOrderMsg, const std::string &rsActionString, char cSE)
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:1028
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:1120
static void showReaderAction(OrderMsg *pOrderMsg, const std::string &rsActionString, char cSE)
std::queue< OrderMsg * > m_MsgQueue
Definition GloManager.h:1039
void reindexBase(OrderMsg *pOrderMsg)
void sendToWriter(OrderMsg *pOrderMsg)
unsigned int m_uiCommunicatorID
Definition GloManager.h:993
static void setShowLevel(ShowLevel ulLevel)
Manager(const std::string &rsSchemaPath, const std::vector< std::string > &rAllowedSchemes)
RealIndexPool * m_pRealIndexPool
Definition GloManager.h:1107
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 sendToReaderThread(OrderMsg *pOrderMsg)
void processDisconnectedClient(OrderMsg *pOrderMsg)
static Manager * m_pInstance
Definition GloManager.h:958
bool isBaseOpen(Communicator *pCommunicator)
void switchOffRecieverReader(std::string sSchemaName)
Manager::Receiver * getReceiver(Communicator *pCommunicator)
TransactionManager * m_pTransactionManager
Definition GloManager.h:1085
Ein Objekt-ID besteht aus der Klassen-ID, einer Datenbank-ID und der eigentlichen eindeutigen ObjektZ...
Definition GloObjID.h:84
Mittels dieser Klasse wird die Kommunikation zwischen der Applikation, welche GlobalObjects nutzt und...
Definition GloOrderMsg.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
Ein Objekt dieser Klasse greift auf Tabellen zu und liest Datensätze (Record) und Binärdateien (eut::...
Definition GloTableReaderInterface.h:87
Ein Objekt dieser Klasse greift auf Tabellen zu und schreibt Datensätze (Record) und Binärdateien (eu...
Definition GloTableWriterInterface.h:77
Klasse, welche über ein SOCKET mit einem tcp::Client kommunizieret und das Empfangsergebnis vom Typ M...
Definition GloTcpServerReceiver.h:81
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:254
unsigned long ShowLevel
Definition GloTypes.h:839
unsigned long TdWatchNotifyMode
Definition GloTypes.h:558
Eine Struktur um die Objekt-ID eines persistenten Objekts mit den Datensätzen der abhängigen Objekte ...
Definition GloManager.h:469
ObjIdWithDepends(const ObjID &rObjID, std::map< ObjID, Record *, std::less< ObjID > > *pDependRecordMap)
std::map< ObjID, Record *, std::less< ObjID > > * m_pDependRecordMap
Definition GloManager.h:498
ObjID m_ObjID
Definition GloManager.h:482