Sha256: 577cbba00cc12806c953507190da35c3c57896e797896e2e30f2e76641cfe8fe

Contents?: true

Size: 1.3 KB

Versions: 45

Compression:

Stored size: 1.3 KB

Contents

require 'ably/modules/event_emitter.rb'

module Ably::Util
  # PubSub class provides methods to publish & subscribe to events, with methods and naming
  # intentionally different to EventEmitter as it is intended for private message handling
  # within the client library.
  #
  # @example
  #   class Channel
  #     def messages
  #       @messages ||= PubSub.new
  #     end
  #   end
  #
  #   channel = Channel.new
  #   channel.messages.subscribe(:event) { |name| puts "Event message #{name} received" }
  #   channel.messages.publish :event, "Test"
  #   #=> "Event message Test received"
  #   channel.messages.remove :event
  #
  class PubSub
    include Ably::Modules::EventEmitter

    # Ensure new PubSub object does not share class instance variables
    def self.new(options = {})
      Class.new(PubSub).allocate.tap do |pub_sub_object|
        pub_sub_object.send(:initialize, options)
      end
    end

    def inspect
      "<#PubSub: @event_emitter_coerce_proc: #{self.class.event_emitter_coerce_proc.inspect}\n @callbacks: #{callbacks}>"
    end

    def initialize(options = {})
      self.class.instance_eval do
        configure_event_emitter options

        alias_method :subscribe, :unsafe_on
        alias_method :publish, :emit
        alias_method :unsubscribe, :unsafe_off
      end
    end
  end
end

Version data entries

45 entries across 45 versions & 2 rubygems

Version Path
ably-rest-1.2.7 lib/submodules/ably-ruby/lib/ably/util/pub_sub.rb
ably-1.2.7 lib/ably/util/pub_sub.rb
ably-rest-1.2.6 lib/submodules/ably-ruby/lib/ably/util/pub_sub.rb
ably-1.2.6 lib/ably/util/pub_sub.rb
ably-rest-1.2.4 lib/submodules/ably-ruby/lib/ably/util/pub_sub.rb
ably-1.2.4 lib/ably/util/pub_sub.rb
ably-rest-1.2.3 lib/submodules/ably-ruby/lib/ably/util/pub_sub.rb
ably-1.2.3 lib/ably/util/pub_sub.rb
ably-rest-1.2.2 lib/submodules/ably-ruby/lib/ably/util/pub_sub.rb
ably-1.2.2 lib/ably/util/pub_sub.rb
ably-rest-1.2.1 lib/submodules/ably-ruby/lib/ably/util/pub_sub.rb
ably-1.2.1 lib/ably/util/pub_sub.rb
ably-rest-1.2.0 lib/submodules/ably-ruby/lib/ably/util/pub_sub.rb
ably-1.2.0 lib/ably/util/pub_sub.rb
ably-rest-1.1.8 lib/submodules/ably-ruby/lib/ably/util/pub_sub.rb
ably-1.1.8 lib/ably/util/pub_sub.rb
ably-rest-1.1.7 lib/submodules/ably-ruby/lib/ably/util/pub_sub.rb
ably-1.1.7 lib/ably/util/pub_sub.rb
ably-rest-1.1.6 lib/submodules/ably-ruby/lib/ably/util/pub_sub.rb
ably-1.1.6 lib/ably/util/pub_sub.rb