OSDN Git Service

Add TGitCache Code
[tortoisegit/TortoiseGitJp.git] / src / TGitCache / CacheInterface.h
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // External Cache Copyright (C) 2005-2006,2008 - TortoiseSVN\r
4 \r
5 // This program is free software; you can redistribute it and/or\r
6 // modify it under the terms of the GNU General Public License\r
7 // as published by the Free Software Foundation; either version 2\r
8 // of the License, or (at your option) any later version.\r
9 \r
10 // This program is distributed in the hope that it will be useful,\r
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 // GNU General Public License for more details.\r
14 \r
15 // You should have received a copy of the GNU General Public License\r
16 // along with this program; if not, write to the Free Software Foundation,\r
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.\r
18 //\r
19 \r
20 #pragma once\r
21 #include "wininet.h"\r
22 \r
23 // The name of the named-pipe for the cache\r
24 #ifdef WIN64\r
25 #define TSVN_CACHE_PIPE_NAME _T("\\\\.\\pipe\\TSVNCache64")\r
26 #define TSVN_CACHE_COMMANDPIPE_NAME _T("\\\\.\\pipe\\TSVNCacheCommand64")\r
27 #define TSVN_CACHE_WINDOW_NAME _T("TSVNCacheWindow64")\r
28 #define TSVN_CACHE_MUTEX_NAME _T("TSVNCacheMutex64")\r
29 #else\r
30 #define TSVN_CACHE_PIPE_NAME _T("\\\\.\\pipe\\TSVNCache")\r
31 #define TSVN_CACHE_COMMANDPIPE_NAME _T("\\\\.\\pipe\\TSVNCacheCommand")\r
32 #define TSVN_CACHE_WINDOW_NAME _T("TSVNCacheWindow")\r
33 #define TSVN_CACHE_MUTEX_NAME _T("TSVNCacheMutex")\r
34 #endif\r
35 \r
36 CString GetCachePipeName();\r
37 CString GetCacheCommandPipeName();\r
38 CString GetCacheMutexName();\r
39 \r
40 CString GetCacheID();\r
41 \r
42 /**\r
43  * \ingroup TSVNCache\r
44  * A structure passed as a request from the shell (or other client) to the external cache\r
45  */ \r
46 struct TSVNCacheRequest\r
47 {\r
48         DWORD flags;\r
49         WCHAR path[MAX_PATH+1];\r
50 };\r
51 \r
52 // CustomActions will use this header but does not need nor understand the SVN types ...\r
53 \r
54 #ifdef SVN_WC_H\r
55 \r
56 /**\r
57  * \ingroup TSVNCache\r
58  * The structure returned as a response\r
59  */\r
60 struct TSVNCacheResponse\r
61 {\r
62         svn_wc_status2_t m_status;\r
63         svn_wc_entry_t m_entry;\r
64         svn_node_kind_t m_kind;\r
65         char m_url[INTERNET_MAX_URL_LENGTH+1];\r
66         char m_owner[255];              ///< owner of the lock\r
67         char m_author[255];\r
68         bool m_readonly;                ///< whether the file is write protected or not\r
69         bool m_needslock;               ///< whether the file has the svn:needs-lock property set or not (only works with the new working copy version)\r
70 };\r
71 \r
72 #endif // SVN_WC_H\r
73 \r
74 /**\r
75  * \ingroup TSVNCache\r
76  * a cache command\r
77  */\r
78 struct TSVNCacheCommand\r
79 {\r
80         BYTE command;                           ///< the command to execute\r
81         WCHAR path[MAX_PATH+1];         ///< path to do the command for\r
82 };\r
83 \r
84 #define         TSVNCACHECOMMAND_END            0               ///< ends the thread handling the pipe communication\r
85 #define         TSVNCACHECOMMAND_CRAWL          1               ///< start crawling the specified path for changes\r
86 #define         TSVNCACHECOMMAND_REFRESHALL     2               ///< Refreshes the whole cache, usually necessary after the "treat unversioned files as modified" option changed.\r
87 #define         TSVNCACHECOMMAND_RELEASE        3               ///< Releases all open handles for the specified path and all paths below\r
88 \r
89 \r
90 /// Set this flag if you already know whether or not the item is a folder\r
91 #define TSVNCACHE_FLAGS_FOLDERISKNOWN           0x01\r
92 /// Set this flag if the item is a folder\r
93 #define TSVNCACHE_FLAGS_ISFOLDER                        0x02\r
94 /// Set this flag if you want recursive folder status (safely ignored for file paths)\r
95 #define TSVNCACHE_FLAGS_RECUSIVE_STATUS         0x04\r
96 /// Set this flag if notifications to the shell are not allowed\r
97 #define TSVNCACHE_FLAGS_NONOTIFICATIONS         0x08\r