Class: Gritz::Dispatcher

Inherits:
Object
  • Object
show all
Defined in:
/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/dispatcher.rb

Overview

Routes one Call through the configured middleware and a fresh controller.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(router:, middleware: Middleware::Stack.default, logger: Logger.new($stdout), metrics: nil, worker: nil, log_format: :json, log_redact: []) ⇒ Dispatcher

Returns a new instance of Dispatcher.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File '/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/dispatcher.rb', line 11

def initialize(router:, middleware: Middleware::Stack.default, logger: Logger.new($stdout),
               metrics: nil, worker: nil, log_format: :json, log_redact: [])
  @router = router
  @logger = logger
  @context_options = { metrics: metrics, worker: worker, log_format: log_format, log_redact: log_redact }
  endpoint = lambda do |context|
    context.check_deadline!
    context.check_cancelled!
    descriptor = router.resolve(context.method.full_name)
    result = descriptor.controller.new(context:).process(descriptor.action)
    context.check_deadline!
    context.check_cancelled!
    unless descriptor.server_streaming?
      context.validate_response!(result)
      context.record_sent(result)
    end
    result
  end
  @app = middleware ? middleware.build(endpoint) : endpoint
end

Instance Attribute Details

#router ⇒ Object (readonly)



9
10
11
# File '/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/dispatcher.rb', line 9

def router
  @router
end

Instance Method Details

#call(call) ⇒ Object



32
33
34
# File '/home/runner/work/gritz/gritz/sources/gritz-core/lib/gritz/dispatcher.rb', line 32

def call(call)
  @app.call(Context.new(call:, logger: @logger, **@context_options))
end