Module: Fargo::Publisher

Included in:
Client, Connection::Base, Server
Defined in:
lib/fargo/publisher.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#subscribersObject (readonly)

Returns the value of attribute subscribers.



4
5
6
# File 'lib/fargo/publisher.rb', line 4

def subscribers
  @subscribers
end

Instance Method Details

#publish(message_type, hash = {}) ⇒ Object



22
23
24
# File 'lib/fargo/publisher.rb', line 22

def publish message_type, hash = {}
  @subscribers.each { |subscriber| subscriber.call message_type, hash } if @subscribers
end

#subscribe(&subscriber) ⇒ Object

Raises:

  • (RuntimeError)


6
7
8
9
10
# File 'lib/fargo/publisher.rb', line 6

def subscribe &subscriber
  raise RuntimeError.new("Need a subscription block!") if subscriber.nil?
  Fargo.logger.debug "#{self}: subscribing #{subscriber}"
  (@subscribers ||= []) << subscriber
end

#subscribed_to?Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/fargo/publisher.rb', line 12

def subscribed_to?
  @subscribers && @subscribers.size > 0
end

#unsubscribe(&subscriber) ⇒ Object

Raises:

  • (RuntimeError)


16
17
18
19
20
# File 'lib/fargo/publisher.rb', line 16

def unsubscribe &subscriber
  raise RuntimeError.new("Need a subscription block!") if subscriber.nil?
  Fargo.logger.debug "#{self}: unsubscribing #{subscriber}"
  (@subscribers ||= []).delete subscriber
end