class Yabeda::Gruf::ServerInterceptor

Public Instance Methods

call() { || ... } click to toggle source
# File lib/yabeda/gruf/server_interceptor.rb, line 6
def call # rubocop:disable Metrics/MethodLength
  response = nil
  error = nil

  start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC)

  begin
    response = yield
  rescue StandardError => e
    error = e
  end

  stop_time = Process.clock_gettime(Process::CLOCK_MONOTONIC)

  l = labels(response, error)

  Yabeda.gruf.served_requests_total.increment(l)
  Yabeda.gruf.served_request_duration.measure(l, stop_time - start_time)

  raise error if error
  response
end

Private Instance Methods

labels(_response, error) click to toggle source
# File lib/yabeda/gruf/server_interceptor.rb, line 31
def labels(_response, error)
  {
    grpcService: request.service_key,
    grpcMethod: request.method_key,
    grpcStatus: error ? error.class.name : 'GRPC::Ok',
    status: status_code(error)
  }
end
status_code(error) click to toggle source
# File lib/yabeda/gruf/server_interceptor.rb, line 40
def status_code(error)
  return '0' unless error
  return 'error' unless error.respond_to?(:code)

  error.code.to_s
end