Class: MessageDriver::Middleware::MiddlewareStack

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/message_driver/middleware/middleware_stack.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(destination) ⇒ MiddlewareStack

Returns a new instance of MiddlewareStack.



8
9
10
11
# File 'lib/message_driver/middleware/middleware_stack.rb', line 8

def initialize(destination)
  @destination = destination
  @middlewares = []
end

Instance Attribute Details

#destinationObject (readonly)

Returns the value of attribute destination.



6
7
8
# File 'lib/message_driver/middleware/middleware_stack.rb', line 6

def destination
  @destination
end

Instance Method Details

#append(middleware_class, *args) ⇒ Object



17
18
19
20
21
# 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

#eachObject



45
46
47
# File 'lib/message_driver/middleware/middleware_stack.rb', line 45

def each
  @middlewares.each { |x| yield x }
end

#empty?Boolean

Returns:

  • (Boolean)


41
42
43
# File 'lib/message_driver/middleware/middleware_stack.rb', line 41

def empty?
  @middlewares.empty?
end

#middlewaresObject



13
14
15
# File 'lib/message_driver/middleware/middleware_stack.rb', line 13

def middlewares
  @middlewares.dup.freeze
end

#on_consume(body, headers, properties) ⇒ Object



35
36
37
38
39
# 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) ⇒ Object



29
30
31
32
33
# 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) ⇒ Object



23
24
25
26
27
# 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