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

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

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/builtin_natives.cc ('k') | runtime/bin/eventhandler_win.cc » ('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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 #ifndef BIN_EVENTHANDLER_WIN_H_ 5 #ifndef BIN_EVENTHANDLER_WIN_H_
6 #define BIN_EVENTHANDLER_WIN_H_ 6 #define BIN_EVENTHANDLER_WIN_H_
7 7
8 #if !defined(BIN_EVENTHANDLER_H_) 8 #if !defined(BIN_EVENTHANDLER_H_)
9 #error Do not include eventhandler_win.h directly; use eventhandler.h instead. 9 #error Do not include eventhandler_win.h directly; use eventhandler.h instead.
10 #endif 10 #endif
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 // object as the object is allocated larger than it's definition 123 // object as the object is allocated larger than it's definition
124 // indicate to extend this array. 124 // indicate to extend this array.
125 uint8_t buffer_data_[1]; 125 uint8_t buffer_data_[1];
126 }; 126 };
127 127
128 128
129 // Abstract super class for holding information on listen and connected 129 // Abstract super class for holding information on listen and connected
130 // sockets. 130 // sockets.
131 class Handle { 131 class Handle {
132 public: 132 public:
133 enum Type { kFile, kClientSocket, kListenSocket }; 133 enum Type {
134 kFile,
135 kDirectoryWatch,
136 kClientSocket,
137 kListenSocket
138 };
134 139
135 class ScopedLock { 140 class ScopedLock {
136 public: 141 public:
137 explicit ScopedLock(Handle* handle) 142 explicit ScopedLock(Handle* handle)
138 : handle_(handle) { 143 : handle_(handle) {
139 handle_->Lock(); 144 handle_->Lock();
140 } 145 }
141 ~ScopedLock() { 146 ~ScopedLock() {
142 handle_->Unlock(); 147 handle_->Unlock();
143 } 148 }
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
239 244
240 private: 245 private:
241 int flags_; 246 int flags_;
242 CRITICAL_SECTION cs_; // Critical section protecting this object. 247 CRITICAL_SECTION cs_; // Critical section protecting this object.
243 }; 248 };
244 249
245 250
246 class FileHandle : public Handle { 251 class FileHandle : public Handle {
247 public: 252 public:
248 explicit FileHandle(HANDLE handle) 253 explicit FileHandle(HANDLE handle)
249 : Handle(reinterpret_cast<HANDLE>(handle)) { type_ = kFile; } 254 : Handle(handle) { type_ = kFile; }
250 FileHandle(HANDLE handle, Dart_Port port) 255 FileHandle(HANDLE handle, Dart_Port port)
251 : Handle(reinterpret_cast<HANDLE>(handle), port) { type_ = kFile; } 256 : Handle(handle, port) { type_ = kFile; }
252 257
253 virtual void EnsureInitialized(EventHandlerImplementation* event_handler); 258 virtual void EnsureInitialized(EventHandlerImplementation* event_handler);
254 virtual bool IsClosed(); 259 virtual bool IsClosed();
255 virtual void DoClose(); 260 virtual void DoClose();
256 }; 261 };
257 262
258 263
264 class DirectoryWatchHandle : public Handle {
265 public:
266 DirectoryWatchHandle(HANDLE handle, int events, bool recursive)
267 : Handle(handle),
268 events_(events),
269 recursive_(recursive) {
270 type_ = kDirectoryWatch;
271 }
272
273 virtual void EnsureInitialized(EventHandlerImplementation* event_handler);
274 virtual bool IsClosed();
275 virtual void DoClose();
276
277 virtual bool IssueRead();
278
279 private:
280 int events_;
281 bool recursive_;
282 };
283
284
259 class SocketHandle : public Handle { 285 class SocketHandle : public Handle {
260 public: 286 public:
261 SOCKET socket() { return reinterpret_cast<SOCKET>(handle_); } 287 SOCKET socket() { return reinterpret_cast<SOCKET>(handle_); }
262 288
263 protected: 289 protected:
264 explicit SocketHandle(SOCKET s) : Handle(reinterpret_cast<HANDLE>(s)) {} 290 explicit SocketHandle(SOCKET s) : Handle(reinterpret_cast<HANDLE>(s)) {}
265 SocketHandle(SOCKET s, Dart_Port port) 291 SocketHandle(SOCKET s, Dart_Port port)
266 : Handle(reinterpret_cast<HANDLE>(s), port) {} 292 : Handle(reinterpret_cast<HANDLE>(s), port) {}
267 293
268 virtual void HandleIssueError(); 294 virtual void HandleIssueError();
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 419
394 TimeoutQueue timeout_queue_; // Time for next timeout. 420 TimeoutQueue timeout_queue_; // Time for next timeout.
395 bool shutdown_; 421 bool shutdown_;
396 HANDLE completion_port_; 422 HANDLE completion_port_;
397 }; 423 };
398 424
399 } // namespace bin 425 } // namespace bin
400 } // namespace dart 426 } // namespace dart
401 427
402 #endif // BIN_EVENTHANDLER_WIN_H_ 428 #endif // BIN_EVENTHANDLER_WIN_H_
OLDNEW
« no previous file with comments | « runtime/bin/builtin_natives.cc ('k') | runtime/bin/eventhandler_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698