Class: Faye::Channel::Set

Inherits:
Object
  • Object
show all
Defined in:
lib/faye/protocol/channel.rb

Instance Method Summary collapse

Constructor Details

#initialize(parent = nil, value = nil) ⇒ Set

Returns a new instance of Set.



77
78
79
# File 'lib/faye/protocol/channel.rb', line 77

def initialize(parent = nil, value = nil)
  @channels = {}
end

Instance Method Details

#distribute_message(message) ⇒ Object



113
114
115
116
117
118
119
# File 'lib/faye/protocol/channel.rb', line 113

def distribute_message(message)
  channels = Channel.expand(message['channel'])
  channels.each do |name|
    channel = @channels[name]
    channel.trigger(:message, message['data']) if channel
  end
end

#has_subscription?(name) ⇒ Boolean

Returns:

  • (Boolean)


89
90
91
# File 'lib/faye/protocol/channel.rb', line 89

def has_subscription?(name)
  @channels.has_key?(name)
end

#keysObject



81
82
83
# File 'lib/faye/protocol/channel.rb', line 81

def keys
  @channels.keys
end

#remove(name) ⇒ Object



85
86
87
# File 'lib/faye/protocol/channel.rb', line 85

def remove(name)
  @channels.delete(name)
end

#subscribe(names, callback) ⇒ Object



93
94
95
96
97
98
99
# File 'lib/faye/protocol/channel.rb', line 93

def subscribe(names, callback)
  return unless callback
  names.each do |name|
    channel = @channels[name] ||= Channel.new(name)
    channel.bind(:message, &callback)
  end
end

#unsubscribe(name, callback) ⇒ Object



101
102
103
104
105
106
107
108
109
110
111
# File 'lib/faye/protocol/channel.rb', line 101

def unsubscribe(name, callback)
  channel = @channels[name]
  return false unless channel
  channel.unbind(:message, &callback)
  if channel.unused?
    remove(name)
    true
  else
    false
  end
end