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

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

Issue 312743002: Use 'Directory.watch' on Windows in pkg/watcher, instead of pooling. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fixes Created 6 years, 6 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
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 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 OVERLAPPED* GetCleanOverlapped() { 86 OVERLAPPED* GetCleanOverlapped() {
87 memset(&overlapped_, 0, sizeof(overlapped_)); 87 memset(&overlapped_, 0, sizeof(overlapped_));
88 return &overlapped_; 88 return &overlapped_;
89 } 89 }
90 90
91 // Returns a WASBUF structure initialized with the data in this IO buffer. 91 // Returns a WASBUF structure initialized with the data in this IO buffer.
92 WSABUF* GetWASBUF() { 92 WSABUF* GetWASBUF() {
93 wbuf_.buf = GetBufferStart(); 93 wbuf_.buf = GetBufferStart();
94 wbuf_.len = GetBufferSize(); 94 wbuf_.len = GetBufferSize();
95 return &wbuf_; 95 return &wbuf_;
96 }; 96 }
97 97
98 void set_data_length(int data_length) { data_length_ = data_length; } 98 void set_data_length(int data_length) { data_length_ = data_length; }
99 99
100 private: 100 private:
101 OverlappedBuffer(int buffer_size, Operation operation) 101 OverlappedBuffer(int buffer_size, Operation operation)
102 : operation_(operation), buflen_(buffer_size) { 102 : operation_(operation), buflen_(buffer_size) {
103 memset(GetBufferStart(), 0, GetBufferSize()); 103 memset(GetBufferStart(), 0, GetBufferSize());
104 if (operation == kRecvFrom) { 104 if (operation == kRecvFrom) {
105 // Reserve part of the buffer for the length of source sockaddr 105 // Reserve part of the buffer for the length of source sockaddr
106 // and source sockaddr. 106 // and source sockaddr.
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
342 events_(events), 342 events_(events),
343 recursive_(recursive) { 343 recursive_(recursive) {
344 type_ = kDirectoryWatch; 344 type_ = kDirectoryWatch;
345 } 345 }
346 346
347 virtual void EnsureInitialized(EventHandlerImplementation* event_handler); 347 virtual void EnsureInitialized(EventHandlerImplementation* event_handler);
348 virtual bool IsClosed(); 348 virtual bool IsClosed();
349 349
350 virtual bool IssueRead(); 350 virtual bool IssueRead();
351 351
352 void Stop();
353
352 private: 354 private:
353 int events_; 355 int events_;
354 bool recursive_; 356 bool recursive_;
355 }; 357 };
356 358
357 359
358 class SocketHandle : public Handle { 360 class SocketHandle : public Handle {
359 public: 361 public:
360 SOCKET socket() { return reinterpret_cast<SOCKET>(handle_); } 362 SOCKET socket() { return reinterpret_cast<SOCKET>(handle_); }
361 363
(...skipping 13 matching lines...) Expand all
375 AcceptEx_(NULL), 377 AcceptEx_(NULL),
376 pending_accept_count_(0), 378 pending_accept_count_(0),
377 accepted_head_(NULL), 379 accepted_head_(NULL),
378 accepted_tail_(NULL) { 380 accepted_tail_(NULL) {
379 type_ = kListenSocket; 381 type_ = kListenSocket;
380 } 382 }
381 virtual ~ListenSocket() { 383 virtual ~ListenSocket() {
382 ASSERT(!HasPendingAccept()); 384 ASSERT(!HasPendingAccept());
383 ASSERT(accepted_head_ == NULL); 385 ASSERT(accepted_head_ == NULL);
384 ASSERT(accepted_tail_ == NULL); 386 ASSERT(accepted_tail_ == NULL);
385 }; 387 }
386 388
387 // Socket interface exposing normal socket operations. 389 // Socket interface exposing normal socket operations.
388 ClientSocket* Accept(); 390 ClientSocket* Accept();
389 bool CanAccept(); 391 bool CanAccept();
390 392
391 // Internal interface used by the event handler. 393 // Internal interface used by the event handler.
392 bool HasPendingAccept() { return pending_accept_count_ > 0; } 394 bool HasPendingAccept() { return pending_accept_count_ > 0; }
393 bool IssueAccept(); 395 bool IssueAccept();
394 void AcceptComplete(OverlappedBuffer* buffer, HANDLE completion_port); 396 void AcceptComplete(OverlappedBuffer* buffer, HANDLE completion_port);
395 397
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 LoadDisconnectEx(); 434 LoadDisconnectEx();
433 type_ = kClientSocket; 435 type_ = kClientSocket;
434 } 436 }
435 437
436 virtual ~ClientSocket() { 438 virtual ~ClientSocket() {
437 // Don't delete this object until all pending requests have been handled. 439 // Don't delete this object until all pending requests have been handled.
438 ASSERT(!HasPendingRead()); 440 ASSERT(!HasPendingRead());
439 ASSERT(!HasPendingWrite()); 441 ASSERT(!HasPendingWrite());
440 ASSERT(next_ == NULL); 442 ASSERT(next_ == NULL);
441 ASSERT(closed_ == true); 443 ASSERT(closed_ == true);
442 }; 444 }
443 445
444 void Shutdown(int how); 446 void Shutdown(int how);
445 447
446 // Internal interface used by the event handler. 448 // Internal interface used by the event handler.
447 virtual bool IssueRead(); 449 virtual bool IssueRead();
448 virtual bool IssueWrite(); 450 virtual bool IssueWrite();
449 void IssueDisconnect(); 451 void IssueDisconnect();
450 void DisconnectComplete(OverlappedBuffer* buffer); 452 void DisconnectComplete(OverlappedBuffer* buffer);
451 453
452 void ConnectComplete(OverlappedBuffer* buffer); 454 void ConnectComplete(OverlappedBuffer* buffer);
(...skipping 24 matching lines...) Expand all
477 class DatagramSocket : public SocketHandle { 479 class DatagramSocket : public SocketHandle {
478 public: 480 public:
479 explicit DatagramSocket(SOCKET s) : SocketHandle(s) { 481 explicit DatagramSocket(SOCKET s) : SocketHandle(s) {
480 type_ = kDatagramSocket; 482 type_ = kDatagramSocket;
481 } 483 }
482 484
483 virtual ~DatagramSocket() { 485 virtual ~DatagramSocket() {
484 // Don't delete this object until all pending requests have been handled. 486 // Don't delete this object until all pending requests have been handled.
485 ASSERT(!HasPendingRead()); 487 ASSERT(!HasPendingRead());
486 ASSERT(!HasPendingWrite()); 488 ASSERT(!HasPendingWrite());
487 }; 489 }
488 490
489 // Internal interface used by the event handler. 491 // Internal interface used by the event handler.
490 virtual bool IssueRecvFrom(); 492 virtual bool IssueRecvFrom();
491 virtual bool IssueSendTo(sockaddr* sa, socklen_t sa_len); 493 virtual bool IssueSendTo(sockaddr* sa, socklen_t sa_len);
492 494
493 virtual void EnsureInitialized(EventHandlerImplementation* event_handler); 495 virtual void EnsureInitialized(EventHandlerImplementation* event_handler);
494 virtual void DoClose(); 496 virtual void DoClose();
495 virtual bool IsClosed(); 497 virtual bool IsClosed();
496 }; 498 };
497 499
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 531
530 TimeoutQueue timeout_queue_; // Time for next timeout. 532 TimeoutQueue timeout_queue_; // Time for next timeout.
531 bool shutdown_; 533 bool shutdown_;
532 HANDLE completion_port_; 534 HANDLE completion_port_;
533 }; 535 };
534 536
535 } // namespace bin 537 } // namespace bin
536 } // namespace dart 538 } // namespace dart
537 539
538 #endif // BIN_EVENTHANDLER_WIN_H_ 540 #endif // BIN_EVENTHANDLER_WIN_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698