summaryrefslogtreecommitdiffstats
path: root/base/task_queue.h
diff options
context:
space:
mode:
authorlevin@chromium.org <levin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-26 06:09:38 +0000
committerlevin@chromium.org <levin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-26 06:09:38 +0000
commit6fd0ca52fbb5d33e3355c0ebe8fe81219be90de0 (patch)
tree6a24baf9874440f81fde368ab964ffc0d912c2d5 /base/task_queue.h
parentb924ae04055aa82cd19ef522b690e3cd66352c11 (diff)
downloadchromium_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.h43
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_