]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/dbqueuemanager.php
Force arrays in constructors of ActivityStreamJSONDocument and JSONActivityCollection
[quix0rs-gnu-social.git] / lib / dbqueuemanager.php
index 45c4b694d2e4848237bcae4563461fbb79ab55be..0fc7305c0afa8daf6721136ae7e273bd22e9ffc0 100644 (file)
@@ -72,7 +72,7 @@ class DBQueueManager extends QueueManager
     public function poll()
     {
         //$this->_log(LOG_DEBUG, 'Checking for notices...');
-        $qi = Queue_item::top($this->activeQueues());
+        $qi = Queue_item::top($this->activeQueues(), $this->getIgnoredTransports());
         if (!$qi instanceof Queue_item) {
             //$this->_log(LOG_DEBUG, 'No notices waiting; idling.');
             return false;
@@ -81,25 +81,37 @@ class DBQueueManager extends QueueManager
         try {
             $item = $this->decode($qi->frame);
         } catch (Exception $e) {
-            $this->_log(LOG_INFO, "[{$qi->transport}] Discarding: ".$e->getMessage());
+            $this->_log(LOG_INFO, "[{$qi->transport}] Discarding: "._ve($e->getMessage()));
             $this->_done($qi);
             return true;
         }
 
         $rep = $this->logrep($item);
-        $this->_log(LOG_DEBUG, "Got {$rep} for transport {$qi->transport}");
+        $this->_log(LOG_DEBUG, 'Got '._ve($rep).' for transport '._ve($qi->transport));
         
-        $handler = $this->getHandler($qi->transport);
-        if ($handler) {
-            if ($handler->handle($item)) {
-                $this->_log(LOG_INFO, "[{$qi->transport}:$rep] Successfully handled item");
-                $this->_done($qi);
-            } else {
-                $this->_log(LOG_INFO, "[{$qi->transport}:$rep] Failed to handle item");
-                $this->_fail($qi);
-            }
-        } else {
+        try {
+            $handler = $this->getHandler($qi->transport);
+            $result = $handler->handle($item);
+        } catch (NoQueueHandlerException $e) {
             $this->noHandlerFound($qi, $rep);
+            return true;
+        } catch (NoResultException $e) {
+            $this->_log(LOG_ERR, "[{$qi->transport}:$rep] ".get_class($e).' thrown ('._ve($e->getMessage()).'), ignoring queue_item '._ve($qi->getID()));
+            $result = true;
+        } catch (AlreadyFulfilledException $e) {
+            $this->_log(LOG_ERR, "[{$qi->transport}:$rep] ".get_class($e).' thrown ('._ve($e->getMessage()).'), ignoring queue_item '._ve($qi->getID()));
+            $result = true;
+        } catch (Exception $e) {
+            $this->_log(LOG_ERR, "[{$qi->transport}:$rep] Exception (".get_class($e).') thrown: '._ve($e->getMessage()));
+            $result = false;
+        }
+
+        if ($result) {
+            $this->_log(LOG_INFO, "[{$qi->transport}:$rep] Successfully handled item");
+            $this->_done($qi);
+        } else {
+            $this->_log(LOG_INFO, "[{$qi->transport}:$rep] Failed to handle item");
+            $this->_fail($qi);
         }
         return true;
     }