]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Merge branch '0.9.x' into 1.0.x
authorCraig Andrews <candrews@integralblue.com>
Thu, 28 Jan 2010 03:07:04 +0000 (22:07 -0500)
committerCraig Andrews <candrews@integralblue.com>
Thu, 28 Jan 2010 03:07:04 +0000 (22:07 -0500)
Conflicts:
lib/queuemanager.php

1  2 
actions/showstream.php
lib/queuemanager.php
scripts/imdaemon.php

diff --combined actions/showstream.php
index b9782a3f14745571f99ed13f1da45ff110984caa,90ff67073a1bd7d120cbcae560b010e9031d12bc..cb9ade19133c959264ab8bb66749564af5566026
@@@ -76,7 -76,7 +76,7 @@@ class ShowstreamAction extends ProfileA
          if ($this->page == 1) {
              return $base;
          } else {
-             return sprintf(_("%1$s, page %2$d"),
+             return sprintf(_('%1$s, page %2$d'),
                             $base,
                             $this->page);
          }
              $this->element('meta', array('name' => 'microid',
                                           'content' => $id->toString()));
          }
 -        if ($this->user->jabbermicroid && $this->user->jabber && $this->profile->profileurl) {
 -            $id = new Microid('xmpp:'.$this->user->jabber,
 -                              $this->selfUrl());
 -            $this->element('meta', array('name' => 'microid',
 -                                         'content' => $id->toString()));
 -        }
  
          // See https://wiki.mozilla.org/Microsummaries
  
diff --combined lib/queuemanager.php
index 0b405943d3405419f3ffc14faab124e07e38cae9,274e1c2f695604853e87a4cd94d89569991db956..a0b13fe556f6a93596c91580084ab9352080d1dc
@@@ -100,6 -100,23 +100,23 @@@ abstract class QueueManager extends IoM
          $this->initialize();
      }
  
+     /**
+      * Optional; ping any running queue handler daemons with a notification
+      * such as announcing a new site to handle or requesting clean shutdown.
+      * This avoids having to restart all the daemons manually to update configs
+      * and such.
+      *
+      * Called from scripts/queuectl.php controller utility.
+      *
+      * @param string $event event key
+      * @param string $param optional parameter to append to key
+      * @return boolean success
+      */
+     public function sendControlSignal($event, $param='')
+     {
+         throw new Exception(get_class($this) . " does not support control signals.");
+     }
      /**
       * Store an object (usually/always a Notice) into the given queue
       * for later processing. No guarantee is made on when it will be
  
      /**
       * Encode an object for queued storage.
 -     * Next gen may use serialization.
       *
       * @param mixed $object
       * @return string
       */
      protected function encode($object)
      {
 -        if ($object instanceof Notice) {
 -            return $object->id;
 -        } else if (is_string($object)) {
 -            return $object;
 -        } else {
 -            throw new ServerException("Can't queue this type", 500);
 -        }
 +        return serialize($object);
      }
  
      /**
       */
      protected function decode($frame)
      {
 -        if (is_numeric($frame)) {
 -            return Notice::staticGet(intval($frame));
 -        } else {
 -            return $frame;
 -        }
 +        return unserialize($frame);
      }
  
      /**
                  $this->connect('sms', 'SmsQueueHandler');
              }
  
 -            // XMPP output handlers...
 -            $this->connect('jabber', 'JabberQueueHandler');
 -            $this->connect('public', 'PublicQueueHandler');
 -            // @fixme this should get an actual queue
 -            //$this->connect('confirm', 'XmppConfirmHandler');
 -
              // For compat with old plugins not registering their own handlers.
              $this->connect('plugin', 'PluginQueueHandler');
 -
 -            $this->connect('xmppout', 'XmppOutQueueHandler', 'xmppdaemon');
 -
          }
          Event::handle('EndInitializeQueueManager', array($this));
      }
          $group = 'queuedaemon';
          if ($this->master) {
              // hack hack
 -            if ($this->master instanceof XmppMaster) {
 -                return 'xmppdaemon';
 +            if ($this->master instanceof ImMaster) {
 +                return 'imdaemon';
              }
          }
          return $group;
diff --combined scripts/imdaemon.php
index c37a26b7c05cb821390f6fa874d5ee8a226cc1cd,0000000000000000000000000000000000000000..ffb5ecf0d945fd98b3613bd920928b14836937b0
mode 100755,000000..100755
--- /dev/null
@@@ -1,93 -1,0 +1,93 @@@
-         return true;
 +#!/usr/bin/env php
 +<?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/>.
 + */
 +
 +define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
 +
 +$shortoptions = 'fi::';
 +$longoptions = array('id::', 'foreground');
 +
 +$helptext = <<<END_OF_IM_HELP
 +Daemon script for receiving new notices from IM users.
 +
 +    -i --id           Identity (default none)
 +    -f --foreground   Stay in the foreground (default background)
 +
 +END_OF_IM_HELP;
 +
 +require_once INSTALLDIR.'/scripts/commandline.inc';
 +
 +class ImDaemon extends SpawningDaemon
 +{
 +    function __construct($id=null, $daemonize=true, $threads=1)
 +    {
 +        if ($threads != 1) {
 +            // This should never happen. :)
 +            throw new Exception("IMDaemon can must run single-threaded");
 +        }
 +        parent::__construct($id, $daemonize, $threads);
 +    }
 +
 +    function runThread()
 +    {
 +        common_log(LOG_INFO, 'Waiting to listen to IM connections and queues');
 +
 +        $master = new ImMaster($this->get_id());
 +        $master->init();
 +        $master->service();
 +
 +        common_log(LOG_INFO, 'terminating normally');
 +
++        return $master->respawn ? self::EXIT_RESTART : self::EXIT_SHUTDOWN;
 +    }
 +
 +}
 +
 +class ImMaster extends IoMaster
 +{
 +    /**
 +     * Initialize IoManagers for the currently configured site
 +     * which are appropriate to this instance.
 +     */
 +    function initManagers()
 +    {
 +        $classes = array();
 +        if (Event::handle('StartImDaemonIoManagers', array(&$classes))) {
 +            $classes[] = 'QueueManager';
 +        }
 +        Event::handle('EndImDaemonIoManagers', array(&$classes));
 +        foreach ($classes as $class) {
 +            $this->instantiate($class);
 +        }
 +    }
 +}
 +
 +if (have_option('i', 'id')) {
 +    $id = get_option_value('i', 'id');
 +} else if (count($args) > 0) {
 +    $id = $args[0];
 +} else {
 +    $id = null;
 +}
 +
 +$foreground = have_option('f', 'foreground');
 +
 +$daemon = new ImDaemon($id, !$foreground);
 +
 +$daemon->runOnce();