class GrpcKit::Interceptors::Client::RequestResponse

Public Class Methods

new(interceptors) click to toggle source

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

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

Public Instance Methods

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

@param call [GrpcKit::Calls::Client::RequestResponse] @param metadata [Hash<String,String>] @yieldreturn [Object] Response object server sent

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

Private Instance Methods

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

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