# # Autogenerated by Thrift Compiler (0.12.0) # # DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING # require 'thrift' module OpenTelemetry module Exporter module Jaeger module Thrift module Zipkin module AnnotationType BOOL = 0 BYTES = 1 I16 = 2 I32 = 3 I64 = 4 DOUBLE = 5 STRING = 6 VALUE_MAP = {0 => "BOOL", 1 => "BYTES", 2 => "I16", 3 => "I32", 4 => "I64", 5 => "DOUBLE", 6 => "STRING"} VALID_VALUES = Set.new([BOOL, BYTES, I16, I32, I64, DOUBLE, STRING]).freeze end class Endpoint; end class Annotation; end class BinaryAnnotation; end class Span; end class Response; end # Indicates the network context of a service recording an annotation with two # exceptions. # # When a BinaryAnnotation, and key is CLIENT_ADDR or SERVER_ADDR, # the endpoint indicates the source or destination of an RPC. This exception # allows zipkin to display network context of uninstrumented services, or # clients such as web browsers. class Endpoint include ::Thrift::Struct, ::Thrift::Struct_Union IPV4 = 1 PORT = 2 SERVICE_NAME = 3 IPV6 = 4 FIELDS = { # IPv4 host address packed into 4 bytes. # # Ex for the ip 1.2.3.4, it would be (1 << 24) | (2 << 16) | (3 << 8) | 4 IPV4 => {:type => ::Thrift::Types::I32, :name => 'ipv4'}, # IPv4 port # # Note: this is to be treated as an unsigned integer, so watch for negatives. # # Conventionally, when the port isn't known, port = 0. PORT => {:type => ::Thrift::Types::I16, :name => 'port'}, # Service name in lowercase, such as "memcache" or "zipkin-web" # # Conventionally, when the service name isn't known, service_name = "unknown". SERVICE_NAME => {:type => ::Thrift::Types::STRING, :name => 'service_name'}, # IPv6 host address packed into 16 bytes. Ex Inet6Address.getBytes() IPV6 => {:type => ::Thrift::Types::STRING, :name => 'ipv6', :binary => true, :optional => true} } def struct_fields; FIELDS; end def validate end ::Thrift::Struct.generate_accessors self end # An annotation is similar to a log statement. It includes a host field which # allows these events to be attributed properly, and also aggregatable. class Annotation include ::Thrift::Struct, ::Thrift::Struct_Union TIMESTAMP = 1 VALUE = 2 HOST = 3 FIELDS = { # Microseconds from epoch. # # This value should use the most precise value possible. For example, # gettimeofday or syncing nanoTime against a tick of currentTimeMillis. TIMESTAMP => {:type => ::Thrift::Types::I64, :name => 'timestamp'}, VALUE => {:type => ::Thrift::Types::STRING, :name => 'value'}, # Always the host that recorded the event. By specifying the host you allow # rollup of all events (such as client requests to a service) by IP address. HOST => {:type => ::Thrift::Types::STRUCT, :name => 'host', :class => ::OpenTelemetry::Exporter::Jaeger::Thrift::Zipkin::Endpoint, :optional => true} } def struct_fields; FIELDS; end def validate end ::Thrift::Struct.generate_accessors self end # Binary annotations are tags applied to a Span to give it context. For # example, a binary annotation of "http.uri" could the path to a resource in a # RPC call. # # Binary annotations of type STRING are always queryable, though more a # historical implementation detail than a structural concern. # # Binary annotations can repeat, and vary on the host. Similar to Annotation, # the host indicates who logged the event. This allows you to tell the # difference between the client and server side of the same key. For example, # the key "http.uri" might be different on the client and server side due to # rewriting, like "/api/v1/myresource" vs "/myresource. Via the host field, # you can see the different points of view, which often help in debugging. class BinaryAnnotation include ::Thrift::Struct, ::Thrift::Struct_Union KEY = 1 VALUE = 2 ANNOTATION_TYPE = 3 HOST = 4 FIELDS = { KEY => {:type => ::Thrift::Types::STRING, :name => 'key'}, VALUE => {:type => ::Thrift::Types::STRING, :name => 'value', :binary => true}, ANNOTATION_TYPE => {:type => ::Thrift::Types::I32, :name => 'annotation_type', :enum_class => ::OpenTelemetry::Exporter::Jaeger::Thrift::Zipkin::AnnotationType}, # The host that recorded tag, which allows you to differentiate between # multiple tags with the same key. There are two exceptions to this. # # When the key is CLIENT_ADDR or SERVER_ADDR, host indicates the source or # destination of an RPC. This exception allows zipkin to display network # context of uninstrumented services, or clients such as web browsers. HOST => {:type => ::Thrift::Types::STRUCT, :name => 'host', :class => ::OpenTelemetry::Exporter::Jaeger::Thrift::Zipkin::Endpoint, :optional => true} } def struct_fields; FIELDS; end def validate unless @annotation_type.nil? || ::OpenTelemetry::Exporter::Jaeger::Thrift::Zipkin::AnnotationType::VALID_VALUES.include?(@annotation_type) raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Invalid value of field annotation_type!') end end ::Thrift::Struct.generate_accessors self end # A trace is a series of spans (often RPC calls) which form a latency tree. # # The root span is where trace_id = id and parent_id = Nil. The root span is # usually the longest interval in the trace, starting with a SERVER_RECV # annotation and ending with a SERVER_SEND. class Span include ::Thrift::Struct, ::Thrift::Struct_Union TRACE_ID = 1 NAME = 3 ID = 4 PARENT_ID = 5 ANNOTATIONS = 6 BINARY_ANNOTATIONS = 8 DEBUG = 9 TIMESTAMP = 10 DURATION = 11 TRACE_ID_HIGH = 12 FIELDS = { TRACE_ID => {:type => ::Thrift::Types::I64, :name => 'trace_id'}, # Span name in lowercase, rpc method for example # # Conventionally, when the span name isn't known, name = "unknown". NAME => {:type => ::Thrift::Types::STRING, :name => 'name'}, ID => {:type => ::Thrift::Types::I64, :name => 'id'}, PARENT_ID => {:type => ::Thrift::Types::I64, :name => 'parent_id', :optional => true}, ANNOTATIONS => {:type => ::Thrift::Types::LIST, :name => 'annotations', :element => {:type => ::Thrift::Types::STRUCT, :class => ::OpenTelemetry::Exporter::Jaeger::Thrift::Zipkin::Annotation}}, BINARY_ANNOTATIONS => {:type => ::Thrift::Types::LIST, :name => 'binary_annotations', :element => {:type => ::Thrift::Types::STRUCT, :class => ::OpenTelemetry::Exporter::Jaeger::Thrift::Zipkin::BinaryAnnotation}}, DEBUG => {:type => ::Thrift::Types::BOOL, :name => 'debug', :default => false, :optional => true}, # Microseconds from epoch of the creation of this span. # # This value should be set directly by instrumentation, using the most # precise value possible. For example, gettimeofday or syncing nanoTime # against a tick of currentTimeMillis. # # For compatibilty with instrumentation that precede this field, collectors # or span stores can derive this via Annotation.timestamp. # For example, SERVER_RECV.timestamp or CLIENT_SEND.timestamp. # # This field is optional for compatibility with old data: first-party span # stores are expected to support this at time of introduction. TIMESTAMP => {:type => ::Thrift::Types::I64, :name => 'timestamp', :optional => true}, # Measurement of duration in microseconds, used to support queries. # # This value should be set directly, where possible. Doing so encourages # precise measurement decoupled from problems of clocks, such as skew or NTP # updates causing time to move backwards. # # For compatibilty with instrumentation that precede this field, collectors # or span stores can derive this by subtracting Annotation.timestamp. # For example, SERVER_SEND.timestamp - SERVER_RECV.timestamp. # # If this field is persisted as unset, zipkin will continue to work, except # duration query support will be implementation-specific. Similarly, setting # this field non-atomically is implementation-specific. # # This field is i64 vs i32 to support spans longer than 35 minutes. DURATION => {:type => ::Thrift::Types::I64, :name => 'duration', :optional => true}, # Optional unique 8-byte additional identifier for a trace. If non zero, this # means the trace uses 128 bit traceIds instead of 64 bit. TRACE_ID_HIGH => {:type => ::Thrift::Types::I64, :name => 'trace_id_high', :optional => true} } def struct_fields; FIELDS; end def validate end ::Thrift::Struct.generate_accessors self end class Response include ::Thrift::Struct, ::Thrift::Struct_Union OK = 1 FIELDS = { OK => {:type => ::Thrift::Types::BOOL, :name => 'ok'} } def struct_fields; FIELDS; end def validate raise ::Thrift::ProtocolException.new(::Thrift::ProtocolException::UNKNOWN, 'Required field ok is unset!') if @ok.nil? end ::Thrift::Struct.generate_accessors self end end end end end end