Sha256: 6cfdcf537dfa71de703f7f76616f600f1c7bc1bff330ff255c54ce7e84f5cdea

Contents?: true

Size: 714 Bytes

Versions: 8

Compression:

Stored size: 714 Bytes

Contents

module Asynchronic
  module Notifier
    class InMemory

      def publish(pid, event, data=nil)
        subscriptions[DataStore::Key[pid][event]].each_value do |block|
          block.call data
        end
      end

      def subscribe(pid, event, &block)
        SecureRandom.uuid.tap do |subscription_id|
          subscriptions[DataStore::Key[pid][event]][subscription_id] = block
        end
      end

      def unsubscribe(subscription_id)
        subscriptions.each_value { |s| s.delete subscription_id }
      end

      def unsubscribe_all
        subscriptions.clear
      end

      private

      def subscriptions
        @subscriptions ||= Hash.new { |h,k| h[k] = {} }
      end

    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
asynchronic-4.0.3 lib/asynchronic/notifier/in_memory.rb
asynchronic-4.0.2 lib/asynchronic/notifier/in_memory.rb
asynchronic-4.0.1 lib/asynchronic/notifier/in_memory.rb
asynchronic-4.0.0 lib/asynchronic/notifier/in_memory.rb
asynchronic-3.0.3 lib/asynchronic/notifier/in_memory.rb
asynchronic-3.0.2 lib/asynchronic/notifier/in_memory.rb
asynchronic-3.0.1 lib/asynchronic/notifier/in_memory.rb
asynchronic-3.0.0 lib/asynchronic/notifier/in_memory.rb