Sha256: ce7a805efd5d33bee9013b9ac74aa6fc128b2a2063ddf86f84f09d9b681e91e5
Contents?: true
Size: 1.54 KB
Versions: 2
Compression:
Stored size: 1.54 KB
Contents
# frozen_string_literal: true module GrpcKit module Interceptors module Client class Streaming attr_writer :interceptors def initialize # Cant' get interceptor at definition time... @interceptors = nil end def intercept(call, &block) if @interceptors && !@interceptors.empty? do_intercept(@interceptors.dup, call, &block) else yield(call) end end private def do_intercept(interceptors, call) if interceptors.empty? return yield(call) end interceptor = interceptors.pop invoke(interceptor, call) do |inter_call| do_intercept(interceptors, inter_call) do |c| yield(c) end end end end end module Server class Streaming def initialize(interceptors) @interceptors = interceptors end def intercept(call, &block) if @interceptors && !@interceptors.empty? do_intercept(@interceptors.dup, call, &block) else yield(call) end end private def do_intercept(interceptors, call) if interceptors.empty? return yield(call) end interceptor = interceptors.pop invoke(interceptor, call) do |inter_call| do_intercept(interceptors, inter_call) do |c| yield(c) end end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
grpc_kit-0.1.2 | lib/grpc_kit/interceptors/streaming.rb |
grpc_kit-0.1.1 | lib/grpc_kit/interceptors/streaming.rb |