class Gruf::StackdriverTrace::ClientInterceptor
Public Instance Methods
call(request_context:) { |request_context| ... }
click to toggle source
# File lib/gruf/stackdriver_trace/client_interceptor.rb, line 8 def call(request_context:) Google::Cloud::Trace.in_span("grpc-request") do |span| return yield request_context unless span set_request_metadata(request_context.metadata, span) configure_span(span, request_context) result = Gruf::Interceptors::Timer.time do yield request_context end add_response_labels(span.labels, result) raise result.message unless result.successful? result.message end end
Private Instance Methods
add_response_labels(labels, result)
click to toggle source
# File lib/gruf/stackdriver_trace/client_interceptor.rb, line 37 def add_response_labels(labels, result) code = result.successful? ? ::GRPC::Core::StatusCodes::OK : result.message.code set_grpc_status_code(labels, code) end
configure_span(span, request_context)
click to toggle source
# File lib/gruf/stackdriver_trace/client_interceptor.rb, line 28 def configure_span(span, request_context) method_name = request_context.method.to_s.gsub(/^\//, '') span.name = "Sent: #{method_name}" set_stack_trace(span, 4) set_basic_labels(span.labels, request_context, method_name) set_label(span.labels, label_key::RPC_REQUEST_TYPE, request_context.type.to_s) span end
set_request_metadata(metadata, span)
click to toggle source
# File lib/gruf/stackdriver_trace/client_interceptor.rb, line 24 def set_request_metadata(metadata, span) metadata[Gruf::StackdriverTrace::HEADER_KEY] = span.trace.trace_context.to_s end