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

Side by Side Diff: base/message_loop.h

Issue 8156: Switch MessagePumpForIO to use completion ports on Windows.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 12 years, 1 month 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 | « no previous file | base/message_loop.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) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef BASE_MESSAGE_LOOP_H_ 5 #ifndef BASE_MESSAGE_LOOP_H_
6 #define BASE_MESSAGE_LOOP_H_ 6 #define BASE_MESSAGE_LOOP_H_
7 7
8 #include <deque> 8 #include <deque>
9 #include <queue> 9 #include <queue>
10 #include <string> 10 #include <string>
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after
419 // Please see MessagePumpWin for definitions of these methods. 419 // Please see MessagePumpWin for definitions of these methods.
420 void Run(Dispatcher* dispatcher); 420 void Run(Dispatcher* dispatcher);
421 void AddObserver(Observer* observer); 421 void AddObserver(Observer* observer);
422 void RemoveObserver(Observer* observer); 422 void RemoveObserver(Observer* observer);
423 void WillProcessMessage(const MSG& message); 423 void WillProcessMessage(const MSG& message);
424 void DidProcessMessage(const MSG& message); 424 void DidProcessMessage(const MSG& message);
425 void PumpOutPendingPaintMessages(); 425 void PumpOutPendingPaintMessages();
426 426
427 protected: 427 protected:
428 // TODO(rvargas): Make this platform independent. 428 // TODO(rvargas): Make this platform independent.
429 base::MessagePumpWin* pump_ui() { 429 base::MessagePumpForUI* pump_ui() {
430 return static_cast<base::MessagePumpForUI*>(pump_.get()); 430 return static_cast<base::MessagePumpForUI*>(pump_.get());
431 } 431 }
432 #endif // defined(OS_WIN) 432 #endif // defined(OS_WIN)
433 }; 433 };
434 434
435 // Do not add any member variables to MessageLoopForUI! This is important b/c 435 // Do not add any member variables to MessageLoopForUI! This is important b/c
436 // MessageLoopForUI is often allocated via MessageLoop(TYPE_UI). Any extra 436 // MessageLoopForUI is often allocated via MessageLoop(TYPE_UI). Any extra
437 // data that you need should be stored on the MessageLoop's pump_ instance. 437 // data that you need should be stored on the MessageLoop's pump_ instance.
438 COMPILE_ASSERT(sizeof(MessageLoop) == sizeof(MessageLoopForUI), 438 COMPILE_ASSERT(sizeof(MessageLoop) == sizeof(MessageLoopForUI),
439 MessageLoopForUI_should_not_have_extra_member_variables); 439 MessageLoopForUI_should_not_have_extra_member_variables);
(...skipping 11 matching lines...) Expand all
451 } 451 }
452 452
453 // Returns the MessageLoopForIO of the current thread. 453 // Returns the MessageLoopForIO of the current thread.
454 static MessageLoopForIO* current() { 454 static MessageLoopForIO* current() {
455 MessageLoop* loop = MessageLoop::current(); 455 MessageLoop* loop = MessageLoop::current();
456 DCHECK_EQ(MessageLoop::TYPE_IO, loop->type()); 456 DCHECK_EQ(MessageLoop::TYPE_IO, loop->type());
457 return static_cast<MessageLoopForIO*>(loop); 457 return static_cast<MessageLoopForIO*>(loop);
458 } 458 }
459 459
460 #if defined(OS_WIN) 460 #if defined(OS_WIN)
461 typedef base::MessagePumpForIO::Watcher Watcher;
462 typedef base::MessagePumpForIO::IOHandler IOHandler; 461 typedef base::MessagePumpForIO::IOHandler IOHandler;
462 typedef base::MessagePumpForIO::IOContext IOContext;
463 463
464 // Please see MessagePumpWin for definitions of these methods. 464 // Please see MessagePumpWin for definitions of these methods.
465 void WatchObject(HANDLE object, Watcher* watcher);
466 void RegisterIOHandler(HANDLE file_handle, IOHandler* handler); 465 void RegisterIOHandler(HANDLE file_handle, IOHandler* handler);
467 void RegisterIOContext(OVERLAPPED* context, IOHandler* handler); 466 bool WaitForIOCompletion(DWORD timeout, IOHandler* filter);
468 467
469 protected: 468 protected:
470 // TODO(rvargas): Make this platform independent. 469 // TODO(rvargas): Make this platform independent.
471 base::MessagePumpForIO* pump_io() { 470 base::MessagePumpForIO* pump_io() {
472 return static_cast<base::MessagePumpForIO*>(pump_.get()); 471 return static_cast<base::MessagePumpForIO*>(pump_.get());
473 } 472 }
474 473
475 #elif defined(OS_POSIX) 474 #elif defined(OS_POSIX)
476 typedef base::MessagePumpLibevent::Watcher Watcher; 475 typedef base::MessagePumpLibevent::Watcher Watcher;
477 476
478 // Please see MessagePumpLibevent for definitions of these methods. 477 // Please see MessagePumpLibevent for definitions of these methods.
479 void WatchSocket(int socket, short interest_mask, 478 void WatchSocket(int socket, short interest_mask,
480 struct event* e, Watcher* watcher); 479 struct event* e, Watcher* watcher);
481 void UnwatchSocket(struct event* e); 480 void UnwatchSocket(struct event* e);
482 #endif // defined(OS_POSIX) 481 #endif // defined(OS_POSIX)
483 }; 482 };
484 483
485 // Do not add any member variables to MessageLoopForIO! This is important b/c 484 // Do not add any member variables to MessageLoopForIO! This is important b/c
486 // MessageLoopForIO is often allocated via MessageLoop(TYPE_IO). Any extra 485 // MessageLoopForIO is often allocated via MessageLoop(TYPE_IO). Any extra
487 // data that you need should be stored on the MessageLoop's pump_ instance. 486 // data that you need should be stored on the MessageLoop's pump_ instance.
488 COMPILE_ASSERT(sizeof(MessageLoop) == sizeof(MessageLoopForIO), 487 COMPILE_ASSERT(sizeof(MessageLoop) == sizeof(MessageLoopForIO),
489 MessageLoopForIO_should_not_have_extra_member_variables); 488 MessageLoopForIO_should_not_have_extra_member_variables);
490 489
491 #endif // BASE_MESSAGE_LOOP_H_ 490 #endif // BASE_MESSAGE_LOOP_H_
OLDNEW
« no previous file with comments | « no previous file | base/message_loop.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698