Sha256: cf1413362294d38c9809f5cded86a867716b5a0d9ead4816bc93236a2d3a5c8b
Contents?: true
Size: 1.5 KB
Versions: 3
Compression:
Stored size: 1.5 KB
Contents
# frozen_string_literal: true require 'socket' module Zipkin class Endpoint LOCAL_IP = ( Socket.ip_address_list.detect(&:ipv4_private?) || Socket.ip_address_list.reverse.detect(&:ipv4?) ).ip_address module SpanKind SERVER = 'server'.freeze CLIENT = 'client'.freeze PRODUCER = 'producer'.freeze CONSUMER = 'consumer'.freeze end module PeerInfo SERVICE = 'peer.service'.freeze IPV4 = 'peer.ipv4'.freeze IPV6 = 'peer.ipv6'.freeze PORT = 'peer.port'.freeze def self.keys [SERVICE, IPV4, IPV6, PORT] end end def self.local_endpoint(service_name) new(service_name: service_name, ipv4: LOCAL_IP) end def self.remote_endpoint(span) tags = span.tags kind = tags['span.kind'] || SpanKind::SERVER case kind when SpanKind::SERVER, SpanKind::CLIENT return nil if (tags.keys & PeerInfo.keys).empty? new( service_name: tags[PeerInfo::SERVICE], ipv4: tags[PeerInfo::IPV4], ipv6: tags[PeerInfo::IPV6], port: tags[PeerInfo::PORT] ) when SpanKind::PRODUCER, SpanKind::CONSUMER new(service_name: 'broker') else warn "Unkown span kind: #{kind}" nil end end def initialize(service_name: nil, ipv4: nil, ipv6: nil, port: nil) @service_name = service_name @ipv4 = ipv4 @ipv6 = ipv6 @port = port end attr_reader :service_name, :ipv4, :ipv6, :port end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
zipkin-1.6.3 | lib/zipkin/endpoint.rb |
zipkin-1.6.2 | lib/zipkin/endpoint.rb |
zipkin-1.6.1 | lib/zipkin/endpoint.rb |