diff options
author | levin@chromium.org <levin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-26 06:09:38 +0000 |
---|---|---|
committer | levin@chromium.org <levin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-26 06:09:38 +0000 |
commit | 6fd0ca52fbb5d33e3355c0ebe8fe81219be90de0 (patch) | |
tree | 6a24baf9874440f81fde368ab964ffc0d912c2d5 /base/task_queue.h | |
parent | b924ae04055aa82cd19ef522b690e3cd66352c11 (diff) | |
download | chromium_src-6fd0ca52fbb5d33e3355c0ebe8fe81219be90de0.zip chromium_src-6fd0ca52fbb5d33e3355c0ebe8fe81219be90de0.tar.gz chromium_src-6fd0ca52fbb5d33e3355c0ebe8fe81219be90de0.tar.bz2 |
Move task_queue.* to base because it makes more sense there.
TEST=base_test --gtest_filter=TaskQueue*.* (added in this patch).
BUG=38475
Review URL: http://codereview.chromium.org/3205004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57479 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/task_queue.h')
-rw-r--r-- | base/task_queue.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/base/task_queue.h b/base/task_queue.h new file mode 100644 index 0000000..5bfc777 --- /dev/null +++ b/base/task_queue.h @@ -0,0 +1,43 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef BASE_TASK_QUEUE_H_ +#define BASE_TASK_QUEUE_H_ +#pragma once + +#include <deque> + +#include "base/task.h" + +// A TaskQueue is a queue of tasks waiting to be run. To run the tasks, call +// the Run method. A task queue is itself a Task so that it can be placed in a +// message loop or another task queue. +class TaskQueue : public Task { + public: + TaskQueue(); + ~TaskQueue(); + + // Run all the tasks in the queue. New tasks pushed onto the queue during + // a run will be run next time |Run| is called. + virtual void Run(); + + // Push the specified task onto the queue. When the queue is run, the tasks + // will be run in the order they are pushed. + // + // This method takes ownership of |task| and will delete task after it is run + // (or when the TaskQueue is destroyed, if we never got a chance to run it). + void Push(Task* task); + + // Remove all tasks from the queue. The tasks are deleted. + void Clear(); + + // Returns true if this queue contains no tasks. + bool IsEmpty() const; + + private: + // The list of tasks we are waiting to run. + std::deque<Task*> queue_; +}; + +#endif // BASE_TASK_QUEUE_H_ |