Class: JCW::Interceptors::Gruf::Client

Inherits:
Gruf::Interceptors::ClientInterceptor
  • Object
show all
Defined in:
lib/jcw/interceptors/gruf/client.rb

Instance Method Summary collapse

Instance Method Details

#call(request_context:) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/jcw/interceptors/gruf/client.rb', line 7

def call(request_context:)
  tracer = OpenTracing.global_tracer
   = request_context.

  tags = {
    "component" => "gRPC",
    "span.kind" => "client",
    "grpc.method_type" => "request_response",
    "grpc.headers" => ,
  }

  tracer.start_active_span(request_context.method.to_s, tags: tags) do |current_scope|
    current_span = current_scope.span
    current_span.log_kv(
      event: "request",
      data: request_context.requests.map { |request| request.try(:to_h) },
    )
    hpack_carrier = Hpack.new()
    tracer.inject(current_span.context, ::OpenTracing::FORMAT_TEXT_MAP, hpack_carrier)

    yield
  end
end