class Faye::Subscription

def call(*args)

def call(*args)
  message = args.first
  @callback.call(message['data']) if @callback
  @with_channel.call(message['channel'], message['data']) if @with_channel
end

def cancel

def cancel
  return if @cancelled
  @client.unsubscribe(@channels, self)
  @cancelled = true
end

def initialize(client, channels, callback)

def initialize(client, channels, callback)
  @client    = client
  @channels  = channels
  @callback  = callback
  @cancelled = false
end

def to_proc

def to_proc
  @to_proc ||= lambda { |*a| call(*a) }
end

def unsubscribe

def unsubscribe
  cancel
end

def with_channel(&callback)

def with_channel(&callback)
  @with_channel = callback
  self
end