class GrpcKit::Interceptors::Server::RequestResponse

Public Class Methods

new(interceptors) click to toggle source

@param interceptors [Array<GrpcKit::Grpc::ServerInterceptor>]

# File lib/grpc_kit/interceptors/server_request_response.rb, line 10
def initialize(interceptors)
  @registry = GrpcKit::InterceptorRegistry.new(interceptors)
end

Public Instance Methods

intercept(request, call, &block) click to toggle source

@param request [Object] Recevied request objects @param call [GrpcKit::Calls::Client::RequestResponse] @yieldreturn [Object] Response object server sent

# File lib/grpc_kit/interceptors/server_request_response.rb, line 17
def intercept(request, call, &block)
  do_intercept(@registry.build, request, call, &block)
end

Private Instance Methods

do_intercept(interceptors, request, call) { || ... } click to toggle source
# File lib/grpc_kit/interceptors/server_request_response.rb, line 23
def do_intercept(interceptors, request, call)
  if interceptors.empty?
    return yield
  end

  interceptor = interceptors.pop
  interceptor.request_response(request: request, call: call, method: call.method) do
    do_intercept(interceptors, request, call) { yield }
  end
end