Change Log Code structure Unfinished
[TortoiseGit.git] / src / TortoiseProc / gitlogcache.h
blobe79f346cc14d3d6017b56a90764017d78b9eea17
1 #pragma once
3 #include "Git.h"
4 #include "TGitPath.h"
5 #include "GitRev.h"
6 #include "GitHash.h"
8 #define LOG_INDEX_MAGIC 0x88445566
9 #define LOG_DATA_MAGIC 0x99aa00FF
10 #define LOG_DATA_ITEM_MAGIC 0x0F8899CC
11 #define LOG_DATA_FILE_MAGIC 0x19999FFF
12 #define LOG_INDEX_VERSION 0x7
14 struct SLogCacheIndexHeader
16 DWORD m_Magic;
17 DWORD m_Version;
18 DWORD m_ItemCount;
21 struct SLogCacheItem
23 CGitHash m_Hash;
24 ULONGLONG m_Offset;
27 struct SLogCacheRevFileHeader
29 DWORD m_Magic;
30 DWORD m_Version;
33 struct SLogCacheRevItemHeader
35 DWORD m_Magic;
36 DWORD m_Version;
37 DWORD m_FileCount;
40 class CGitHashMap:public std::map<CGitHash,GitRev>
42 public:
43 bool IsExist(CGitHash &hash)
45 return find(hash) != end();
49 #define INDEX_FILE_NAME _T("tortoisegit.index")
50 #define DATA_FILE_NAME _T("tortoisegit.data")
51 #define LOCK_FILE_NAME _T("tortoisegit.lock")
53 class CLogCache
55 protected:
56 CFile m_IndexFile;
57 CFile m_DataFile;
58 CFile m_LockFile;
60 BOOL CheckHeader(SLogCacheIndexHeader &header)
62 if(header.m_Magic != LOG_INDEX_MAGIC)
63 return FALSE;
65 if(header.m_Version != LOG_INDEX_VERSION)
66 return FALSE;
68 return TRUE;
71 BOOL CheckHeader(SLogCacheRevFileHeader &header)
73 if(header.m_Magic != LOG_DATA_MAGIC)
74 return FALSE;
76 if(header.m_Version != LOG_INDEX_VERSION)
77 return FALSE;
79 return TRUE;
82 BOOL CheckHeader(SLogCacheRevItemHeader &header)
84 if(header.m_Magic != LOG_DATA_ITEM_MAGIC)
85 return FALSE;
87 if(header.m_Version != LOG_INDEX_VERSION)
88 return FALSE;
90 return TRUE;
93 int SaveOneItem(GitRev &Rev,ULONGLONG offset);
94 int LoadOneItem(GitRev &Rev,ULONGLONG offset);
95 CString m_GitDir;
96 int RebuildCacheFile();
98 public:
99 CLogCache();
100 ~CLogCache();
101 int FetchCacheIndex(CString GitDir);
103 CGitHashMap m_HashMap;
104 std::map<CGitHash, ULONGLONG> m_HashMapIndex;
106 int GetCacheData(GitRev &Rev);
107 int AddCacheEntry(GitRev &Rev);
108 int SaveCache();