Class: A2A::Agent::StackBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/a2a/agent.rb

Overview

Builds a per-operation middleware stack. Collects ‘use` and `respond_with` calls, compiles into a callable app.

Instance Method Summary collapse

Constructor Details

#initializeStackBuilder

Returns a new instance of StackBuilder.



69
70
71
72
# File 'lib/a2a/agent.rb', line 69

def initialize
  @middleware = []
  @terminal   = nil
end

Instance Method Details

#respond_with(callable) ⇒ Object



78
79
80
# File 'lib/a2a/agent.rb', line 78

def respond_with(callable)
  @terminal = callable
end

#to_appObject

Raises:

  • (ArgumentError)


82
83
84
85
86
87
88
89
90
91
92
# File 'lib/a2a/agent.rb', line 82

def to_app
  raise ArgumentError, "respond_with is required" unless @terminal

  app = Terminal.new(@terminal)

  @middleware.reverse_each do |klass, args, block|
    app = klass.new(app, *args, &block)
  end

  app
end

#use(middleware, *args, &block) ⇒ Object



74
75
76
# File 'lib/a2a/agent.rb', line 74

def use(middleware, *args, &block)
  @middleware << [middleware, args, block]
end