Sha256: 0d5dfa9b68ba685d672c0522c6e057f8d573d1360eb4a86d538a15ca1d1e6083

Contents?: true

Size: 729 Bytes

Versions: 8

Compression:

Stored size: 729 Bytes

Contents

module Faye
  class Subscription
    include Deferrable

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

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

    def call(*args)
      message = args.first

      @callback.call(message['data']) if @callback
      @with_channel.call(message['channel'], message['data']) if @with_channel
    end

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

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

    def unsubscribe
      cancel
    end

  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
faye-1.4.0 lib/faye/protocol/subscription.rb
faye-1.3.0 lib/faye/protocol/subscription.rb
faye-1.2.5 lib/faye/protocol/subscription.rb
faye-1.2.4 lib/faye/protocol/subscription.rb
faye-1.2.3 lib/faye/protocol/subscription.rb
faye-1.2.2 lib/faye/protocol/subscription.rb
faye-1.2.1 lib/faye/protocol/subscription.rb
faye-1.2.0 lib/faye/protocol/subscription.rb