Sha256: bfaa9105c7af34458f5527be71862065c632f8e2ecf16d2aa67117138ffa03af

Contents?: true

Size: 685 Bytes

Versions: 2

Compression:

Stored size: 685 Bytes

Contents

# encoding: utf-8

module HTTPkit
  module Support
    class HandlerManager
      def initialize(handlers)
        @handlers = handlers
      end

      def invoke(message, *arguments)
        @handlers
          .select { |handler| handler.respond_to?(message) }
          .reduce(arguments) do |args, handler|
            handler.send(message, *args) { |*new_args| args = new_args }
            args
          end
      end

      # XXX not mutation covered
      module Setup
        def setup_handlers
          @handlers = Support::HandlerManager.new(@config[:handlers] || [])
          @handlers.invoke(:setup, @config, self, @connection)
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
httpkit-0.6.0 lib/httpkit/support/handler_manager.rb
httpkit-0.6.0.pre.5 lib/httpkit/support/handler_manager.rb