diff options
| author | Li Jin <dragon-fly@qq.com> | 2025-04-09 17:40:13 +0800 |
|---|---|---|
| committer | Li Jin <dragon-fly@qq.com> | 2025-04-09 17:40:13 +0800 |
| commit | 9750786a5c03b5ce3ea22b240d1b3cd34990856b (patch) | |
| tree | e495e43245e1bacc86d33142af202613a82a40c1 /src/3rdParty/efsw/WatcherWin32.hpp | |
| parent | 571fb952b99e580a0381f539885f8f175e2ec3b0 (diff) | |
| download | yuescript-9750786a5c03b5ce3ea22b240d1b3cd34990856b.tar.gz yuescript-9750786a5c03b5ce3ea22b240d1b3cd34990856b.tar.bz2 yuescript-9750786a5c03b5ce3ea22b240d1b3cd34990856b.zip | |
Updated efsw. Fixed issue #204.
Diffstat (limited to 'src/3rdParty/efsw/WatcherWin32.hpp')
| -rw-r--r--[-rwxr-xr-x] | src/3rdParty/efsw/WatcherWin32.hpp | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/3rdParty/efsw/WatcherWin32.hpp b/src/3rdParty/efsw/WatcherWin32.hpp index 71e13be..ea1e8e4 100755..100644 --- a/src/3rdParty/efsw/WatcherWin32.hpp +++ b/src/3rdParty/efsw/WatcherWin32.hpp | |||
| @@ -3,6 +3,7 @@ | |||
| 3 | 3 | ||
| 4 | #include <efsw/FileInfo.hpp> | 4 | #include <efsw/FileInfo.hpp> |
| 5 | #include <efsw/FileWatcherImpl.hpp> | 5 | #include <efsw/FileWatcherImpl.hpp> |
| 6 | #include <vector> | ||
| 6 | 7 | ||
| 7 | #if EFSW_PLATFORM == EFSW_PLATFORM_WIN32 | 8 | #if EFSW_PLATFORM == EFSW_PLATFORM_WIN32 |
| 8 | 9 | ||
| @@ -21,6 +22,8 @@ namespace efsw { | |||
| 21 | 22 | ||
| 22 | class WatcherWin32; | 23 | class WatcherWin32; |
| 23 | 24 | ||
| 25 | enum RefreshResult { Failed, Success, SucessEx }; | ||
| 26 | |||
| 24 | /// Internal watch data | 27 | /// Internal watch data |
| 25 | struct WatcherStructWin32 { | 28 | struct WatcherStructWin32 { |
| 26 | OVERLAPPED Overlapped; | 29 | OVERLAPPED Overlapped; |
| @@ -32,39 +35,41 @@ struct sLastModifiedEvent { | |||
| 32 | std::string fileName; | 35 | std::string fileName; |
| 33 | }; | 36 | }; |
| 34 | 37 | ||
| 35 | bool RefreshWatch( WatcherStructWin32* pWatch ); | 38 | RefreshResult RefreshWatch( WatcherStructWin32* pWatch ); |
| 36 | 39 | ||
| 37 | void CALLBACK WatchCallback( DWORD dwNumberOfBytesTransfered, LPOVERLAPPED lpOverlapped ); | 40 | void CALLBACK WatchCallback( DWORD dwNumberOfBytesTransfered, LPOVERLAPPED lpOverlapped ); |
| 38 | 41 | ||
| 39 | void DestroyWatch( WatcherStructWin32* pWatch ); | 42 | void DestroyWatch( WatcherStructWin32* pWatch ); |
| 40 | 43 | ||
| 41 | WatcherStructWin32* CreateWatch( LPCWSTR szDirectory, bool recursive, DWORD NotifyFilter, | 44 | WatcherStructWin32* CreateWatch( LPCWSTR szDirectory, bool recursive, |
| 42 | HANDLE iocp ); | 45 | DWORD bufferSize, DWORD notifyFilter, HANDLE iocp ); |
| 43 | 46 | ||
| 44 | class WatcherWin32 : public Watcher { | 47 | class WatcherWin32 : public Watcher { |
| 45 | public: | 48 | public: |
| 46 | WatcherWin32() : | 49 | WatcherWin32(DWORD dwBufferSize) : |
| 47 | Struct( NULL ), | 50 | Struct( NULL ), |
| 48 | DirHandle( NULL ), | 51 | DirHandle( NULL ), |
| 52 | Buffer(), | ||
| 49 | lParam( 0 ), | 53 | lParam( 0 ), |
| 50 | NotifyFilter( 0 ), | 54 | NotifyFilter( 0 ), |
| 51 | StopNow( false ), | 55 | StopNow( false ), |
| 56 | Extended( false ), | ||
| 52 | Watch( NULL ), | 57 | Watch( NULL ), |
| 53 | DirName( NULL ) {} | 58 | DirName( NULL ) { |
| 59 | Buffer.resize(dwBufferSize); | ||
| 60 | } | ||
| 54 | 61 | ||
| 55 | WatcherStructWin32* Struct; | 62 | WatcherStructWin32* Struct; |
| 56 | HANDLE DirHandle; | 63 | HANDLE DirHandle; |
| 57 | BYTE Buffer | 64 | std::vector<BYTE> Buffer; |
| 58 | [63 * | ||
| 59 | 1024]; // do NOT make this bigger than 64K because it will fail if the folder being watched | ||
| 60 | // is on the network! (see | ||
| 61 | // http://msdn.microsoft.com/en-us/library/windows/desktop/aa365465(v=vs.85).aspx) | ||
| 62 | LPARAM lParam; | 65 | LPARAM lParam; |
| 63 | DWORD NotifyFilter; | 66 | DWORD NotifyFilter; |
| 64 | bool StopNow; | 67 | bool StopNow; |
| 68 | bool Extended; | ||
| 65 | FileWatcherImpl* Watch; | 69 | FileWatcherImpl* Watch; |
| 66 | char* DirName; | 70 | char* DirName; |
| 67 | sLastModifiedEvent LastModifiedEvent; | 71 | sLastModifiedEvent LastModifiedEvent; |
| 72 | std::vector<std::pair<std::string, LARGE_INTEGER>> OldFiles; | ||
| 68 | }; | 73 | }; |
| 69 | 74 | ||
| 70 | } // namespace efsw | 75 | } // namespace efsw |
