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

Side by Side Diff: runtime/bin/eventhandler_win.cc

Issue 19263003: Add FileSystemWatcher class to dart:io. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix android socket. Created 7 years, 3 months 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/bin/eventhandler_win.h ('k') | runtime/bin/file_patch.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "platform/globals.h" 5 #include "platform/globals.h"
6 #if defined(TARGET_OS_WINDOWS) 6 #if defined(TARGET_OS_WINDOWS)
7 7
8 #include "bin/eventhandler.h" 8 #include "bin/eventhandler.h"
9 9
10 #include <process.h> // NOLINT 10 #include <process.h> // NOLINT
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 int fd = _open("NUL", _O_WRONLY); 336 int fd = _open("NUL", _O_WRONLY);
337 ASSERT(fd >= 0); 337 ASSERT(fd >= 0);
338 _dup2(fd, _fileno(stdout)); 338 _dup2(fd, _fileno(stdout));
339 close(fd); 339 close(fd);
340 } else { 340 } else {
341 Handle::DoClose(); 341 Handle::DoClose();
342 } 342 }
343 } 343 }
344 344
345 345
346 void DirectoryWatchHandle::EnsureInitialized(
347 EventHandlerImplementation* event_handler) {
348 ScopedLock lock(this);
349 event_handler_ = event_handler;
350 if (completion_port_ == INVALID_HANDLE_VALUE) {
351 CreateCompletionPort(event_handler_->completion_port());
352 }
353 }
354
355
356 bool DirectoryWatchHandle::IsClosed() {
357 return IsClosing() && pending_read_ == NULL;
358 }
359
360
361 void DirectoryWatchHandle::DoClose() {
362 Handle::DoClose();
363 }
364
365 bool DirectoryWatchHandle::IssueRead() {
366 ScopedLock lock(this);
367 OverlappedBuffer* buffer = OverlappedBuffer::AllocateReadBuffer(kBufferSize);
368
369 ASSERT(completion_port_ != INVALID_HANDLE_VALUE);
370
371 BOOL ok = ReadDirectoryChangesW(handle_,
372 buffer->GetBufferStart(),
373 buffer->GetBufferSize(),
374 recursive_,
375 events_,
376 NULL,
377 buffer->GetCleanOverlapped(),
378 NULL);
379 if (ok || GetLastError() == ERROR_IO_PENDING) {
380 // Completing asynchronously.
381 pending_read_ = buffer;
382 return true;
383 }
384 OverlappedBuffer::DisposeBuffer(buffer);
385 return false;
386 }
387
388
346 void SocketHandle::HandleIssueError() { 389 void SocketHandle::HandleIssueError() {
347 int error = WSAGetLastError(); 390 int error = WSAGetLastError();
348 if (error == WSAECONNRESET) { 391 if (error == WSAECONNRESET) {
349 event_handler_->HandleClosed(this); 392 event_handler_->HandleClosed(this);
350 } else { 393 } else {
351 event_handler_->HandleError(this); 394 event_handler_->HandleError(this);
352 } 395 }
353 WSASetLastError(error); 396 WSASetLastError(error);
354 } 397 }
355 398
(...skipping 660 matching lines...) Expand 10 before | Expand all | Expand 10 after
1016 1059
1017 1060
1018 void EventHandlerImplementation::Shutdown() { 1061 void EventHandlerImplementation::Shutdown() {
1019 SendData(kShutdownId, 0, 0); 1062 SendData(kShutdownId, 0, 0);
1020 } 1063 }
1021 1064
1022 } // namespace bin 1065 } // namespace bin
1023 } // namespace dart 1066 } // namespace dart
1024 1067
1025 #endif // defined(TARGET_OS_WINDOWS) 1068 #endif // defined(TARGET_OS_WINDOWS)
OLDNEW
« no previous file with comments | « runtime/bin/eventhandler_win.h ('k') | runtime/bin/file_patch.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698