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 <queue> | 8 #include <queue> |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
358 // If message_histogram_ is NULL, this is a no-op. | 358 // If message_histogram_ is NULL, this is a no-op. |
359 void HistogramEvent(int event); | 359 void HistogramEvent(int event); |
360 | 360 |
361 static const LinearHistogram::DescriptionPair event_descriptions_[]; | 361 static const LinearHistogram::DescriptionPair event_descriptions_[]; |
362 static bool enable_histogrammer_; | 362 static bool enable_histogrammer_; |
363 | 363 |
364 Type type_; | 364 Type type_; |
365 | 365 |
366 // A list of tasks that need to be processed by this instance. Note that | 366 // A list of tasks that need to be processed by this instance. Note that |
367 // this queue is only accessed (push/pop) by our current thread. | 367 // this queue is only accessed (push/pop) by our current thread. |
368 TaskQueue work_queue_; | 368 scoped_ptr<TaskQueue> work_queue_; |
369 | 369 |
370 // Contains delayed tasks, sorted by their 'delayed_run_time' property. | 370 // Contains delayed tasks, sorted by their 'delayed_run_time' property. |
371 DelayedTaskQueue delayed_work_queue_; | 371 DelayedTaskQueue delayed_work_queue_; |
372 | 372 |
373 // A queue of non-nestable tasks that we had to defer because when it came | 373 // A queue of non-nestable tasks that we had to defer because when it came |
374 // time to execute them we were in a nested message loop. They will execute | 374 // time to execute them we were in a nested message loop. They will execute |
375 // once we're out of nested message loops. | 375 // once we're out of nested message loops. |
376 TaskQueue deferred_non_nestable_work_queue_; | 376 TaskQueue deferred_non_nestable_work_queue_; |
377 | 377 |
378 scoped_refptr<base::MessagePump> pump_; | 378 scoped_refptr<base::MessagePump> pump_; |
379 | 379 |
380 ObserverList<DestructionObserver> destruction_observers_; | 380 ObserverList<DestructionObserver> destruction_observers_; |
381 | 381 |
382 // A recursion block that prevents accidentally running additonal tasks when | 382 // A recursion block that prevents accidentally running additonal tasks when |
383 // insider a (accidentally induced?) nested message pump. | 383 // insider a (accidentally induced?) nested message pump. |
384 bool nestable_tasks_allowed_; | 384 bool nestable_tasks_allowed_; |
385 | 385 |
386 bool exception_restoration_; | 386 bool exception_restoration_; |
387 | 387 |
388 std::string thread_name_; | 388 std::string thread_name_; |
389 // A profiling histogram showing the counts of various messages and events. | 389 // A profiling histogram showing the counts of various messages and events. |
390 scoped_ptr<LinearHistogram> message_histogram_; | 390 scoped_ptr<LinearHistogram> message_histogram_; |
391 | 391 |
392 // A null terminated list which creates an incoming_queue of tasks that are | 392 // A null terminated list which creates an incoming_queue of tasks that are |
393 // aquired under a mutex for processing on this instance's thread. These tasks | 393 // aquired under a mutex for processing on this instance's thread. These tasks |
394 // have not yet been sorted out into items for our work_queue_ vs items that | 394 // have not yet been sorted out into items for our work_queue_ vs items that |
395 // will be handled by the TimerManager. | 395 // will be handled by the TimerManager. |
396 TaskQueue incoming_queue_; | 396 scoped_ptr<TaskQueue> incoming_queue_; |
397 // Protect access to incoming_queue_. | 397 // Protect access to incoming_queue_. |
398 Lock incoming_queue_lock_; | 398 Lock incoming_queue_lock_; |
399 | 399 |
400 RunState* state_; | 400 RunState* state_; |
401 | 401 |
402 // The next sequence number to use for delayed tasks. | 402 // The next sequence number to use for delayed tasks. |
403 int next_sequence_num_; | 403 int next_sequence_num_; |
404 | 404 |
405 DISALLOW_COPY_AND_ASSIGN(MessageLoop); | 405 DISALLOW_COPY_AND_ASSIGN(MessageLoop); |
406 }; | 406 }; |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
504 #endif // defined(OS_POSIX) | 504 #endif // defined(OS_POSIX) |
505 }; | 505 }; |
506 | 506 |
507 // Do not add any member variables to MessageLoopForIO! This is important b/c | 507 // Do not add any member variables to MessageLoopForIO! This is important b/c |
508 // MessageLoopForIO is often allocated via MessageLoop(TYPE_IO). Any extra | 508 // MessageLoopForIO is often allocated via MessageLoop(TYPE_IO). Any extra |
509 // data that you need should be stored on the MessageLoop's pump_ instance. | 509 // data that you need should be stored on the MessageLoop's pump_ instance. |
510 COMPILE_ASSERT(sizeof(MessageLoop) == sizeof(MessageLoopForIO), | 510 COMPILE_ASSERT(sizeof(MessageLoop) == sizeof(MessageLoopForIO), |
511 MessageLoopForIO_should_not_have_extra_member_variables); | 511 MessageLoopForIO_should_not_have_extra_member_variables); |
512 | 512 |
513 #endif // BASE_MESSAGE_LOOP_H_ | 513 #endif // BASE_MESSAGE_LOOP_H_ |
OLD | NEW |