diff options
author | Evan Prodromou <evan@status.net> | 2010-01-25 18:13:09 -0500 |
---|---|---|
committer | Evan Prodromou <evan@status.net> | 2010-01-25 18:13:09 -0500 |
commit | 663e4e02a1b3b1c104c2c3db19e524a486c3d981 (patch) | |
tree | 048e2f67c10f74e3b510646f7b955d45baa49253 /lib/distribqueuehandler.php | |
parent | 1ab24832960eef698731cf0d3e72fccfa336392d (diff) | |
parent | e26a843caf9f6bb0d11a7128884db235ededcce0 (diff) |
Merge branch 'master' into testing
Conflicts:
lib/queuemanager.php
Diffstat (limited to 'lib/distribqueuehandler.php')
-rw-r--r-- | lib/distribqueuehandler.php | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/lib/distribqueuehandler.php b/lib/distribqueuehandler.php new file mode 100644 index 000000000..f458d238d --- /dev/null +++ b/lib/distribqueuehandler.php @@ -0,0 +1,84 @@ +<?php +/* + * 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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); } + +/** + * Base class for queue handlers. + * + * As extensions of the Daemon class, each queue handler has the ability + * to launch itself in the background, at which point it'll pass control + * to the configured QueueManager class to poll for updates. + * + * Subclasses must override at least the following methods: + * - transport + * - handle_notice + */ + +class DistribQueueHandler +{ + /** + * Return transport keyword which identifies items this queue handler + * services; must be defined for all subclasses. + * + * Must be 8 characters or less to fit in the queue_item database. + * ex "email", "jabber", "sms", "irc", ... + * + * @return string + */ + + function transport() + { + return 'distrib'; + } + + /** + * Here's the meat of your queue handler -- you're handed a Notice + * 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 Notice $notice + * @return boolean true on success, false on failure + */ + function handle($notice) + { + // XXX: do we need to change this for remote users? + + $notice->saveTags(); + + $groups = $notice->saveGroups(); + + $recipients = $notice->saveReplies(); + + $notice->addToInboxes($groups, $recipients); + + $notice->saveUrls(); + + Event::handle('EndNoticeSave', array($notice)); + + // Enqueue for other handlers + + common_enqueue_notice($notice); + + return true; + } +} + |