1 #ifndef _CEGOLOGRECORD_H_INCLUDED_
2 #define _CEGOLOGRECORD_H_INCLUDED_
3 ///////////////////////////////////////////////////////////////////////////////
4 //
5 // CegoLogRecord.h
6 // ---------------
7 // Cego Log Record structure definition
8 //
9 // Design and Implementation by Bjoern Lemke
10 //
11 // (C)opyright 2000-2019 Bjoern Lemke
12 //
13 // INTERFACE MODULE
14 //
15 // Class: CegoLogRecord
16 //
17 // Description: Log record data structure
18 //
19 // Status: CLEAN
20 //
21 ///////////////////////////////////////////////////////////////////////////////
22 
23 // LFC INCLUDES
24 #include <lfcbase/Chain.h>
25 
26 // CEGO INCLUDES
27 #include "CegoDefs.h"
28 #include "CegoObject.h"
29 
30 class CegoLogRecord {
31 
32 public:
33 
34     enum LogAction { LOGREC_CREATE,
35 		     LOGREC_DROP,
36 		     LOGREC_ALTER,
37 		     LOGREC_RENAME,
38 		     LOGREC_INSERT,
39 		     LOGREC_DELETE,
40 		     LOGREC_UPDATE,
41 		     LOGREC_BEGIN,
42 		     LOGREC_COMMIT,
43 		     LOGREC_ABORT,
44 		     LOGREC_SYNC,
45 		     LOGREC_BUPAGE,
46 		     LOGREC_BUFBM,
47 		     LOGREC_BUFIN,
48 		     LOGREC_ADDCOUNTER,
49 		     LOGREC_DELCOUNTER,
50     		     LOGREC_TRUNCATE };
51 
52     CegoLogRecord();
53     ~CegoLogRecord();
54 
55     // log sequence number
56     unsigned long long getLSN() const;
57     void setLSN(unsigned long long lsn);
58 
59     // log timestamp
60     unsigned long long getTS() const;
61     void setTS(unsigned long long ts);
62 
63     // tid
64     unsigned long long getTID() const;
65     void setTID(unsigned long long tid);
66 
67     // tastep
68     unsigned long long getTAStep() const;
69     void setTAStep(unsigned long long tastep);
70 
71     void setObjectInfo(const Chain& objName, CegoObject::ObjectType type);
72 
73     const Chain& getObjName() const;
74     CegoObject::ObjectType getObjType() const;
75 
76     LogAction getAction() const;
77     void setAction(LogAction a);
78 
79     char* getData() const;
80     void setData(char* data);
81 
82     int getDataLen() const;
83     void setDataLen(int l);
84 
85     int getFileId() const;
86     void setFileId(int fileId);
87 
88     PageIdType getPageId() const;
89     void setPageId(PageIdType pageId);
90 
91     int getEncodingLength() const;
92 
93     void encode(void* p) const;
94     void decode(void* p);
95     void decodeLSN(void* p);
96     void decodeLogAction(void* p);
97 
98     void clean();
99 
100     CegoLogRecord& operator = ( const CegoLogRecord& d);
101 
102     friend ostream& operator << (ostream& s, const CegoLogRecord& logRecord);
103 
104     Chain toChain() const;
105 
106 private:
107 
108     unsigned long long _lsn;
109     unsigned long long _tid;
110     unsigned long long _tastep;
111 
112     Chain _objName;
113     CegoObject::ObjectType _objType;
114 
115     enum LogAction _logAction;
116     int _dataLen;
117     char* _data;
118     bool _encObj;
119 
120     // for file BM logging
121     int _fileId;
122 
123     // for page logging
124     PageIdType _pageId;
125 
126     unsigned long long _ts;
127 };
128 
129 #endif
130