class GrpcKit::Interceptors::Client::Streaming

Public Class Methods

new(interceptors) click to toggle source

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

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

Public Instance Methods

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

@param metadata [Hash<String,String>]

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

Private Instance Methods

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

  interceptor = interceptors.pop
  invoke(interceptor, call, metadata) do |inter_call, meta|
    do_intercept(interceptors, inter_call, meta) do |c, m|
      yield(c, m)
    end
  end
end