Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1113)

Unified Diff: runtime/bin/file_system_watcher_win.cc

Issue 98773002: Rewrite file-system-watcher to better handle the different system APIs. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Android impl and doc fix. Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/bin/file_system_watcher_macos.cc ('k') | sdk/lib/_internal/lib/io_patch.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/bin/file_system_watcher_win.cc
diff --git a/runtime/bin/file_system_watcher_win.cc b/runtime/bin/file_system_watcher_win.cc
index 97310091eeb80725fb797f722d8ccdb34651a047..adb2426076b830dff82ae686c7872d8f95c3f6ef 100644
--- a/runtime/bin/file_system_watcher_win.cc
+++ b/runtime/bin/file_system_watcher_win.cc
@@ -23,9 +23,21 @@ bool FileSystemWatcher::IsSupported() {
}
-intptr_t FileSystemWatcher::WatchPath(const char* path,
+intptr_t FileSystemWatcher::Init() {
+ return 0;
+}
+
+
+void FileSystemWatcher::Close(intptr_t id) {
+ USE(id);
+}
+
+
+intptr_t FileSystemWatcher::WatchPath(intptr_t id,
+ const char* path,
int events,
bool recursive) {
+ USE(id);
const wchar_t* name = StringUtils::Utf8ToWide(path);
HANDLE dir = CreateFileW(name,
FILE_LIST_DIRECTORY,
@@ -59,19 +71,22 @@ intptr_t FileSystemWatcher::WatchPath(const char* path,
}
-void FileSystemWatcher::UnwatchPath(intptr_t id) {
- // Nothing to do.
+void FileSystemWatcher::UnwatchPath(intptr_t id, intptr_t path_id) {
+ USE(id);
+ USE(path_id);
}
-intptr_t FileSystemWatcher::GetSocketId(intptr_t id) {
- return id;
+intptr_t FileSystemWatcher::GetSocketId(intptr_t id, intptr_t path_id) {
+ USE(id);
+ return path_id;
}
-Dart_Handle FileSystemWatcher::ReadEvents(intptr_t id) {
+Dart_Handle FileSystemWatcher::ReadEvents(intptr_t id, intptr_t path_id) {
+ USE(id);
const intptr_t kEventSize = sizeof(FILE_NOTIFY_INFORMATION);
- DirectoryWatchHandle* dir = reinterpret_cast<DirectoryWatchHandle*>(id);
+ DirectoryWatchHandle* dir = reinterpret_cast<DirectoryWatchHandle*>(path_id);
intptr_t available = dir->Available();
intptr_t max_count = available / kEventSize + 1;
Dart_Handle events = Dart_NewList(max_count);
@@ -83,7 +98,7 @@ Dart_Handle FileSystemWatcher::ReadEvents(intptr_t id) {
FILE_NOTIFY_INFORMATION* e =
reinterpret_cast<FILE_NOTIFY_INFORMATION*>(buffer + offset);
- Dart_Handle event = Dart_NewList(4);
+ Dart_Handle event = Dart_NewList(5);
int mask = 0;
if (e->Action == FILE_ACTION_ADDED) mask |= kCreate;
if (e->Action == FILE_ACTION_REMOVED) mask |= kDelete;
@@ -96,6 +111,7 @@ Dart_Handle FileSystemWatcher::ReadEvents(intptr_t id) {
Dart_ListSetAt(event, 2, Dart_NewStringFromUTF16(
reinterpret_cast<uint16_t*>(e->FileName), e->FileNameLength / 2));
Dart_ListSetAt(event, 3, Dart_NewBoolean(true));
+ Dart_ListSetAt(event, 4, Dart_NewInteger(path_id));
Dart_ListSetAt(events, i, event);
i++;
if (e->NextEntryOffset == 0) break;
« no previous file with comments | « runtime/bin/file_system_watcher_macos.cc ('k') | sdk/lib/_internal/lib/io_patch.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698