Sha256: f49d144ac775146c3d3a3192de7e78e7884a191eeeae3542d4aafcf9ee796129

Contents?: true

Size: 1.55 KB

Versions: 2

Compression:

Stored size: 1.55 KB

Contents

require 'fake_sqs/actions/change_message_visibility'
require 'fake_sqs/actions/change_message_visibility_batch'
require 'fake_sqs/actions/create_queue'
require 'fake_sqs/actions/delete_queue'
require 'fake_sqs/actions/list_queues'
require 'fake_sqs/actions/get_queue_url'
require 'fake_sqs/actions/send_message'
require 'fake_sqs/actions/receive_message'
require 'fake_sqs/actions/delete_message'
require 'fake_sqs/actions/delete_message_batch'
require 'fake_sqs/actions/purge_queue'
require 'fake_sqs/actions/send_message_batch'
require 'fake_sqs/actions/get_queue_attributes'
require 'fake_sqs/actions/set_queue_attributes'
require 'fake_sqs/actions/list_dead_letter_source_queues'

module FakeSQS

  InvalidAction = Class.new(ArgumentError)

  class API

    attr_reader :queues, :options

    def initialize(options = {})
      @queues    = options.fetch(:queues)
      @options   = options
      @run_timer = true
      @timer     = Thread.new do
        while @run_timer
          queues.timeout_messages!
          sleep(0.1)
        end
      end
    end

    def call(action, request, *args)
      if FakeSQS::Actions.const_defined?(action)
        action = FakeSQS::Actions.const_get(action).new(options.merge({:request => request}))
        queues.transaction do
          action.call(*args)
        end
      else
        fail InvalidAction, "Unknown (or not yet implemented) action: #{action}"
      end
    end

    # Fake actions

    def reset
      queues.reset
    end

    def expire
      queues.expire
    end

    def stop
      @run_timer = false
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fake_sqs-0.4.3 lib/fake_sqs/api.rb
fake_sqs-0.4.2 lib/fake_sqs/api.rb