Sha256: 2a9dc38af28b2acde10c755d663f01d38c0aace441101e821878842e4d58f645

Contents?: true

Size: 788 Bytes

Versions: 4

Compression:

Stored size: 788 Bytes

Contents

# frozen_string_literal: true

class Freddy
  class RequestManager
    def initialize(logger)
      @requests = ConcurrentHash.new
      @logger = logger
    end

    def no_route(correlation_id)
      request = @requests[correlation_id]
      return unless request

      delete(correlation_id)
      request[:callback].call({ error: 'Specified queue does not exist' }, nil)
    end

    def store(correlation_id, opts)
      @requests[correlation_id] = opts
    end

    def delete(correlation_id)
      @requests.delete(correlation_id)
    end

    class ConcurrentHash < Hash
      # CRuby hash does not need any locks. Only adding when using JRuby.
      if RUBY_PLATFORM == 'java'
        require 'jruby/synchronized'
        include JRuby::Synchronized
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
freddy-1.7.0 lib/freddy/request_manager.rb
freddy-1.6.0 lib/freddy/request_manager.rb
freddy-1.5.0 lib/freddy/request_manager.rb
freddy-1.4.2 lib/freddy/request_manager.rb