GlobalObjects
Lade ...
Suche ...
Keine Treffer
GloDataStreamer.h
gehe zur Dokumentation dieser Datei
1#ifndef INC_GLODATASTREAMER_H
2#define INC_GLODATASTREAMER_H
3//-----------------------------------------------------------------------------
37//-----------------------------------------------------------------------------
38#include <vector>
39#include <map>
40#include <list>
41#include <set>
42#include <sstream>
43#include "GloTypes.h"
44#include "EuBlob.h"
45#include "GloClassInfoIndex.h"
47#include "GloLockManager.h"
48#if defined (__PTHREADS)
49 #include <EuPCriticalSection.h>
50#else
51 #include "EuCriticalSection.h"
52#endif
53//-----------------------------------------------------------------------------
54/* Forwards */
55namespace eut
56{
57 class Blob;
58}
59//-----------------------------------------------------------------------------
60namespace glo
61{
62 class Record;
63 class ObjID;
64 class LimitRecord;
65 class BaseRecordAttribute;
66 //---------------------------------------------------------------------------
89 {
90 public:
91 //============== Enums
92 //-----------------------------------------------------------------------
103 {
104 eMAP,
113 eLIST
122 };
123 //-----------------------------------------------------------------------
124
125 private:
126 //============== Attribute
127 //-----------------------------------------------------------------------
140 #if defined (__PTHREADS)
141 EuPCriticalSection m_LocalCriticalSection;
142 #else
144 #endif
145 //-----------------------------------------------------------------------
146
147 public:
148 //============== De- und Konstruktor
149 //-----------------------------------------------------------------------
160 //-----------------------------------------------------------------------
170 virtual ~DataStreamer();
171 //-----------------------------------------------------------------------
172
173 private:
174 //============== Copy-Konstruktor
175 //-----------------------------------------------------------------------
186 //-----------------------------------------------------------------------
187
188 public:
189 //============== Methoden
190 //-----------------------------------------------------------------------
322 const Record & rRecord,
323 std::map< ObjID, ObjID, std::less<ObjID> > & rReadyRecordMap );
324 //-----------------------------------------------------------------------
467 const std::map< ObjID, Record *, std::less<ObjID> > & rRecordMap,
468 std::map< ObjID, ObjID, std::less<ObjID> > & rReadyRecordMap );
469 //-----------------------------------------------------------------------
612 const std::list< Record * > & rRecordList,
613 std::map< ObjID, ObjID, std::less<ObjID> > & rReadyRecordMap );
614 //-----------------------------------------------------------------------
697 int streamDataInBlob( eut::Blob & rBlob, const ClassInfo & rClassInfo );
698 //-----------------------------------------------------------------------
790 const std::map< unsigned long, ClassInfo *, std::less<unsigned long> > & rClassInfoMap );
791 //-----------------------------------------------------------------------
838 int streamDataInBlob( eut::Blob & rBlob, const LimitRecord & rLimitRecord );
839 //-----------------------------------------------------------------------
895 const std::vector< LimitRecord > & rLimitRecordVector );
896 //-----------------------------------------------------------------------
944 const ClassInfoAttribute::Type & rClassInfoAttributeType );
945 //-----------------------------------------------------------------------
946
947 private:
948 //============== InBlob-RecordHelper-Methoden
949 //-----------------------------------------------------------------------
1075 std::size_t streamDataRecordInBlob( eut::Blob & rBlob,
1076 const Record & rRecord,
1077 std::map< ObjID, ObjID, std::less<ObjID> > & rReadyRecordMap );
1078 //-----------------------------------------------------------------------
1379 BaseRecordAttribute & rAttribute,
1380 std::map< ObjID, ObjID, std::less<ObjID> > & rReadyRecordMap );
1381 //-----------------------------------------------------------------------
1426 template<typename T> int streamDataLotAttributeInBlob( eut::Blob & rAttributeValueBlob, T & rSet );
1427 //-----------------------------------------------------------------------
1428
1429 //============== InBlob-ClassInfoHelper-Methoden
1430 //-----------------------------------------------------------------------
1508 const ClassInfo & rClassInfo );
1509 //-----------------------------------------------------------------------
1557 const ClassInfoAttribute & rAttribute );
1558 //-----------------------------------------------------------------------
1606 const ClassInfoIndex & rIndex );
1607 //-----------------------------------------------------------------------
1649 const ClassInfoIndex::IndexAttributeItem & rIndexAttributeInfo );
1650 //-----------------------------------------------------------------------
1651
1652 //============== InBlob-LimitRecordHelper-Methoden
1653 //-----------------------------------------------------------------------
1693 const LimitRecord & rLimitRecord );
1694 //-----------------------------------------------------------------------
1695
1696 public:
1697 //============== OutBlob-Methoden
1698 //-----------------------------------------------------------------------
1741 int streamBlobInData( Record *& rpRecord,
1742 const eut::Blob & rBlob,
1743 const std::map< unsigned long, ClassInfo * > & prClassInfoMap,
1744 unsigned long ulClassID = 0 );
1745 //-----------------------------------------------------------------------
1788 int streamBlobInData( std::map< ObjID, Record *, std::less<ObjID> > *& rpRecordMap,
1789 const eut::Blob & rBlob,
1790 const std::map< unsigned long, ClassInfo * > & prClassInfoMap);
1791 //-----------------------------------------------------------------------
1834 int streamBlobInData( std::list<Record *> *& rpRecordList,
1835 const eut::Blob & rBlob,
1836 const std::map< unsigned long, ClassInfo * > & prClassInfoMap );
1837 //-----------------------------------------------------------------------
1874 int streamBlobInData( ClassInfo *& rpClassInfo, const eut::Blob & rBlob );
1875 //-----------------------------------------------------------------------
1915 int streamBlobInData( std::map< unsigned long, ClassInfo *, std::less<unsigned long> > *& prClassInfoMap,
1916 const eut::Blob & rBlob );
1917 //-----------------------------------------------------------------------
1954 int streamBlobInData( LimitRecord *& prLimitRecord, const eut::Blob & rBlob );
1955 //-----------------------------------------------------------------------
1995 int streamBlobInData( std::vector< LimitRecord > *& prLimitRecordVector,
1996 const eut::Blob & rBlob );
1997 //-----------------------------------------------------------------------
2039 int streamBlobInData( ClassInfoAttribute::Type *& rpClassInfoAttributeType,
2040 const eut::Blob & rBlob );
2041 //-----------------------------------------------------------------------
2042
2043 private:
2044 //============== OutBlob-RecordHelper-Methoden
2045 //-----------------------------------------------------------------------
2094 int streamBlobInRecord( Record *& rpRecord,
2095 const eut::Blob & rBlob,
2096 const std::map< unsigned long, ClassInfo * > & prClassInfoMap,
2097 std::map< ObjID, Record *, std::less<ObjID> > & rReadyRecordMap,
2098 unsigned long ulClassID = 0 );
2099 //-----------------------------------------------------------------------
2150 int streamBlobInRecordContainer( std::map< ObjID, Record *, std::less<ObjID> > *& rpRecordMap,
2151 std::list<Record *> *& rpRecordList,
2152 ContainerType eContainerType,
2153 const eut::Blob & rBlob,
2154 const std::map< unsigned long, ClassInfo * > & prClassInfoMap );
2155 //-----------------------------------------------------------------------
2156
2157 //============== OutBlob-ClassInfoHelper-Methoden
2158 //-----------------------------------------------------------------------
2195 int streamBlobInClassInfo( ClassInfo *& rpClassInfo, const eut::Blob & rBlob );
2196 //-----------------------------------------------------------------------
2197
2198 //============== OutBlob-RecordAttributeHelper-Methoden
2199 //-----------------------------------------------------------------------
2283 const eut::Blob & rBlob,
2284 const std::map< unsigned long, ClassInfo * > & prClassInfoMap,
2285 std::map< ObjID, Record *, std::less<ObjID> > & rReadyRecordMap,
2286 unsigned long ulClassID = 0 );
2287 //-----------------------------------------------------------------------
2339 const eut::Blob & rBlob,
2340 const std::string & rsFileInfo,
2341 unsigned int uiAttributeInformation,
2342 const std::map< unsigned long, ClassInfo * > & prClassInfoMap,
2343 std::map< ObjID, Record *, std::less<ObjID> > & rReadyRecordMap,
2344 unsigned long ulClassID = 0 );
2345 //-----------------------------------------------------------------------
2346
2347 //============== OutBlob-ClassInfoHelper-Methoden
2348 //-----------------------------------------------------------------------
2376 const eut::Blob & rBlob );
2377 //-----------------------------------------------------------------------
2404 const eut::Blob & rBlob );
2405 //-----------------------------------------------------------------------
2434 const eut::Blob & rBlob );
2435 //-----------------------------------------------------------------------
2436
2437 //============== OutBlob-LimitRecordHelper-Methoden
2438 //-----------------------------------------------------------------------
2473 const eut::Blob & rBlob );
2474 //-----------------------------------------------------------------------
2475
2476 //============== DataStreamer Helper-Methoden
2477 //-----------------------------------------------------------------------
2530 int getTagVariable( std::string & rsRetVal,
2531 const eut::Blob & rBlob,
2532 const std::string & rsTagVar );
2533 //-----------------------------------------------------------------------
2572 int getTagVariable( std::size_t & rnRetVal,
2573 const eut::Blob & rBlob,
2574 const std::string & rsTagVar );
2575 //-----------------------------------------------------------------------
2576
2577 //============== Operatoren
2578 //-----------------------------------------------------------------------
2588 DataStreamer & operator= ( const DataStreamer & );
2589 //-----------------------------------------------------------------------
2590 };
2591 //---------------------------------------------------------------------------
2592 template<typename T> int DataStreamer::streamDataLotAttributeInBlob( eut::Blob & rAttributeValueBlob, T & rSet )
2593 {
2594 int t_iErr = 0;
2595 typename T::const_iterator t_Iter;
2596 std::ostringstream t_ossIterConverter,
2597 t_ossSizeConverter;
2598
2599 for ( t_Iter = rSet.begin();
2600 t_Iter != rSet.end();
2601 ++ t_Iter )
2602 {
2603 t_ossIterConverter.str("");
2604 t_ossSizeConverter.str("");
2605 t_ossIterConverter << (*t_Iter);
2606 t_iErr = rAttributeValueBlob.append( "<e l=\"", 6 );
2607 t_ossSizeConverter << t_ossIterConverter.str().size();
2608 if ( ! t_iErr ) t_iErr = rAttributeValueBlob.append( t_ossSizeConverter.str().c_str(),
2609 t_ossSizeConverter.str().size() );
2610 if ( ! t_iErr ) t_iErr = rAttributeValueBlob.append( "\">", 2 );
2611 if ( ! t_iErr ) t_iErr = rAttributeValueBlob.append( t_ossIterConverter.str().c_str(), t_ossIterConverter.str().size() );
2612 if ( ! t_iErr ) t_iErr = rAttributeValueBlob.append( "</e>", 4 );
2613 if ( t_iErr ) break;
2614 }
2615 return t_iErr;
2616 }
2617 //---------------------------------------------------------------------------
2618} // namespace glo
2619#endif
Header für Blob
Header für CriticalSection
Header für EuPCriticalSection
Header für ClassInfoAttribute und ClassInfoAttribute::Type
Header für ClassInfoIndex und ClassInfoIndex::IndexAttributeItem
Header für LockManager LockManager::LockedObject LockManager::LockedObject::CommunicatorRightsRes...
Für jede Bibliothek, hier 'GlobalObjects' gibt es eine Typen-Datei.
#define __glo_export_dll
Definition GloTypes.h:63
Ist ein Mutex, welcher über sein Lock-Modus abgefragt werden kann. Siehe isLocked().
Definition EuPCriticalSection.h:89
Diese Klasse erlaubt das Bearbeiten eines Blobs (einfügen, kopieren, durchsuchen etc....
Definition EuBlob.h:60
int append(const char *pBuffer, std::size_t nBufferSize)
Ist ein Mutex, welcher über sein Lock-Modus abgefragt werden kann. Siehe isLocked().
Definition EuCriticalSection.h:94
Basisklasse für die einzelnen Attribute eines Record.
Definition GloBaseRecordAttribute.h:109
Zusammengefasste Typinformationen für ein ClassInfoAttribute.
Definition GloClassInfoAttribute.h:101
In Objekten dieser Klasse sind die Information für GlobalObjects, wie ein persistentes Klassenattribu...
Definition GloClassInfoAttribute.h:76
Diese Klasse beinhaltet alle Informationen um Objekte einer Klasse in einer Datenbank speichern zu kö...
Definition GloClassInfo.h:79
Information für den Index aus welcher Klasse welches Attribut mit wie viel Zeichen zum Index gehört.
Definition GloClassInfoIndex.h:104
In Objekten dieser Klasse sind die Information für GlobalObjects, wie ein Index aufgebaut ist.
Definition GloClassInfoIndex.h:78
Diese Klasse kodiert bzw. dekodiert Daten für den Transport in einem TCP-Paket.
Definition GloDataStreamer.h:89
int streamBlobInData(std::map< ObjID, Record *, std::less< ObjID > > *&rpRecordMap, const eut::Blob &rBlob, const std::map< unsigned long, ClassInfo * > &prClassInfoMap)
eut::CriticalSection m_LocalCriticalSection
Definition GloDataStreamer.h:143
std::size_t streamDataLimitRecordInBlob(eut::Blob &rBlob, const LimitRecord &rLimitRecord)
int streamDataInBlob(eut::Blob &rBlob, const std::map< ObjID, Record *, std::less< ObjID > > &rRecordMap, std::map< ObjID, ObjID, std::less< ObjID > > &rReadyRecordMap)
int streamDataInBlob(eut::Blob &rBlob, const ClassInfo &rClassInfo)
std::size_t streamDataClassInfoInBlob(eut::Blob &rBlob, const ClassInfo &rClassInfo)
int streamBlobInData(ClassInfoAttribute::Type *&rpClassInfoAttributeType, const eut::Blob &rBlob)
int streamDataInBlob(eut::Blob &rBlob, const std::map< unsigned long, ClassInfo *, std::less< unsigned long > > &rClassInfoMap)
int streamBlobInClassInfo(ClassInfo *&rpClassInfo, const eut::Blob &rBlob)
int streamBlobInData(std::vector< LimitRecord > *&prLimitRecordVector, const eut::Blob &rBlob)
int streamDataInBlob(eut::Blob &rBlob, const LimitRecord &rLimitRecord)
int streamDataInBlob(eut::Blob &rBlob, const std::vector< LimitRecord > &rLimitRecordVector)
int getTagVariable(std::size_t &rnRetVal, const eut::Blob &rBlob, const std::string &rsTagVar)
int streamDataInBlob(eut::Blob &rBlob, const Record &rRecord, std::map< ObjID, ObjID, std::less< ObjID > > &rReadyRecordMap)
int streamBlobIndexItemsInClassInfoIndex(ClassInfoIndex &rClassInfoIndex, const eut::Blob &rBlob)
std::size_t streamDataClassInfoIndexAttributeInBlob(eut::Blob &rBlob, const ClassInfoIndex::IndexAttributeItem &rIndexAttributeInfo)
int streamBlobInRecordContainer(std::map< ObjID, Record *, std::less< ObjID > > *&rpRecordMap, std::list< Record * > *&rpRecordList, ContainerType eContainerType, const eut::Blob &rBlob, const std::map< unsigned long, ClassInfo * > &prClassInfoMap)
std::size_t streamDataClassInfoAttributeInBlob(eut::Blob &rBlob, const ClassInfoAttribute &rAttribute)
int streamBlobLimitRecordInLimitRecordAttribute(LimitRecord &rLimitRecord, const eut::Blob &rBlob)
DataStreamer(const DataStreamer &)
int streamBlobInData(std::map< unsigned long, ClassInfo *, std::less< unsigned long > > *&prClassInfoMap, const eut::Blob &rBlob)
int streamBlobInData(LimitRecord *&prLimitRecord, const eut::Blob &rBlob)
int streamDataInBlob(eut::Blob &rBlob, const ClassInfoAttribute::Type &rClassInfoAttributeType)
std::size_t streamDataRecordInBlob(eut::Blob &rBlob, const Record &rRecord, std::map< ObjID, ObjID, std::less< ObjID > > &rReadyRecordMap)
std::size_t streamDataClassInfoIndexInBlob(eut::Blob &rBlob, const ClassInfoIndex &rIndex)
int streamBlobAttributeListInRecord(Record &rRecord, const eut::Blob &rBlob, const std::map< unsigned long, ClassInfo * > &prClassInfoMap, std::map< ObjID, Record *, std::less< ObjID > > &rReadyRecordMap, unsigned long ulClassID=0)
int streamBlobAttributeListInClassInfo(ClassInfo &rClassInfo, const eut::Blob &rBlob)
std::size_t streamDataRecordAttributeInBlob(eut::Blob &rBlob, BaseRecordAttribute &rAttribute, std::map< ObjID, ObjID, std::less< ObjID > > &rReadyRecordMap)
int streamDataInBlob(eut::Blob &rBlob, const std::list< Record * > &rRecordList, std::map< ObjID, ObjID, std::less< ObjID > > &rReadyRecordMap)
int streamDataLotAttributeInBlob(eut::Blob &rAttributeValueBlob, T &rSet)
Definition GloDataStreamer.h:2592
int streamBlobInData(std::list< Record * > *&rpRecordList, const eut::Blob &rBlob, const std::map< unsigned long, ClassInfo * > &prClassInfoMap)
virtual ~DataStreamer()
int getTagVariable(std::string &rsRetVal, const eut::Blob &rBlob, const std::string &rsTagVar)
int streamBlobInRecord(Record *&rpRecord, const eut::Blob &rBlob, const std::map< unsigned long, ClassInfo * > &prClassInfoMap, std::map< ObjID, Record *, std::less< ObjID > > &rReadyRecordMap, unsigned long ulClassID=0)
int streamBlobIndexListInClassInfo(ClassInfo &rClassInfo, const eut::Blob &rBlob)
ContainerType
Definition GloDataStreamer.h:103
int streamBlobAttributeInRecordAttribute(BaseRecordAttribute &rBaseRecordAttribute, const eut::Blob &rBlob, const std::string &rsFileInfo, unsigned int uiAttributeInformation, const std::map< unsigned long, ClassInfo * > &prClassInfoMap, std::map< ObjID, Record *, std::less< ObjID > > &rReadyRecordMap, unsigned long ulClassID=0)
int streamBlobInData(ClassInfo *&rpClassInfo, const eut::Blob &rBlob)
int streamBlobInData(Record *&rpRecord, const eut::Blob &rBlob, const std::map< unsigned long, ClassInfo * > &prClassInfoMap, unsigned long ulClassID=0)
In Objekten dieser Klasse werden die Min- und Max-Werte von unterstützten Datentypen und deren Feldlä...
Definition GloLimitRecord.h:64
Ein Objekt-ID besteht aus der Klassen-ID, einer Datenbank-ID und der eigentlichen eindeutigen ObjektZ...
Definition GloObjID.h:77
Objekte dieser Klasse transportieren die Daten von den Tabellen ins persistente Objekt und von diesen...
Definition GloRecord.h:101
Definition IniFile.h:47
Definition GloAbstractBaseLot.h:42