GlobalObjects
Lade ...
Suche ...
Keine Treffer
GloManager.h
gehe zur Dokumentation dieser Datei
1#ifndef INC_GLODBMANAGER_H
2#define INC_GLODBMANAGER_H
3//-----------------------------------------------------------------------------
43//-----------------------------------------------------------------------------
44#include "GloTypes.h"
45#include "GloOrderMsg.h"
46#include <string>
47#if defined (__PTHREADS)
48 #include <EuPCriticalSection.h>
49#else
50 #include "EuCriticalSection.h"
51#endif
52#include "PtlTDVList.h"
56#if defined (__PTHREADS)
57 #include <EuEndlessPThread.h>
58 #include <semaphore.h>
59#else
60 #include "EuRepeatingThread.h"
61#endif
62#include <vector>
63#include <map>
64#include <queue>
65#include <fstream>
66#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__)
67 #include <winsock.h>
68#elif defined(__GNUC__)
69 #include <string.h>
70
71 #include <errno.h>
72 #include <sys/types.h>
73 #include <sys/socket.h>
74 #include <netinet/in.h>
75 #include <netdb.h>
76 #include <arpa/inet.h>
77 #define SOCKET uintptr_t
78 #define SOCKADDR_IN sockaddr_in
79 #define SOCKADDR sockaddr
80 #define HOSTENT hostent
81 #define INVALID_SOCKET (SOCKET)(~0)
82 #define SOCKET_ERROR (-1)
83#endif
84//-----------------------------------------------------------------------------
85namespace glo
86{
87 //---------------------------------------------------------------------------
88 /* Forwards */
89 class CommunicaterThread;
90 class Communicator;
91 class LockManager;
92 class ManagerActionVisualiser;
93 class ObjID;
94 class RealIndexPool;
95 class Record;
96 class SchemaInterface;
97 class Server;
98 class TableReaderInterface;
99 class TransactionIndexPool;
100 class TableWriterInterface;
101 class WatchNotifyManager;
102 struct ClientInfo;
103 class IndexPool;
104 //---------------------------------------------------------------------------
105 #ifdef _MSC_VER
106 /* 'Bezeichner': Klasse 'Typ' benötigt eine DLL-Schnittstelle, die von... */
107 #pragma warning( disable : 4251 )
108 #endif
109 //---------------------------------------------------------------------------
179 #if defined (__PTHREADS)
180 class __glo_export_dll Manager : public EuEndlessPThread
181 #else
183 #endif
184 {
185 private:
186 //============== Friends
187 //-----------------------------------------------------------------------
188 friend class WatchNotifyManager;
189 friend class LockManager;
190 friend class OrderMsg;
191 friend class TcpServerReceiver;
193 //-----------------------------------------------------------------------
194
195 protected:
196 //-----------------------------------------------------------------------
197 // >>>>>>>>>>>>>>>>>>>>>>>> Receiver >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
198 //-----------------------------------------------------------------------
216 {
217 private:
218 //============== Attribute
219 //---------------------------------------------------------------------
237 unsigned int m_uiRefCounter;
238 //---------------------------------------------------------------------
250 std::string m_sSchemaName;
251 //---------------------------------------------------------------------
262 //---------------------------------------------------------------------
273 //---------------------------------------------------------------------
274
275 //============= Konstruktor
276 //---------------------------------------------------------------------
287 //---------------------------------------------------------------------
297 Receiver( const Receiver & );
298 //---------------------------------------------------------------------
299
300 public:
301 //============== De- und Konstruktoren
302 //---------------------------------------------------------------------
326 Receiver( const std::string & sSchemaName,
327 CommunicaterThread * pCommunicatorThread,
328 Communicator * pCommunicator );
329 //---------------------------------------------------------------------
340 //---------------------------------------------------------------------
341
342 public:
343 //============== Methoden
344 //---------------------------------------------------------------------
358 std::string getSchemaName() const;
359 //---------------------------------------------------------------------
372 //---------------------------------------------------------------------
389 //---------------------------------------------------------------------
401 unsigned int incrementRefCounter();
402 //---------------------------------------------------------------------
414 unsigned int decrementRefCounter();
415 //---------------------------------------------------------------------
416
417 private:
418 //============== Operatoren
419 //---------------------------------------------------------------------
429 Manager::Receiver & operator= ( const Receiver & );
430 //---------------------------------------------------------------------
431 };
432 //-----------------------------------------------------------------------
433 // <<<<<<<<<<<<<<<<<<<<<<<< Receiver <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
434 //-----------------------------------------------------------------------
435
436 protected:
437 //-----------------------------------------------------------------------
438 // >>>>>>>>>>>>>>>>>>>>> ObjIdWithDepends >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
439 //-----------------------------------------------------------------------
440 // doxygen -> warning: unable to resolve reference to 'GLO_REF_DEPENDENT' for \ref command
441 // Is a reference to the GlobalObjects documentation.
442 //-----------------------------------------------------------------------
460 {
461 public:
462 //============== Attribute
463 //---------------------------------------------------------------------
474 //---------------------------------------------------------------------
475 // doxygen -> warning: unable to resolve reference to 'GLO_REF_DEPENDENT' for \ref command
476 // Is a reference to the GlobalObjects documentation.
477 //---------------------------------------------------------------------
489 std::map< ObjID, Record *, std::less<ObjID> > * m_pDependRecordMap;
490 //---------------------------------------------------------------------
491
492 //============== Konstruktoren
493 //---------------------------------------------------------------------
494 // doxygen -> warning: unable to resolve reference to 'GLO_REF_DEPENDENT' for \ref command
495 // Is a reference to the GlobalObjects documentation.
496 //---------------------------------------------------------------------
521 ObjIdWithDepends( const ObjID & rObjID,
522 std::map< ObjID, Record *, std::less<ObjID> > * pDependRecordMap );
523 //---------------------------------------------------------------------
536 //---------------------------------------------------------------------
537 };
538 //-----------------------------------------------------------------------
539 // <<<<<<<<<<<<<<<<<<<<< ObjIdWithDepends <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
540 //-----------------------------------------------------------------------
541
542 //-----------------------------------------------------------------------
543 // >>>>>>>>>>>>>>>>>>>>>> SchemaMapItem >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
544 //-----------------------------------------------------------------------
560 {
561 private:
562 //+ ============ Attribute
563 //---------------------------------------------------------------------
577 unsigned int m_uiCounter;
578 //---------------------------------------------------------------------
589 //---------------------------------------------------------------------
600 //---------------------------------------------------------------------
601 #if defined(_MSC_VER)
602 //---------------------------------------------------------------------
615 std::ofstream * m_pLockFile;
616 //---------------------------------------------------------------------
617 #elif defined(__MINGW32__) || defined(__MINGW64__)
618 //---------------------------------------------------------------------
631 void * m_hLockFileHandle;
632 //---------------------------------------------------------------------
633 #elif defined(__GNUC__)
634 //---------------------------------------------------------------------
647 int m_iLockFileHandle;
648 //---------------------------------------------------------------------
649 #endif
650 //---------------------------------------------------------------------
651
652 protected:
653 //============= Konstruktor
654 //---------------------------------------------------------------------
665 //---------------------------------------------------------------------
666
667 public:
668 //============== De- und Konstruktoren
669 //---------------------------------------------------------------------
670 #if defined(_MSC_VER)
671 //---------------------------------------------------------------------
703 RealIndexPool * pRealIndexPool,
704 std::ofstream * pLockFile );
705 //---------------------------------------------------------------------
706 #elif defined(__MINGW32__) || defined(__MINGW64__)
707 //---------------------------------------------------------------------
740 RealIndexPool * pRealIndexPool,
741 void * hLockFileHandle );
742 //---------------------------------------------------------------------
743 #elif defined(__GNUC__)
744 //---------------------------------------------------------------------
777 RealIndexPool * pRealIndexPool,
778 int iLockFileHandle );
779 //---------------------------------------------------------------------
780 #endif
781 //---------------------------------------------------------------------
782 #if defined(_MSC_VER)
793 #elif defined(__MINGW32__) || defined(__MINGW64__)
804 #elif defined(__GNUC__)
815 #endif
817 //---------------------------------------------------------------------
818
819 private:
820 //============== Konstruktoren
821 //---------------------------------------------------------------------
832 //---------------------------------------------------------------------
833
834 public:
835 //============== Methoden
836 //---------------------------------------------------------------------
847 //---------------------------------------------------------------------
858 //---------------------------------------------------------------------
870 unsigned int Counter() const;
871 //---------------------------------------------------------------------
888 //---------------------------------------------------------------------
905 //---------------------------------------------------------------------
906
907 private:
908 //============== Operatoren
909 //---------------------------------------------------------------------
919 Manager::SchemaMapItem & operator= ( const SchemaMapItem & );
920 //---------------------------------------------------------------------
921 };
922 //-----------------------------------------------------------------------
923 // <<<<<<<<<<<<<<<<<<<<<<< SchemaMapItem <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
924 //-----------------------------------------------------------------------
925
926 private:
927 //============== Static-Attribute
928 //-----------------------------------------------------------------------
939 //-----------------------------------------------------------------------
950 //-----------------------------------------------------------------------
961 //-----------------------------------------------------------------------
972
973 //============== Attribute
974 //-----------------------------------------------------------------------
984 unsigned int m_uiCommunicatorID;
985 //-----------------------------------------------------------------------
995 std::string m_strSchemaPath;
996 //-----------------------------------------------------------------------
1006 std::vector<std::string> m_KnownSchemes;
1007 //-----------------------------------------------------------------------
1019 std::map< std::string, SchemaMapItem *, std::less< std::string > > m_SchemaMap;
1020 //-----------------------------------------------------------------------
1030 std::queue< OrderMsg * > m_MsgQueue;
1031 //-----------------------------------------------------------------------
1041 std::map< SOCKET, ClientInfo , std::less< SOCKET > > m_ConnectedClientsMap;
1042 //-----------------------------------------------------------------------
1054 std::map< Communicator *, Receiver * , std::less< Communicator * > > m_ReceiverMap;
1055 //-----------------------------------------------------------------------
1066 //-----------------------------------------------------------------------
1077 //-----------------------------------------------------------------------
1088 //-----------------------------------------------------------------------
1099 //-----------------------------------------------------------------------
1112 //-----------------------------------------------------------------------
1125 #if defined (__PTHREADS)
1126 EuPCriticalSection m_LocalCriticalSection;
1127 #else
1129 #endif
1130 //-----------------------------------------------------------------------
1131
1132 protected:
1133 //============= Konstruktoren
1134 //-----------------------------------------------------------------------
1145 #if defined(__GNUC__)
1146 __attribute__((noreturn))
1147 #endif
1148 ;
1149 //-----------------------------------------------------------------------
1168 Manager( const std::string & rsSchemaPath,
1169 const std::vector< std::string > & rAllowedSchemes );
1170 //-----------------------------------------------------------------------
1180 virtual ~Manager();
1181 //-----------------------------------------------------------------------
1182
1183 private:
1184 //============== Konstruktoren
1185 //-----------------------------------------------------------------------
1195 Manager( const Manager & );
1196 //-----------------------------------------------------------------------
1197
1198 public:
1199 //============== statische Methoden
1200 //-----------------------------------------------------------------------
1226 static Manager * create( const std::string & rsSchemaPath,
1227 const std::vector< std::string > & rAllowedSchemes );
1228 //-----------------------------------------------------------------------
1243 static int destroy();
1244 //-----------------------------------------------------------------------
1263 //-----------------------------------------------------------------------
1283 static void setActionVisualiser( ManagerActionVisualiser * pActionVisualiser );
1284 //-----------------------------------------------------------------------
1296 static void setShowLevel( ShowLevel ulLevel );
1297 //-----------------------------------------------------------------------
1310 //-----------------------------------------------------------------------
1324 static void showActionString( const std::string & sActionString );
1325 //-----------------------------------------------------------------------
1347 static void showAction( const OrderMsg * pOrderMsg,
1348 const std::string & rsActiontype,
1349 const std::string & rsActionString,
1350 char cSE);
1351 //-----------------------------------------------------------------------
1369 static void showOrderAction( OrderMsg * pOrderMsg, char cSE );
1370 //-----------------------------------------------------------------------
1392 static void showTransactionAction( OrderMsg * pOrderMsg,
1393 const std::string & rsActionString,
1394 char cSE);
1395 //-----------------------------------------------------------------------
1415 static void showWriterAction( OrderMsg * pOrderMsg,
1416 const std::string & rsActionString,
1417 char cSE);
1418 //-----------------------------------------------------------------------
1438 static void showReaderAction( OrderMsg * pOrderMsg,
1439 const std::string & rsActionString,
1440 char cSE);
1441 //-----------------------------------------------------------------------
1442
1443 //============== Methoden
1444 //-----------------------------------------------------------------------
1461 //-----------------------------------------------------------------------
1473 std::string getSchemaPath() const;
1474 //-----------------------------------------------------------------------
1491 void getKnownBases( std::vector< std::string > & rKnownBasesVector ) const;
1492 //-----------------------------------------------------------------------
1507 bool isBaseOpen( Communicator * pCommunicator );
1508 //-----------------------------------------------------------------------
1520 int takeOrder( OrderMsg * pOrderMsg );
1521 //-----------------------------------------------------------------------
1542 void getAllClients( std::vector< ClientInfo > & rClientInfoVector,
1543 std::string * psSchemaName = 0 ) const;
1544 //-----------------------------------------------------------------------
1545
1546 #ifdef _GLO_TEST
1547 public:
1548 #else
1549 protected:
1550 #endif
1551 //============== Methoden
1552 //-----------------------------------------------------------------------
1572 Manager::SchemaMapItem * getSchemaMapItem( const std::string & rsSchemaName ) const;
1573 //-----------------------------------------------------------------------
1593 SchemaInterface * getSchemaInterface( const std::string & rsSchemaName ) const;
1594 //-----------------------------------------------------------------------
1617 int createSchemaInterface( SchemaInterface *& prNewSchemaInterface,
1618 const std::string & rsSchemaName ) const;
1619 //-----------------------------------------------------------------------
1632 void insertInKnownBases( const std::vector< std::string > & rNewSchemes );
1633 //-----------------------------------------------------------------------
1634
1635 //============== Auftrags-Methoden
1636 //-----------------------------------------------------------------------
1653 void getAllKnownBases( OrderMsg * pOrderMsg ) const;
1654 //-----------------------------------------------------------------------
1675 void getClassInfo( OrderMsg * pOrderMsg ) const;
1676 //-----------------------------------------------------------------------
1700 void getBaseOrSubClassInfos( OrderMsg * pOrderMsg ) const;
1701 //-----------------------------------------------------------------------
1720 void getAllDataTypes( OrderMsg * pOrderMsg ) const;
1721 //-----------------------------------------------------------------------
1740 void getDataTypeLimits( OrderMsg * pOrderMsg ) const;
1741 //-----------------------------------------------------------------------
1758 void getAllClients( OrderMsg * pOrderMsg ) const;
1759 //-----------------------------------------------------------------------
1782 void openBase( OrderMsg * pOrderMsg );
1783 //-----------------------------------------------------------------------
1803 void closeBase( OrderMsg * pOrderMsg );
1804 //-----------------------------------------------------------------------
1827 void reindexBase( OrderMsg * pOrderMsg );
1828 //-----------------------------------------------------------------------
1853 void compressBase( OrderMsg * pOrderMsg );
1854 //-----------------------------------------------------------------------
1878 void repairBase( OrderMsg * pOrderMsg );
1879 //-----------------------------------------------------------------------
1904 void removeCommunicator( OrderMsg * pOrderMsg,
1905 WatchNotifyManager * pWatchNotifyManager = 0 );
1906 //-----------------------------------------------------------------------
1924 //-----------------------------------------------------------------------
1942 //-----------------------------------------------------------------------
1978 void sendToReaderThread( OrderMsg * pOrderMsg );
1979 //-----------------------------------------------------------------------
2005 void sendToWriter( OrderMsg * pOrderMsg );
2006 //-----------------------------------------------------------------------
2025 //-----------------------------------------------------------------------
2046 std::string sSchemaName );
2047 //-----------------------------------------------------------------------
2073 std::string sSchemaName,
2074 std::map< ObjID, Record *, std::less<ObjID> > * pInputDataRecordMap );
2075 //-----------------------------------------------------------------------
2095 //-----------------------------------------------------------------------
2096 #ifdef _GLO_TEST
2097 //---------------------------------------------------------------------
2109 LockManager * getLockManager();
2110 //---------------------------------------------------------------------
2111 #endif
2112 //-----------------------------------------------------------------------
2131 void sendToLockManager( OrderMsg * pOrderMsg );
2132 //-----------------------------------------------------------------------
2167 SchemaInterface * pSchema,
2168 std::list<ObjID> * pObjectIDsToBeLocked,
2169 LockSpecification * pLockSpec,
2170 Communicator * pCommunicator );
2171 //-----------------------------------------------------------------------
2195 //-----------------------------------------------------------------------
2213 //-----------------------------------------------------------------------
2234 const ObjID & rObjID,
2235 Communicator * pCommunicator,
2236 const std::string & rsSchemaName );
2237 //-----------------------------------------------------------------------
2258 const std::list<ObjID> & rObjIDList,
2259 Communicator * pCommunicator,
2260 const std::string & rsSchemaName );
2261 //-----------------------------------------------------------------------
2262
2263 //============== Unterstützer-Methoden
2264 //-----------------------------------------------------------------------
2265 #if defined(_MSC_VER)
2266 //-----------------------------------------------------------------------
2292 int lockBaseExclusive( std::ofstream *& prLockFile,
2293 const SchemaInterface & rSchemaInterface );
2294 //-----------------------------------------------------------------------
2295 #elif defined(__MINGW32__) || defined(__MINGW64__)
2296 //-----------------------------------------------------------------------
2322 int lockBaseExclusive( void *& prLockFileHandle,
2323 const SchemaInterface & rSchemaInterface );
2324 //-----------------------------------------------------------------------
2325 #elif defined(__GNUC__)
2326 //-----------------------------------------------------------------------
2352 int lockBaseExclusive( int & riLockFileHandle,
2353 const SchemaInterface & rSchemaInterface );
2354 //-----------------------------------------------------------------------
2355 #endif
2356 //-----------------------------------------------------------------------
2377 //-----------------------------------------------------------------------
2389 std::size_t getNumberReceiver() const;
2390 //-----------------------------------------------------------------------
2406 std::size_t getNumberReceiver( std::string sSchemaName ) const;
2407 //-----------------------------------------------------------------------
2418 //-----------------------------------------------------------------------
2436 void switchOffRecieverReader( std::string sSchemaName );
2437 //-----------------------------------------------------------------------
2448 //-----------------------------------------------------------------------
2464 void switchOnRecieverReader( std::string sSchemaName );
2465 //-----------------------------------------------------------------------
2495 void getAllTransactionIndexPools( std::vector< TransactionIndexPool * > & rTransactionIndexPoolVector,
2496 std::string * psSchemaName = 0,
2497 Communicator * pWithoutThisCommunicator = 0 ) const;
2498 //-----------------------------------------------------------------------
2520 Communicator * pCommunicator,
2521 TransactionManager::EnStoreDelete eStoreOrDelete,
2522 Record * pRecord );
2523 //-----------------------------------------------------------------------
2567 int checkAllRecordIndices( int iCheckStatus,
2568 const SchemaInterface & rSchema,
2569 const std::map< ObjID, Record *, std::less<ObjID> > & rRecordMap,
2570 IndexPool & rGloIndexPool ) const;
2571 //-----------------------------------------------------------------------
2595 void releaseStrIndexesFromTransactionStepList( std::list< TransactionManager::TransactionBase * > & rTransactionStepList,
2596 std::string & rsSchemaName );
2597 //-----------------------------------------------------------------------
2633 void unlockTransactionStepList( std::list< TransactionManager::TransactionBase * > & rTransactionStepList,
2634 Communicator * pCommunicator,
2635 const std::string & rsSchemaName,
2636 TransactionIndexPool * pTransactionIndexPool,
2637 bool bDelete );
2638 //-----------------------------------------------------------------------
2639 // doxygen -> warning: unable to resolve reference to 'GLO_REF_DEPENDENT' for \ref command
2640 // Is a reference to the GlobalObjects documentation.
2674 void getDependRecords( std::map< ObjID, Record *, std::less<ObjID> > & rDependRecordMap,
2675 Record & rSourceRecord,
2676 const TableReaderInterface & rTableReaderInterface,
2677 EnDeepMode eDeepMode,
2678 Communicator * pCommunicator = NULL_PTR ) const;
2679 //-----------------------------------------------------------------------
2680 // doxygen -> warning: unable to resolve reference to 'GLO_REF_DEPENDENT' for \ref command
2681 // Is a reference to the GlobalObjects documentation.
2718 void getDependRecordsRecursive( std::map< ObjID, Record *, std::less<ObjID> > & rDependRecordMap,
2719 Record & rSourceRecord,
2720 const TableReaderInterface & rTableReaderInterface,
2721 EnDeepMode eDeepMode,
2722 Communicator * pCommunicator = NULL_PTR ) const;
2723 //-----------------------------------------------------------------------
2734 //-----------------------------------------------------------------------
2745 //-----------------------------------------------------------------------
2746
2747 //============== Die Thread-Methode
2748 //-----------------------------------------------------------------------
2763 virtual void work() override;
2764 //-----------------------------------------------------------------------
2765
2766 private:
2767 //============== Operatoren
2768 //-----------------------------------------------------------------------
2778 Manager & operator= ( const Manager & );
2779 //-----------------------------------------------------------------------
2780 };
2781 //---------------------------------------------------------------------------
2782 #ifdef _MSC_VER
2783 /* 'Bezeichner': Klasse 'Typ' benötigt eine DLL-Schnittstelle, die von... */
2784 #pragma warning( default : 4251 )
2785 #endif
2786 //---------------------------------------------------------------------------
2787} // namespace glo
2788#endif
Header für CriticalSection
#define NULL_PTR
Definition EuDef_NULL_PTR.h:74
Header für EuEndlessPThread
Header für EuPCriticalSection
Header für RepeatingThread
Header für LockSpecification
Header für OrderMsg
Header für TransactionManager TransactionManager::TransactionBase TransactionManager::Transactio...
Für jede Bibliothek, hier 'GlobalObjects' gibt es eine Typen-Datei.
#define __glo_export_dll
Definition GloTypes.h:63
Header für WatchSpecification
Header für TDVList
Basisklasse für einen Thread der seine Arbeit endlos bis zum Abbruch ausführt.
Definition EuEndlessPThread.h:69
Ist ein Mutex, welcher über sein Lock-Modus abgefragt werden kann. Siehe isLocked().
Definition EuPCriticalSection.h:89
Ist ein Mutex, welcher über sein Lock-Modus abgefragt werden kann. Siehe isLocked().
Definition EuCriticalSection.h:94
Basisklasse für einen Thread der seine Arbeit endlos bis zum Abbruch ausführt.
Definition EuRepeatingThread.h:78
Ein CommunicaterThread nimmt Aufträge für sein TableReaderInterface an.
Definition GloCommunicaterThread.h:82
OberKlasse von LocalThread, ClientThread und ServerThread, weil diese als Sender und Empfänger (Kommu...
Definition GloCommunicator.h:86
IndexPool ist die Basisklasse für den RealIndexPool und den TransactionIndexPool für die einzelnen Tr...
Definition GloIndexPool.h:192
Objekte dieser Klasse überwachen den Sperrzustand von Objekten.
Definition GloLockManager.h:228
Um Objekte sperren zu können, werden der 'Lock-Modus' und die 'Sperrtiefe' als Parameter benötigt....
Definition GloLockSpecification.h:58
Ist die Gegenstelle bzw. der Kommunikator, welcher mit dem Manager kommuniziert. Bei dem Mehrbenutzbe...
Definition GloManager.h:216
CommunicaterThread * m_pCommunicatorThread
Definition GloManager.h:272
std::string getSchemaName() const
std::string m_sSchemaName
Definition GloManager.h:250
unsigned int m_uiRefCounter
Definition GloManager.h:237
unsigned int decrementRefCounter()
Receiver(const std::string &sSchemaName, CommunicaterThread *pCommunicatorThread, Communicator *pCommunicator)
Receiver(const Receiver &)
Communicator * m_pCommunicator
Definition GloManager.h:261
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:560
TableWriterInterface * m_pTableWriterInterface
Definition GloManager.h:599
unsigned int Counter() const
SchemaMapItem(const SchemaMapItem &)
SchemaInterface * m_pSchema
Definition GloManager.h:588
std::ofstream * m_pLockFile
Definition GloManager.h:615
unsigned int m_uiCounter
Definition GloManager.h:577
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:63
Das Objekt dieser Klasse ist die zentrale Anlaufstelle für Aktionen, welche mit GlobalObjects-Daten z...
Definition GloManager.h:184
int createSchemaInterface(SchemaInterface *&prNewSchemaInterface, const std::string &rsSchemaName) const
static ShowLevel getShowLevel()
std::map< SOCKET, ClientInfo, std::less< SOCKET > > m_ConnectedClientsMap
Definition GloManager.h:1041
RealIndexPool * getRealIndexPool()
static Manager * create(const std::string &rsSchemaPath, const std::vector< std::string > &rAllowedSchemes)
void deleteCommunicatorWatches(OrderMsg *pOrderMsg)
void openBase(OrderMsg *pOrderMsg)
int transactionManagerSetTransactionStep(const SchemaInterface &rSchema, Communicator *pCommunicator, TransactionManager::EnStoreDelete eStoreOrDelete, Record *pRecord)
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)
virtual ~Manager()
std::vector< std::string > m_KnownSchemes
Definition GloManager.h:1006
void getAllDataTypes(OrderMsg *pOrderMsg) const
WatchNotifyManager * m_pWatchNotifyManager
Definition GloManager.h:1087
Manager::SchemaMapItem * getSchemaMapItem(const std::string &rsSchemaName) const
static ManagerActionVisualiser * m_pActionVisualiser
Definition GloManager.h:971
void deleteAllObjectsInReceiverMap()
std::map< Communicator *, Receiver *, std::less< Communicator * > > m_ReceiverMap
Definition GloManager.h:1054
std::string getSchemaPath() const
eut::CriticalSection m_LocalCriticalSection
Definition GloManager.h:1128
int sendBEGINtoTransactionManager(Communicator *pCommunicator)
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:938
void insertInKnownBases(const std::vector< std::string > &rNewSchemes)
std::string m_strSchemaPath
Definition GloManager.h:995
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:1065
void unlockTransactionStepList(std::list< TransactionManager::TransactionBase * > &rTransactionStepList, Communicator *pCommunicator, const std::string &rsSchemaName, TransactionIndexPool *pTransactionIndexPool, bool bDelete)
static ShowLevel m_ulShowLevel
Definition GloManager.h:960
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 sendToTransactionManager(OrderMsg *pOrderMsg)
static void setActionVisualiser(ManagerActionVisualiser *pActionVisualiser)
void getAllKnownBases(OrderMsg *pOrderMsg) const
Manager(const Manager &)
void getClassInfo(OrderMsg *pOrderMsg) const
void removeCommunicator(OrderMsg *pOrderMsg, WatchNotifyManager *pWatchNotifyManager=0)
int sendToLockManager(OrderMsg::EnOrderType eOrderType, SchemaInterface *pSchema, std::list< ObjID > *pObjectIDsToBeLocked, LockSpecification *pLockSpec, Communicator *pCommunicator)
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:1019
static Manager * getAvailableInstance()
void getAllClients(std::vector< ClientInfo > &rClientInfoVector, std::string *psSchemaName=0) const
static void showActionString(const std::string &sActionString)
void getAllClients(OrderMsg *pOrderMsg) const
static int destroy()
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:1111
void getDependRecordsRecursive(std::map< ObjID, Record *, std::less< ObjID > > &rDependRecordMap, Record &rSourceRecord, const TableReaderInterface &rTableReaderInterface, EnDeepMode eDeepMode, Communicator *pCommunicator=NULL_PTR) const
int sendCOMMITtoTransactionManager(Communicator *pCommunicator, std::string sSchemaName, std::map< ObjID, Record *, std::less< ObjID > > *pInputDataRecordMap)
static void showReaderAction(OrderMsg *pOrderMsg, const std::string &rsActionString, char cSE)
std::queue< OrderMsg * > m_MsgQueue
Definition GloManager.h:1030
void reindexBase(OrderMsg *pOrderMsg)
void sendToWriter(OrderMsg *pOrderMsg)
unsigned int m_uiCommunicatorID
Definition GloManager.h:984
static void setShowLevel(ShowLevel ulLevel)
Manager(const std::string &rsSchemaPath, const std::vector< std::string > &rAllowedSchemes)
RealIndexPool * m_pRealIndexPool
Definition GloManager.h:1098
static void showAction(const OrderMsg *pOrderMsg, const std::string &rsActiontype, const std::string &rsActionString, char cSE)
int sendABORTtoTransactionManager(Communicator *pCommunicator, std::string sSchemaName)
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:949
bool isBaseOpen(Communicator *pCommunicator)
void switchOffRecieverReader(std::string sSchemaName)
Manager::Receiver * getReceiver(Communicator *pCommunicator)
void getDependRecords(std::map< ObjID, Record *, std::less< ObjID > > &rDependRecordMap, Record &rSourceRecord, const TableReaderInterface &rTableReaderInterface, EnDeepMode eDeepMode, Communicator *pCommunicator=NULL_PTR) const
TransactionManager * m_pTransactionManager
Definition GloManager.h:1076
Ein Objekt-ID besteht aus der Klassen-ID, einer Datenbank-ID und der eigentlichen eindeutigen ObjektZ...
Definition GloObjID.h:77
Mittels dieser Klasse wird die Kommunikation zwischen der Applikation, welche GlobalObjects nutzt und...
Definition GloOrderMsg.h:77
EnOrderType
Definition GloOrderMsg.h:98
Der reale Index im Gegensatz zum TransactionIndexPool, welcher für jede Transaktion erstellt wird.
Definition GloIndexPool.h:5151
Objekte dieser Klasse transportieren die Daten von den Tabellen ins persistente Objekt und von diesen...
Definition GloRecord.h:101
Diese Klasse ist die Schnittstelle zu einem GlobalObjects-Schema. Sie beinhaltet alle Klasseninformat...
Definition GloSchemaInterface.h:84
Ein Objekt dieser Klasse greift auf Tabellen zu und liest Datensätze (Record) und Binärdateien (eut::...
Definition GloTableReaderInterface.h:77
Ein Objekt dieser Klasse greift auf Tabellen zu und schreibt Datensätze (Record) und Binärdateien (eu...
Definition GloTableWriterInterface.h:70
Klasse, welche über ein SOCKET mit einem tcp::Client kommunizieret und das Empfangsergebnis vom Typ M...
Definition GloTcpServerReceiver.h:74
Dieser Index wird in jeder Transaktion generiert und die Änderungen wie speichern,...
Definition GloIndexPool.h:5924
Klasse um Transaktionen zu gewährleisten.
Definition GloTransactionManager.h:162
EnStoreDelete
Definition GloTransactionManager.h:176
Klassen um persistente Objekte überwachen zu können und bei Änderungen die jeweiligen Clients zu bean...
Definition GloWatchNotifyManager.h:344
Definition GloAbstractBaseLot.h:42
EnDeepMode
Definition GloTypes.h:247
unsigned long ShowLevel
Definition GloTypes.h:854
unsigned long TdWatchNotifyMode
Definition GloTypes.h:543
Eine Struktur um die Objekt-ID eines persistenten Objekts mit den Datensätzen der abhängigen Objekte ...
Definition GloManager.h:460
ObjIdWithDepends(const ObjID &rObjID, std::map< ObjID, Record *, std::less< ObjID > > *pDependRecordMap)
std::map< ObjID, Record *, std::less< ObjID > > * m_pDependRecordMap
Definition GloManager.h:489
ObjID m_ObjID
Definition GloManager.h:473