]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/queuehandler.php
Merge branch '0.9.x' of git@gitorious.org:statusnet/mainline into 0.9.x
[quix0rs-gnu-social.git] / lib / queuehandler.php
index ddb47a28e947478a97a3ca988ffa81583459d787..8c65a97c668667b3ea05fe97a5f7d4fa91fe1ef2 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 /*
- * Laconica - a distributed open-source microblogging tool
- * Copyright (C) 2008, 2009, Control Yourself, Inc.
+ * StatusNet - the distributed open-source microblogging tool
+ * Copyright (C) 2008, 2009, StatusNet, Inc.
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as published by
@@ -17,7 +17,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-if (!defined('LACONICA')) { exit(1); }
+if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
 
 require_once(INSTALLDIR.'/lib/daemon.php');
 require_once(INSTALLDIR.'/classes/Queue_item.php');
@@ -25,11 +25,10 @@ require_once(INSTALLDIR.'/classes/Notice.php');
 
 define('CLAIM_TIMEOUT', 1200);
 define('QUEUE_HANDLER_MISS_IDLE', 10);
-define('QUEUE_HANDLER_HIT_IDLE', 10);
+define('QUEUE_HANDLER_HIT_IDLE', 0);
 
 class QueueHandler extends Daemon
 {
-    var $_id = 'generic';
 
     function __construct($id=null, $daemonize=true)
     {
@@ -42,7 +41,7 @@ class QueueHandler extends Daemon
 
     function timeout()
     {
-        return null;
+        return 60;
     }
 
     function class_name()
@@ -55,16 +54,6 @@ class QueueHandler extends Daemon
         return strtolower($this->class_name().'.'.$this->get_id());
     }
 
-    function get_id()
-    {
-        return $this->_id;
-    }
-
-    function set_id($id)
-    {
-        $this->_id = $id;
-    }
-
     function transport()
     {
         return null;
@@ -86,6 +75,7 @@ class QueueHandler extends Daemon
     function run()
     {
         if (!$this->start()) {
+            $this->log(LOG_WARNING, 'failed to start');
             return false;
         }
 
@@ -96,35 +86,17 @@ class QueueHandler extends Daemon
 
         $qm = QueueManager::get();
 
-        while (true) {
-            $this->log(LOG_DEBUG, 'Checking for notices...');
-            $notice = $qm->nextItem($queue, $timeout);
-            if (empty($notice)) {
-                $this->log(LOG_DEBUG, 'No notices waiting; idling.');
-                // Nothing in the queue. Do you
-                // have other tasks, like servicing your
-                // XMPP connection, to do?
-                $this->idle(QUEUE_HANDLER_MISS_IDLE);
-            } else {
-                $this->log(LOG_INFO, 'Got notice '. $notice->id);
-                // Yay! Got one!
-                if ($this->handle_notice($notice)) {
-                    $this->log(LOG_INFO, 'Successfully handled notice '. $notice->id);
-                    $qm->done($notice, $queue);
-                } else {
-                    $this->log(LOG_INFO, 'Failed to handle notice '. $notice->id);
-                    $qm->fail($notice, $queue);
-                }
-                // Chance to e.g. service your XMPP connection
-                $this->log(LOG_DEBUG, 'Idling after success.');
-                $this->idle(QUEUE_HANDLER_HIT_IDLE);
-            }
-            // XXX: when do we give up?
-        }
+        $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;
     }
 
@@ -139,5 +111,10 @@ class QueueHandler extends Daemon
     {
         common_log($level, $this->class_name() . ' ('. $this->get_id() .'): '.$msg);
     }
+
+    function getSockets()
+    {
+        return array();
+    }
 }