File: wisper.rb

package info (click to toggle)
ruby-wisper 3.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 276 kB
  • sloc: ruby: 1,231; makefile: 4
file content (65 lines) | stat: -rw-r--r-- 1,474 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
require 'set'
require 'wisper/version'
require 'wisper/configuration'
require 'wisper/publisher'
require 'wisper/value_objects/prefix'
require 'wisper/value_objects/events'
require 'wisper/registration/registration'
require 'wisper/registration/object'
require 'wisper/registration/block'
require 'wisper/global_listeners'
require 'wisper/temporary_listeners'
require 'wisper/broadcasters/send_broadcaster'
require 'wisper/broadcasters/logger_broadcaster'

module Wisper
  # Examples:
  #
  #   Wisper.subscribe(AuditRecorder.new)
  #
  #   Wisper.subscribe(AuditRecorder.new, StatsRecorder.new)
  #
  #   Wisper.subscribe(AuditRecorder.new, on: 'order_created')
  #
  #   Wisper.subscribe(AuditRecorder.new, scope: 'MyPublisher')
  #
  #   Wisper.subscribe(AuditRecorder.new, StatsRecorder.new) do
  #     # ..
  #   end
  #
  def self.subscribe(*args, **kwargs, &block)
    if block_given?
      TemporaryListeners.subscribe(*args, **kwargs, &block)
    else
      GlobalListeners.subscribe(*args, **kwargs)
    end
  end

  def self.unsubscribe(*listeners)
    GlobalListeners.unsubscribe(*listeners)
  end

  def self.publisher
    Publisher
  end

  def self.clear
    GlobalListeners.clear
  end

  def self.configure
    yield(configuration)
  end

  def self.configuration
    @configuration ||= Configuration.new
  end

  def self.setup
    configure do |config|
      config.broadcaster(:default, Broadcasters::SendBroadcaster.new)
    end
  end
end

Wisper.setup