Sha256: aa41fe19817df44f6a7932eb0bb886c66e025590c0e09b1d952aaf41a2f3dd67

Contents?: true

Size: 1.38 KB

Versions: 9

Compression:

Stored size: 1.38 KB

Contents

module PusherClient

  class Channel
    attr_accessor :global, :subscribed
    attr_reader :name, :callbacks, :global_callbacks

    def initialize(channel_name)
      @name = channel_name
      @global = false
      @callbacks = {}
      @global_callbacks = {}
      @subscribed = false
    end

    def bind(event_name, &callback)
      @callbacks[event_name] = callbacks[event_name] || []
      @callbacks[event_name] << callback
      return self
    end

    def dispatch_with_all(event_name, data)
      dispatch(event_name, data)
      dispatch_global_callbacks(event_name, data)
    end

    def dispatch(event_name, data)
      PusherClient.logger.debug "Dispatching callbacks for #{event_name}"
      if @callbacks[event_name]
        @callbacks[event_name].each do |callback|
          callback.call(data)
        end
      else
        PusherClient.logger.debug "No callbacks to dispatch for #{event_name}"
      end
    end

    def dispatch_global_callbacks(event_name, data)
      if @global_callbacks[event_name]
        PusherClient.logger.debug "Dispatching global callbacks for #{event_name}"
        @global_callbacks[event_name].each do |callback|
          callback.call(data)
        end
      else
        PusherClient.logger.debug "No global callbacks to dispatch for #{event_name}"
      end
    end

    def acknowledge_subscription(data)
      @subscribed = true
    end

  end

end

Version data entries

9 entries across 9 versions & 2 rubygems

Version Path
pusher-client-0.4.0 lib/pusher-client/channel.rb
pusher-client-0.3.1 lib/pusher-client/channel.rb
pusher-client-0.3.0 lib/pusher-client/channel.rb
pusher-client-0.2.2 lib/pusher-client/channel.rb
pusher-client-merman-0.2.1 lib/pusher-client/channel.rb
pusher-client-0.2.1 lib/pusher-client/channel.rb
pusher-client-0.2.0 lib/pusher-client/channel.rb
pusher-client-0.1.1 lib/pusher-client/channel.rb
pusher-client-0.1.0 lib/pusher-client/channel.rb