Class: Actor::Messaging::Publish

Inherits:
Object
  • Object
show all
Includes:
Send::Dependency
Defined in:
lib/actor/messaging/publish.rb,
lib/actor/messaging/publish/assertions.rb,
lib/actor/messaging/publish/dependency.rb,
lib/actor/messaging/publish/substitute.rb

Defined Under Namespace

Modules: Assertions, Dependency Classes: Substitute

Instance Attribute Summary collapse

Attributes included from Send::Dependency

#send

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializePublish

Returns a new instance of Publish.



8
9
10
# File 'lib/actor/messaging/publish.rb', line 8

def initialize
  @addresses = Set.new
end

Instance Attribute Details

#addressesObject (readonly)

Returns the value of attribute addresses.



6
7
8
# File 'lib/actor/messaging/publish.rb', line 6

def addresses
  @addresses
end

Class Method Details

.build(*addresses) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/actor/messaging/publish.rb', line 12

def self.build *addresses
  instance = new

  addresses.each do |address|
    instance.register address
  end

  instance.send = Send.new

  instance
end

Instance Method Details

#call(message, wait: nil) ⇒ Object



32
33
34
35
36
# File 'lib/actor/messaging/publish.rb', line 32

def call message, wait: nil
  addresses.each do |address|
    send.(message, address, wait: wait)
  end
end

#register(address) ⇒ Object



24
25
26
# File 'lib/actor/messaging/publish.rb', line 24

def register address
  addresses << address
end

#unregister(address) ⇒ Object



28
29
30
# File 'lib/actor/messaging/publish.rb', line 28

def unregister address
  addresses.delete address
end