class MessageDriver::Middleware::MiddlewareStack

Attributes

destination[R]

Public Class Methods

new(destination) click to toggle source
# File lib/message_driver/middleware/middleware_stack.rb, line 8
def initialize(destination)
  @destination = destination
  @middlewares = []
end

Public Instance Methods

append(middleware_class, *args) click to toggle source
# File lib/message_driver/middleware/middleware_stack.rb, line 17
def append(middleware_class, *args)
  middleware = build_middleware(middleware_class, *args)
  @middlewares << middleware
  middleware
end
each() { |x| ... } click to toggle source
# File lib/message_driver/middleware/middleware_stack.rb, line 45
def each
  @middlewares.each { |x| yield x }
end
empty?() click to toggle source
# File lib/message_driver/middleware/middleware_stack.rb, line 41
def empty?
  @middlewares.empty?
end
middlewares() click to toggle source
# File lib/message_driver/middleware/middleware_stack.rb, line 13
def middlewares
  @middlewares.dup.freeze
end
on_consume(body, headers, properties) click to toggle source
# File lib/message_driver/middleware/middleware_stack.rb, line 35
def on_consume(body, headers, properties)
  @middlewares.reverse_each.reduce([body, headers, properties]) do |args, middleware|
    middleware.on_consume(*args)
  end
end
on_publish(body, headers, properties) click to toggle source
# File lib/message_driver/middleware/middleware_stack.rb, line 29
def on_publish(body, headers, properties)
  @middlewares.reduce([body, headers, properties]) do |args, middleware|
    middleware.on_publish(*args)
  end
end
prepend(middleware_class, *args) click to toggle source
# File lib/message_driver/middleware/middleware_stack.rb, line 23
def prepend(middleware_class, *args)
  middleware = build_middleware(middleware_class, *args)
  @middlewares.unshift middleware
  middleware
end

Private Instance Methods

build_middleware(middleware_type, *args) click to toggle source
# File lib/message_driver/middleware/middleware_stack.rb, line 51
def build_middleware(middleware_type, *args)
  case middleware_type
  when Hash
    BlockMiddleware.new(destination, middleware_type)
  else
    middleware_type.new(destination, *args)
  end
end