<commit_before><?php
/**
 * StatusNet, the distributed open-source microblogging tool
 *
 * Abstract class for queue managers
 *
 * PHP version 5
 *
 * LICENCE: 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/>.
 *
 * @category  QueueManager
 * @package   StatusNet
 * @author    <NAME> <<EMAIL>>
 * @author    <NAME> <<EMAIL>>
 * @copyright 2009 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link      http://status.net/
 */

require_once 'Stomp.php';


class StompQueueManager extends QueueManager
{
    var $server = null;
    var $username = null;
    var $password = <PASSWORD>;
    var $base = null;
    var $con = null;
    
    protected $master = null;
    protected $sites = array();

    function __construct()
    {
        parent::__construct();
        $this->server   = common_config('queue', 'stomp_server');
        $this->username = common_config('queue', 'stomp_username');
        $this->password = common_config('queue', 'stomp_password');
        $this->base     = common_config('queue', 'queue_basename');
    }

    /**
     * Tell the i/o master we only need a single instance to cover
     * all sites running in this process.
     */
    public static function multiSite()
    {
        return IoManager::INSTANCE_PER_PROCESS;
    }

    /**
     * Record each site we'll be handling input for in this process,
     * so we can listen to the necessary queues for it.
     *
     * @fixme possibly actually do subscription here to save another
     *        loop over all sites later?
     */
    public function addSite($server)
    {
        $this->sites[] = $server;
    }

    /**
     * Saves a notice object reference into the queue item table.
     * @return boolean true on success<commit_msg>Keep handler registration per-site to fix queue registration in mixed config environment<commit_after><?php
/**
 * StatusNet, the distributed open-source microblogging tool
 *
 * Abstract class for queue managers
 *
 * PHP version 5
 *
 * LICENCE: 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/>.
 *
 * @category  QueueManager
 * @package   StatusNet
 * @author    <NAME> <<EMAIL>>
 * @author    <NAME> <<EMAIL>>
 * @copyright 2009 StatusNet, Inc.
 * @license   http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0
 * @link      http://status.net/
 */

require_once 'Stomp.php';


class StompQueueManager extends QueueManager
{
    var $server = null;
    var $username = null;
    var $password = <PASSWORD>;
    var $base = null;
    var $con = null;
    
    protected $master = null;
    protected $sites = array();

    function __construct()
    {
        parent::__construct();
        $this->server   = common_config('queue', 'stomp_server');
        $this->username = common_config('queue', 'stomp_username');
        $this->password = common_config('queue', 'stomp_password');
        $this->base     = common_config('queue', 'queue_basename');
    }

    /**
     * Tell the i/o master we only need a single instance to cover
     * all sites running in this process.
     */
    public static function multiSite()
    {
        return IoManager::INSTANCE_PER_PROCESS;
    }

    /**
     * Record each site we'll be handling input for in this process,
     * so we can listen to the necessary queues for it.
     *
     * @fixme possibly actually do subscription here to save another
     *        loop over all sites later?
     * @fixme possibly don't assume it's the current site
     */
    public function addSite($server)
    {
        $this->sites[] = $server;
        $this->initialize();
    }


    /**
     * Instantiate the appropriate QueueHandler class for the given queue.
     *
     * @param string $queue
     * @return mixed QueueHandler or null
     */
    function getHandler($queue)
    {
        $handlers = $this->handlers[common_config('site', 'server')];
        if (isset($handlers[$queue])) {
            $class = $handlers[$queue];
            if (class_exists($class)) {
                return new $class();
            } else {
                common_log(LOG_ERR, "Nonexistent handler class '$class' for queue '$queue'");
            }
        } else {
            common_log(LOG_ERR, "Requested handler for unkown queue '$queue'");
        }
        return null;
    }

    /**
     * Get a list of all registered queue transport names.
     *
     * @return array of strings
     */
    function getQueues()
    {
        return array_keys($this->handlers[common_config('site', 'server')]);
    }

    /**
     * Register a queue transport name and handler class for your plugin.
     * Only registered transports will be reliably picked up!
     *
     * @param string $transport
     * @param string $class
     */
    public function connect($transport, $class)
    {
        $this->handlers[common_config('site', 'server')][$transport] = $class;
    }

    /**
     * Saves a notice object reference into the queue item table.
     * @return boolean true on success
{'fraction_non_alphanumeric': 0.10222222222222223, 'fraction_numerical': 0.0031746031746031746, 'mean_word_length': 2.678342089900759, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 33, 'https://': 0, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4593692', 'n_tokens_mistral': 1750, 'n_tokens_neox': 1709, 'n_words': 647}