]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/queuehandler.php
Merge branch '0.9.x' into 1.0.x
[quix0rs-gnu-social.git] / lib / queuehandler.php
index 8c65a97c668667b3ea05fe97a5f7d4fa91fe1ef2..2194dd1618b088a5796f6e4664c4053974c30060 100644 (file)
 
 if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
 
-require_once(INSTALLDIR.'/lib/daemon.php');
-require_once(INSTALLDIR.'/classes/Queue_item.php');
-require_once(INSTALLDIR.'/classes/Notice.php');
-
-define('CLAIM_TIMEOUT', 1200);
-define('QUEUE_HANDLER_MISS_IDLE', 10);
-define('QUEUE_HANDLER_HIT_IDLE', 0);
-
-class QueueHandler extends Daemon
+/**
+ * Base class for queue handlers.
+ *
+ * As of 0.9, queue handlers are short-lived for items as they are
+ * dequeued by a QueueManager running in an IoMaster in a daemon
+ * such as queuedaemon.php.
+ *
+ * Extensions requiring long-running maintenance or polling should
+ * register an IoManager.
+ *
+ * Subclasses must override at least the following methods:
+ * - transport
+ * - handle
+ */
+class QueueHandler
 {
 
-    function __construct($id=null, $daemonize=true)
-    {
-        parent::__construct($daemonize);
-
-        if ($id) {
-            $this->set_id($id);
-        }
-    }
-
-    function timeout()
-    {
-        return 60;
-    }
-
-    function class_name()
-    {
-        return ucfirst($this->transport()) . 'Handler';
-    }
-
-    function name()
-    {
-        return strtolower($this->class_name().'.'.$this->get_id());
-    }
-
-    function transport()
-    {
-        return null;
-    }
-
-    function start()
-    {
-    }
-
-    function finish()
+    /**
+     * Here's the meat of your queue handler -- you're handed a Notice
+     * or other object, which you may do as you will with.
+     *
+     * If this function indicates failure, a warning will be logged
+     * and the item is placed back in the queue to be re-run.
+     *
+     * @param mixed $object
+     * @return boolean true on success, false on failure
+     */
+    function handle($object)
     {
-    }
-
-    function handle_notice($notice)
-    {
-        return true;
-    }
-
-    function run()
-    {
-        if (!$this->start()) {
-            $this->log(LOG_WARNING, 'failed to start');
-            return false;
-        }
-
-        $this->log(LOG_INFO, 'checking for queued notices');
-
-        $queue   = $this->transport();
-        $timeout = $this->timeout();
-
-        $qm = QueueManager::get();
-
-        $qm->service($queue, $this);
-
-        $this->log(LOG_INFO, 'finished servicing the queue');
-
-        if (!$this->finish()) {
-            $this->log(LOG_WARNING, 'failed to clean up');
-            return false;
-        }
-
-        $this->log(LOG_INFO, 'terminating normally');
-
         return true;
     }
-
-    function idle($timeout=0)
-    {
-        if ($timeout > 0) {
-            sleep($timeout);
-        }
-    }
-
-    function log($level, $msg)
-    {
-        common_log($level, $this->class_name() . ' ('. $this->get_id() .'): '.$msg);
-    }
-
-    function getSockets()
-    {
-        return array();
-    }
 }