StompQueuePlugin.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. // This file is part of GNU social - https://www.gnu.org/software/social
  3. //
  4. // GNU social is free software: you can redistribute it and/or modify
  5. // it under the terms of the GNU Affero General Public License as published by
  6. // the Free Software Foundation, either version 3 of the License, or
  7. // (at your option) any later version.
  8. //
  9. // GNU social is distributed in the hope that it will be useful,
  10. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. // GNU Affero General Public License for more details.
  13. //
  14. // You should have received a copy of the GNU Affero General Public License
  15. // along with GNU social. If not, see <http://www.gnu.org/licenses/>.
  16. /**
  17. * STOMP interface for GNU social queues
  18. *
  19. * @package GNUsocial
  20. * @author Miguel Dantas <biodantasgs@gmail.com>
  21. * @copyright 2019 Free Software Foundation, Inc http://www.fsf.org
  22. * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later
  23. */
  24. defined('GNUSOCIAL') || die();
  25. class StompQueuePlugin extends Plugin
  26. {
  27. const PLUGIN_VERSION = '0.1.0';
  28. // settings which can be set in config.php with addPlugin('StompQueue', ['param'=>'value', ...]);
  29. public $servers = null;
  30. public $vhost = '';
  31. public $username = 'guest';
  32. public $password = 'guest';
  33. public $basename = '';
  34. public $control = 'gnusocial:control';
  35. public $breakout = [];
  36. public $useTransactions = false;
  37. public $useAcks = false;
  38. public $manualFailover = false;
  39. public $defaultIdx = 0;
  40. public $persistent = [];
  41. public function onStartNewQueueManager(?QueueManager &$qm)
  42. {
  43. if (empty($this->servers)) {
  44. throw new ServerException('Invalid STOMP server address');
  45. } elseif (!is_array($this->servers)) {
  46. $this->servers = [$this->servers];
  47. }
  48. if (empty($this->basename)) {
  49. $this->basename = 'queue:gnusocial-' . common_config('site', 'name') . ':';
  50. }
  51. $qm = new StompQueueManager($this);
  52. return false;
  53. }
  54. public function onPluginVersion(array &$versions): bool
  55. {
  56. $versions[] = [
  57. 'name' => 'StompQueue',
  58. 'version' => self::PLUGIN_VERSION,
  59. 'author' => 'Miguel Dantas',
  60. 'homepage' => GNUSOCIAL_ENGINE_URL,
  61. 'description' =>
  62. // TRANS: Plugin description.
  63. _m('Plugin implementing STOMP as a backend for GNU social queues')
  64. ];
  65. return true;
  66. }
  67. };