Sha256: 538ec49ce4316937862e37229fe16f65616696234116b7c7b832c2ebd3f434eb

Contents?: true

Size: 1.39 KB

Versions: 7

Compression:

Stored size: 1.39 KB

Contents

# frozen_string_literal: true

require 'grpc_kit'

class LoggingInterceptor < GRPC::ServerInterceptor
  def request_response(request: nil, call: nil, method: nil)
    now = Time.now.to_i
    GrpcKit.logger.info("Started request #{request}, method=#{method.name}, service_name=#{method.receiver.class.service_name}")
    yield(request, call).tap do
      GrpcKit.logger.info("Elapsed Time: #{Time.now.to_i - now}")
    end
  end

  def client_streamer(call: nil, method: nil)
    GrpcKit.logger.info("Started request method=#{method.name}, service_name=#{method.receiver.class.service_name}")
    yield(LoggingStream.new(call))
  end

  def server_streamer(call: nil, method: nil, **)
    GrpcKit.logger.info("Started request method=#{method.name}, service_name=#{method.receiver.class.service_name}")
    yield(LoggingStream.new(call))
  end

  def bidi_streamer(call: nil, method: nil, **)
    GrpcKit.logger.info("Started request method=#{method.name}, service_name=#{method.receiver.class.service_name}")
    yield(LoggingStream.new(call))
  end

  class LoggingStream
    def initialize(stream)
      @stream = stream
    end

    def send_msg(msg, **opt)
      GrpcKit.logger.info("logging interceptor send #{msg.inspect}")
      @stream.send_msg(msg, opt)
    end

    def recv(**opt)
      @stream.recv(**opt).tap do |v|
        GrpcKit.logger.info("logging interceptor recv #{v.inspect}")
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
grpc_kit-0.1.14 examples/interceptors/server_logging_interceptor.rb
grpc_kit-0.1.13 examples/interceptors/server_logging_interceptor.rb
griffin-0.1.4 examples/interceptors/server_logging_interceptor.rb
grpc_kit-0.1.12 examples/interceptors/server_logging_interceptor.rb
grpc_kit-0.1.11 examples/interceptors/server_logging_interceptor.rb
griffin-0.1.3 examples/interceptors/server_logging_interceptor.rb
grpc_kit-0.1.10 examples/interceptors/server_logging_interceptor.rb