aboutsummaryrefslogblamecommitdiffstats
path: root/lib/assets/javascripts/cable/subscriber_manager.js.coffee
blob: 4f46efe817af5ba9290cd49b19cad997306e289a (plain) (tree)

























                                                    
class Cable.SubscriberManager
  constructor: (@cable) ->
    @subscribers = {}

  add: (identifier, subscriber) ->
    @subscribers[identifier] = subscriber
    if @cable.sendCommand(identifier, "subscribe")
      @notify(identifier, "onConnect")

  reload: ->
    for identifier in Object.keys(@subscribers)
      if @cable.sendCommand(identifier, "subscribe")
        @notify(identifier, "onConnect")

  remove: (identifier) ->
    if subscriber = @subscribers[identifier]
      @cable.sendCommand(identifier, "unsubscribe")
      delete @subscribers[identifier]

  notifyAll: (event, args...) ->
    for identifier in Object.keys(@subscribers)
      @notify(identifier, event, args...)

  notify: (identifier, event, args...) ->
    if subscriber = @subscribers[identifier]
      subscriber[event]?(args...)