Module: Faye::Publisher

Included in:
Channel, WebSocket
Defined in:
lib/faye/mixins/publisher.rb

Instance Method Summary collapse

Instance Method Details

#add_subscriber(event_type, listener) ⇒ Object



9
10
11
12
13
# File 'lib/faye/mixins/publisher.rb', line 9

def add_subscriber(event_type, listener)
  @subscribers ||= {}
  list = @subscribers[event_type] ||= []
  list << listener
end

#count_subscribers(event_type) ⇒ Object



4
5
6
7
# File 'lib/faye/mixins/publisher.rb', line 4

def count_subscribers(event_type)
  return 0 unless @subscribers and @subscribers[event_type]
  @subscribers[event_type].size
end

#publish_event(event_type, *args) ⇒ Object



26
27
28
29
30
31
# File 'lib/faye/mixins/publisher.rb', line 26

def publish_event(event_type, *args)
  return unless @subscribers and @subscribers[event_type]
  @subscribers[event_type].each do |listener|
    listener.call(*args)
  end
end

#remove_subscriber(event_type, listener) ⇒ Object



15
16
17
18
19
20
# File 'lib/faye/mixins/publisher.rb', line 15

def remove_subscriber(event_type, listener)
  return unless @subscribers and @subscribers[event_type]
  return @subscribers.delete(event_type) unless listener
  
  @subscribers[event_type].delete_if(&listener.method(:==))
end

#remove_subscribersObject



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

def remove_subscribers
  @subscribers = {}
end