class Dynflow::Middleware::Stack

Attributes

action[R]
middleware[R]
middleware_class[R]

Public Class Methods

build(middleware_classes, method, action, &block) click to toggle source
# File lib/dynflow/middleware/stack.rb, line 8
def self.build(middleware_classes, method, action, &block)
  middleware_classes.reverse_each.reduce(block) do |stack, klass|
    Middleware::Stack.new(stack, klass, method, action)
  end
end
new(next_stack, middleware_class, method, action) click to toggle source
# File lib/dynflow/middleware/stack.rb, line 14
def initialize(next_stack, middleware_class, method, action)
  @middleware_class = Child! middleware_class, Middleware
  @middleware       = middleware_class.new self
  @action           = Type! action, Dynflow::Action, NilClass
  @method           = Match! method, :delay, :plan, :run, :finalize, :plan_phase, :finalize_phase, :present, :hook
  @next_stack       = Type! next_stack, Middleware::Stack, Proc
end

Public Instance Methods

call(*args) click to toggle source
# File lib/dynflow/middleware/stack.rb, line 22
def call(*args)
  @middleware.send @method, *args
end
pass(*args) click to toggle source
# File lib/dynflow/middleware/stack.rb, line 26
def pass(*args)
  @next_stack.call(*args)
end