initial queue stub files and basic request-only storage/request shutdown task runner
authorChuck Hagenbuch <chuck@horde.org>
Mon, 16 Mar 2009 14:37:43 +0000 (10:37 -0400)
committerChuck Hagenbuch <chuck@horde.org>
Mon, 16 Mar 2009 14:37:43 +0000 (10:37 -0400)
framework/Queue/lib/Horde/Queue/Runner.php [deleted file]
framework/Queue/lib/Horde/Queue/Runner/Base.php [new file with mode: 0644]
framework/Queue/lib/Horde/Queue/Runner/RequestShutdown.php [new file with mode: 0644]
framework/Queue/lib/Horde/Queue/Storage/Base.php
framework/Queue/lib/Horde/Queue/Storage/RequestOnly.php [new file with mode: 0644]
framework/Queue/lib/Horde/Queue/Task.php [deleted file]
framework/Queue/lib/Horde/Queue/Task/Base.php [new file with mode: 0644]
framework/Queue/package.xml [new file with mode: 0644]

diff --git a/framework/Queue/lib/Horde/Queue/Runner.php b/framework/Queue/lib/Horde/Queue/Runner.php
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/framework/Queue/lib/Horde/Queue/Runner/Base.php b/framework/Queue/lib/Horde/Queue/Runner/Base.php
new file mode 100644 (file)
index 0000000..864b3c4
--- /dev/null
@@ -0,0 +1,11 @@
+<?php
+class Horde_Queue_Runner_Base
+{
+    protected $_storage;
+
+    public function __construct($storage)
+    {
+        $this->_storage = $storage;
+    }
+
+}
diff --git a/framework/Queue/lib/Horde/Queue/Runner/RequestShutdown.php b/framework/Queue/lib/Horde/Queue/Runner/RequestShutdown.php
new file mode 100644 (file)
index 0000000..4ab7417
--- /dev/null
@@ -0,0 +1,11 @@
+<?php
+class Horde_Queue_Runner_RequestShutdown extends Horde_Queue_Runner_Base
+{
+    public function __destruct()
+    {
+        foreach ($this->_storage->getMany() as $task) {
+            $task->run();
+        }
+    }
+
+}
\ No newline at end of file
diff --git a/framework/Queue/lib/Horde/Queue/Storage/RequestOnly.php b/framework/Queue/lib/Horde/Queue/Storage/RequestOnly.php
new file mode 100644 (file)
index 0000000..72d1a20
--- /dev/null
@@ -0,0 +1,19 @@
+<?php
+/**
+ * Stores queue tasks in the current request. No persistence.
+ */
+class Horde_Queue_Storage_RequestOnly extends Horde_Queue_Storage_Base
+{
+    protected $_tasks = array();
+
+    public function add($task)
+    {
+        $this->_tasks[] = $task;
+    }
+
+    public function getMany($num = 50)
+    {
+        return array_splice($this->_tasks, 0, $num);
+    }
+
+}
diff --git a/framework/Queue/lib/Horde/Queue/Task.php b/framework/Queue/lib/Horde/Queue/Task.php
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/framework/Queue/lib/Horde/Queue/Task/Base.php b/framework/Queue/lib/Horde/Queue/Task/Base.php
new file mode 100644 (file)
index 0000000..cb44870
--- /dev/null
@@ -0,0 +1,6 @@
+<?php
+abstract class Horde_Queue_Task_Base
+{
+    abstract public function run();
+
+}
diff --git a/framework/Queue/package.xml b/framework/Queue/package.xml
new file mode 100644 (file)
index 0000000..046f1ed
--- /dev/null
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<package packagerversion="1.4.9" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
+http://pear.php.net/dtd/tasks-1.0.xsd
+http://pear.php.net/dtd/package-2.0
+http://pear.php.net/dtd/package-2.0.xsd">
+ <name>Queue</name>
+ <channel>pear.horde.org</channel>
+ <summary>Horde Queue</summary>
+ <description>Queue layer with various storage backends and runners
+ </description>
+ <lead>
+  <name>Chuck Hagenbuch</name>
+  <user>chuck</user>
+  <email>chuck@horde.org</email>
+  <active>yes</active>
+ </lead>
+ <date>2009-03-15</date>
+ <time>21:00:00</time>
+ <version>
+  <release>0.1.0</release>
+  <api>0.1.0</api>
+ </version>
+ <stability>
+  <release>alpha</release>
+  <api>alpha</api>
+ </stability>
+ <license uri="http://www.gnu.org/copyleft/lesser.html">LGPL</license>
+ <notes>Initial Horde_Queue implementation
+ </notes>
+ <contents>
+  <dir name="/">
+   <dir name="lib">
+    <dir name="Horde">
+     <dir name="Queue">
+      <dir name="Runner">
+       <file name="Base.php" role="php" />
+       <file name="RequestShutdown.php" role="php" />
+      </dir> <!-- /lib/Horde/Queue/Runner -->
+      <dir name="Storage">
+       <file name="Base.php" role="php" />
+       <file name="RequestOnly.php" role="php" />
+      </dir> <!-- /lib/Horde/Queue/Storage -->
+      <dir name="Task">
+       <file name="Base.php" role="php" />
+      </dir> <!-- /lib/Horde/Queue/Task -->
+     </dir> <!-- /lib/Horde/Queue -->
+    </dir> <!-- /lib/Horde -->
+   </dir> <!-- /lib -->
+  </dir> <!-- / -->
+ </contents>
+ <dependencies>
+  <required>
+   <php>
+    <min>5.2.0</min>
+   </php>
+   <pearinstaller>
+    <min>1.7.0</min>
+   </pearinstaller>
+  </required>
+ </dependencies>
+ <phprelease>
+  <filelist>
+   <install name="lib/Horde/Queue/Runner/Base.php" as="Horde/Queue/Runner/Base.php" />
+   <install name="lib/Horde/Queue/Runner/RequestShutdown.php" as="Horde/Queue/Runner/RequestShutdown.php" />
+   <install name="lib/Horde/Queue/Storage/Base.php" as="Horde/Queue/Storage/Base.php" />
+   <install name="lib/Horde/Queue/Storage/RequestOnly.php" as="Horde/Queue/Storage/RequestOnly.php" />
+   <install name="lib/Horde/Queue/Task/Base.php" as="Horde/Queue/Task/Base.php" />
+  </filelist>
+ </phprelease>
+</package>