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