class MessageDriver::Adapters::InMemoryAdapter

Public Class Methods

new(broker, _config = {}) click to toggle source
# File lib/message_driver/adapters/in_memory_adapter.rb, line 88
def initialize(broker, _config = {})
  @broker = broker
  @destinations = {}
  begin
    require 'thread_safe'
    @message_store = ThreadSafe::Cache.new { |h, k| h[k] = [] }
    @subscriptions = ThreadSafe::Cache.new { |h, k| h[k] = [] }
  rescue LoadError
    @message_store = Hash.new { |h, k| h[k] = [] }
    @subscriptions = Hash.new { |h, k| h[k] = [] }
  end
end

Public Instance Methods

add_subscription_for(name, subscription) click to toggle source
# File lib/message_driver/adapters/in_memory_adapter.rb, line 169
def add_subscription_for(name, subscription)
  @subscriptions[name].push subscription
end
build_context() click to toggle source
# File lib/message_driver/adapters/in_memory_adapter.rb, line 101
def build_context
  InMemoryContext.new(self)
end
consumer_count_for(name) click to toggle source
# File lib/message_driver/adapters/in_memory_adapter.rb, line 177
def consumer_count_for(name)
  @subscriptions[name].size
end
create_destination(name, dest_options = {}, message_props = {}) click to toggle source
# File lib/message_driver/adapters/in_memory_adapter.rb, line 105
def create_destination(name, dest_options = {}, message_props = {})
  destination = Destination.new(self, name, dest_options, message_props)
  @destinations[name] = destination
end
Also aliased as: handle_create_destination
handle_create_destination(name, dest_options = {}, message_props = {})
Alias for: create_destination
message_queue_for(name) click to toggle source
# File lib/message_driver/adapters/in_memory_adapter.rb, line 153
def message_queue_for(name)
  @message_store[name]
end
next_subscription_for(name) click to toggle source
# File lib/message_driver/adapters/in_memory_adapter.rb, line 161
def next_subscription_for(name)
  unless (subs = @subscriptions[name]).empty?
    sub = subs.shift
    subs.push sub
    sub
  end
end
remove_subscription_for(name, subscription) click to toggle source
# File lib/message_driver/adapters/in_memory_adapter.rb, line 173
def remove_subscription_for(name, subscription)
  @subscriptions[name].delete(subscription)
end
reset_after_tests() click to toggle source
# File lib/message_driver/adapters/in_memory_adapter.rb, line 146
def reset_after_tests
  @message_store.keys.each do |k|
    @message_store[k] = []
  end
  @subscriptions.clear
end
stop() click to toggle source
Calls superclass method MessageDriver::Adapters::Base#stop
# File lib/message_driver/adapters/in_memory_adapter.rb, line 141
def stop
  super
  reset_after_tests
end
subscriptions_for(name) click to toggle source
# File lib/message_driver/adapters/in_memory_adapter.rb, line 157
def subscriptions_for(name)
  @subscriptions[name]
end