| OLD | NEW |
| 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 298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 309 // the context of a task. | 309 // the context of a task. |
| 310 bool QueueOrRunTask(Task* new_task); | 310 bool QueueOrRunTask(Task* new_task); |
| 311 | 311 |
| 312 // Runs the specified task and deletes it. | 312 // Runs the specified task and deletes it. |
| 313 void RunTask(Task* task); | 313 void RunTask(Task* task); |
| 314 | 314 |
| 315 // Calls RunTask or queues the pending_task on the deferred task list if it | 315 // Calls RunTask or queues the pending_task on the deferred task list if it |
| 316 // cannot be run right now. Returns true if the task was run. | 316 // cannot be run right now. Returns true if the task was run. |
| 317 bool DeferOrRunPendingTask(const PendingTask& pending_task); | 317 bool DeferOrRunPendingTask(const PendingTask& pending_task); |
| 318 | 318 |
| 319 // Adds the pending task to delayed_work_queue_. |
| 320 void AddToDelayedWorkQueue(const PendingTask& pending_task); |
| 321 |
| 319 // Load tasks from the incoming_queue_ into work_queue_ if the latter is | 322 // Load tasks from the incoming_queue_ into work_queue_ if the latter is |
| 320 // empty. The former requires a lock to access, while the latter is directly | 323 // empty. The former requires a lock to access, while the latter is directly |
| 321 // accessible on this thread. | 324 // accessible on this thread. |
| 322 void ReloadWorkQueue(); | 325 void ReloadWorkQueue(); |
| 323 | 326 |
| 324 // Delete tasks that haven't run yet without running them. Used in the | 327 // Delete tasks that haven't run yet without running them. Used in the |
| 325 // destructor to make sure all the task's destructors get called. | 328 // destructor to make sure all the task's destructors get called. Returns |
| 326 void DeletePendingTasks(); | 329 // true if some work was done. |
| 330 bool DeletePendingTasks(); |
| 327 | 331 |
| 328 // Post a task to our incomming queue. | 332 // Post a task to our incomming queue. |
| 329 void PostTask_Helper(const tracked_objects::Location& from_here, Task* task, | 333 void PostTask_Helper(const tracked_objects::Location& from_here, Task* task, |
| 330 int delay_ms, bool nestable); | 334 int delay_ms, bool nestable); |
| 331 | 335 |
| 332 // base::MessagePump::Delegate methods: | 336 // base::MessagePump::Delegate methods: |
| 333 virtual bool DoWork(); | 337 virtual bool DoWork(); |
| 334 virtual bool DoDelayedWork(Time* next_delayed_work_time); | 338 virtual bool DoDelayedWork(Time* next_delayed_work_time); |
| 335 virtual bool DoIdleWork(); | 339 virtual bool DoIdleWork(); |
| 336 | 340 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 357 DelayedTaskQueue delayed_work_queue_; | 361 DelayedTaskQueue delayed_work_queue_; |
| 358 | 362 |
| 359 // A queue of non-nestable tasks that we had to defer because when it came | 363 // A queue of non-nestable tasks that we had to defer because when it came |
| 360 // time to execute them we were in a nested message loop. They will execute | 364 // time to execute them we were in a nested message loop. They will execute |
| 361 // once we're out of nested message loops. | 365 // once we're out of nested message loops. |
| 362 TaskQueue deferred_non_nestable_work_queue_; | 366 TaskQueue deferred_non_nestable_work_queue_; |
| 363 | 367 |
| 364 scoped_refptr<base::MessagePump> pump_; | 368 scoped_refptr<base::MessagePump> pump_; |
| 365 | 369 |
| 366 ObserverList<DestructionObserver> destruction_observers_; | 370 ObserverList<DestructionObserver> destruction_observers_; |
| 371 |
| 367 // A recursion block that prevents accidentally running additonal tasks when | 372 // A recursion block that prevents accidentally running additonal tasks when |
| 368 // insider a (accidentally induced?) nested message pump. | 373 // insider a (accidentally induced?) nested message pump. |
| 369 bool nestable_tasks_allowed_; | 374 bool nestable_tasks_allowed_; |
| 370 | 375 |
| 371 bool exception_restoration_; | 376 bool exception_restoration_; |
| 372 | 377 |
| 373 std::string thread_name_; | 378 std::string thread_name_; |
| 374 // A profiling histogram showing the counts of various messages and events. | 379 // A profiling histogram showing the counts of various messages and events. |
| 375 scoped_ptr<LinearHistogram> message_histogram_; | 380 scoped_ptr<LinearHistogram> message_histogram_; |
| 376 | 381 |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 456 #endif // defined(OS_WIN) | 461 #endif // defined(OS_WIN) |
| 457 }; | 462 }; |
| 458 | 463 |
| 459 // Do not add any member variables to MessageLoopForIO! This is important b/c | 464 // Do not add any member variables to MessageLoopForIO! This is important b/c |
| 460 // MessageLoopForIO is often allocated via MessageLoop(TYPE_IO). Any extra | 465 // MessageLoopForIO is often allocated via MessageLoop(TYPE_IO). Any extra |
| 461 // data that you need should be stored on the MessageLoop's pump_ instance. | 466 // data that you need should be stored on the MessageLoop's pump_ instance. |
| 462 COMPILE_ASSERT(sizeof(MessageLoop) == sizeof(MessageLoopForIO), | 467 COMPILE_ASSERT(sizeof(MessageLoop) == sizeof(MessageLoopForIO), |
| 463 MessageLoopForIO_should_not_have_extra_member_variables); | 468 MessageLoopForIO_should_not_have_extra_member_variables); |
| 464 | 469 |
| 465 #endif // BASE_MESSAGE_LOOP_H_ | 470 #endif // BASE_MESSAGE_LOOP_H_ |
| OLD | NEW |