Sha256: 1111b8d1d9d051568c248b5fed4e6fa54edfebab0c4891cdf9163e4e971b3cba

Contents?: true

Size: 837 Bytes

Versions: 1

Compression:

Stored size: 837 Bytes

Contents

require 'set'

module Nuge
  class Pusher
    def self.clients=(clients)
      @clients = Set.new(clients)
    end

    def self.clients
      @clients ||= Set.new
    end

    attr_reader :clients
    attr_writer :expander

    def initialize(clients = nil)
      @clients = Set.new(clients || self.class.clients)
    end

    def push(ids, message)
      clients.each { |client| client.push(expanded(ids), message) }
    end

    def register(id, options = {})
      clients.each { |client| client.register(expanded(id).first, options) }
    end

    def unregister(id, options = {})
      clients.each { |client| client.unregister(expanded(id).first, options) }
    end

    def expander
      @expander ||= -> (obj) { obj }
    end

    def expanded(*objects)
      objects.flatten.map { |obj| expander.call(obj) }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nuge-0.1.0 lib/nuge/pusher.rb