diff options
Diffstat (limited to 'vendor/jonahgeorge/jaeger-client-php/src/Jaeger')
102 files changed, 8383 insertions, 0 deletions
diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/AgentClient/HttpAgentClient.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/AgentClient/HttpAgentClient.php new file mode 100644 index 000000000..e270b76ac --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/AgentClient/HttpAgentClient.php @@ -0,0 +1,27 @@ +<?php + +namespace Jaeger\AgentClient; + +class HttpAgentClient implements \Jaeger\Thrift\Agent\AgentIf +{ + protected $input_ = null; + protected $output_ = null; + + protected $seqid_ = 0; + + public function __construct($input, $output = null) + { + $this->input_ = $input; + $this->output_ = $output ? $output : $input; + } + + public function emitZipkinBatch(array $spans) + { + } + + public function emitBatch(\Jaeger\Thrift\Batch $batch) + { + $batch->write($this->output_); + $this->output_->getTransport()->flush(); + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/BinaryCodec.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/BinaryCodec.php new file mode 100644 index 000000000..36c2ffe2c --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/BinaryCodec.php @@ -0,0 +1,39 @@ +<?php + +namespace Jaeger\Codec; + +use Jaeger\SpanContext; +use OpenTracing\UnsupportedFormatException; + +class BinaryCodec implements CodecInterface +{ + /** + * {@inheritdoc} + * + * @see \Jaeger\Tracer::inject + * + * @param SpanContext $spanContext + * @param mixed $carrier + * + * @return void + */ + public function inject(SpanContext $spanContext, &$carrier) + { + throw new UnsupportedFormatException('Binary encoding not implemented'); + } + + /** + * {@inheritdoc} + * + * @see \Jaeger\Tracer::extract + * + * @param mixed $carrier + * @return SpanContext|null + * + * @throws UnsupportedFormatException + */ + public function extract($carrier) + { + throw new UnsupportedFormatException('Binary encoding not implemented'); + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/CodecInterface.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/CodecInterface.php new file mode 100644 index 000000000..2aa7d690d --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/CodecInterface.php @@ -0,0 +1,36 @@ +<?php + +namespace Jaeger\Codec; + +use Jaeger\SpanContext; + +interface CodecInterface +{ + /** + * Handle the logic behind injecting propagation scheme specific information into the carrier + * (e.g. http request headers, amqp message headers, etc.). + * + * This method can modify the carrier. + * + * @see \Jaeger\Tracer::inject + * + * @param SpanContext $spanContext + * @param mixed $carrier + * + * @return void + */ + public function inject(SpanContext $spanContext, &$carrier); + + /** + * Handle the logic behind extracting propagation-scheme specific information from carrier + * (e.g. http request headers, amqp message headers, etc.). + * + * This method must not modify the carrier. + * + * @see \Jaeger\Tracer::extract + * + * @param mixed $carrier + * @return SpanContext|null + */ + public function extract($carrier); +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/CodecUtility.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/CodecUtility.php new file mode 100644 index 000000000..eb86a1cde --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/CodecUtility.php @@ -0,0 +1,41 @@ +<?php + +namespace Jaeger\Codec; + +class CodecUtility +{ + + /** + * Incoming trace/span IDs are hex representations of 64-bit values. PHP + * represents ints internally as signed 32- or 64-bit values, but base_convert + * converts to string representations of arbitrarily large positive numbers. + * This means at least half the incoming IDs will be larger than PHP_INT_MAX. + * + * Thrift, while building a binary representation of the IDs, performs bitwise + * operations on the string values, implicitly casting to int and capping them + * at PHP_INT_MAX. So, incoming IDs larger than PHP_INT_MAX will be serialized + * and sent to the agent as PHP_INT_MAX, breaking trace/span correlation. + * + * This method therefore, on 64-bit architectures, splits the hex string into + * high and low values, converts them separately to ints, and manually combines + * them into a proper signed int. This int is then handled properly by the + * Thrift package. + * + * On 32-bit architectures, it falls back to base_convert. + * + * @param string $hex + * @return string|int + */ + public static function hexToInt64($hex) + { + // If we're on a 32-bit architecture, fall back to base_convert. + if (PHP_INT_SIZE === 4) { + return base_convert($hex, 16, 10); + } + + $hi = intval(substr($hex, -16, -8), 16); + $lo = intval(substr($hex, -8, 8), 16); + + return $hi << 32 | $lo; + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/TextCodec.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/TextCodec.php new file mode 100644 index 000000000..d437f3812 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/TextCodec.php @@ -0,0 +1,184 @@ +<?php + +namespace Jaeger\Codec; + +use Exception; +use Jaeger\SpanContext; + +use const Jaeger\TRACE_ID_HEADER; +use const Jaeger\BAGGAGE_HEADER_PREFIX; +use const Jaeger\DEBUG_ID_HEADER_KEY; + +class TextCodec implements CodecInterface +{ + private $urlEncoding; + private $traceIdHeader; + private $baggagePrefix; + private $debugIdHeader; + private $prefixLength; + + /** + * @param bool $urlEncoding + * @param string $traceIdHeader + * @param string $baggageHeaderPrefix + * @param string $debugIdHeader + */ + public function __construct( + bool $urlEncoding = false, + string $traceIdHeader = TRACE_ID_HEADER, + string $baggageHeaderPrefix = BAGGAGE_HEADER_PREFIX, + string $debugIdHeader = DEBUG_ID_HEADER_KEY + ) { + $this->urlEncoding = $urlEncoding; + $this->traceIdHeader = str_replace('_', '-', strtolower($traceIdHeader)); + $this->baggagePrefix = str_replace('_', '-', strtolower($baggageHeaderPrefix)); + $this->debugIdHeader = str_replace('_', '-', strtolower($debugIdHeader)); + $this->prefixLength = strlen($baggageHeaderPrefix); + } + + /** + * {@inheritdoc} + * + * @see \Jaeger\Tracer::inject + * + * @param SpanContext $spanContext + * @param mixed $carrier + * + * @return void + */ + public function inject(SpanContext $spanContext, &$carrier) + { + $carrier[$this->traceIdHeader] = $this->spanContextToString( + $spanContext->getTraceId(), + $spanContext->getSpanId(), + $spanContext->getParentId(), + $spanContext->getFlags() + ); + + $baggage = $spanContext->getBaggage(); + if (empty($baggage)) { + return; + } + + foreach ($baggage as $key => $value) { + $encodedValue = $value; + + if ($this->urlEncoding) { + $encodedValue = urlencode($value); + } + + $carrier[$this->baggagePrefix . $key] = $encodedValue; + } + } + + /** + * {@inheritdoc} + * + * @see \Jaeger\Tracer::extract + * + * @param mixed $carrier + * @return SpanContext|null + * + * @throws Exception + */ + public function extract($carrier) + { + $traceId = null; + $spanId = null; + $parentId = null; + $flags = null; + $baggage = null; + $debugId = null; + + foreach ($carrier as $key => $value) { + $ucKey = strtolower($key); + + if ($ucKey === $this->traceIdHeader) { + if ($this->urlEncoding) { + $value = urldecode($value); + } + list($traceId, $spanId, $parentId, $flags) = + $this->spanContextFromString($value); + } elseif ($this->startsWith($ucKey, $this->baggagePrefix)) { + if ($this->urlEncoding) { + $value = urldecode($value); + } + $attrKey = substr($key, $this->prefixLength); + if ($baggage === null) { + $baggage = [strtolower($attrKey) => $value]; + } else { + $baggage[strtolower($attrKey)] = $value; + } + } elseif ($ucKey === $this->debugIdHeader) { + if ($this->urlEncoding) { + $value = urldecode($value); + } + $debugId = $value; + } + } + + if ($traceId === null && $baggage !== null) { + throw new Exception('baggage without trace ctx'); + } + + if ($traceId === null) { + if ($debugId !== null) { + return new SpanContext(null, null, null, null, [], $debugId); + } + return null; + } + + return new SpanContext($traceId, $spanId, $parentId, $flags, $baggage); + } + + /** + * Store a span context to a string. + * + * @param int $traceId + * @param int $spanId + * @param int $parentId + * @param int $flags + * @return string + */ + private function spanContextToString($traceId, $spanId, $parentId, $flags) + { + $parentId = $parentId ?? 0; + return sprintf('%x:%x:%x:%x', $traceId, $spanId, $parentId, $flags); + } + + /** + * Create a span context from a string. + * + * @param string $value + * @return array + * + * @throws Exception + */ + private function spanContextFromString($value): array + { + $parts = explode(':', $value); + + if (count($parts) != 4) { + throw new Exception('Malformed tracer state string.'); + } + + return [ + CodecUtility::hexToInt64($parts[0]), + CodecUtility::hexToInt64($parts[1]), + CodecUtility::hexToInt64($parts[2]), + $parts[3], + ]; + } + + /** + * Checks that a string ($haystack) starts with a given prefix ($needle). + * + * @param string $haystack + * @param string $needle + * @return bool + */ + private function startsWith(string $haystack, string $needle): bool + { + return substr($haystack, 0, strlen($needle)) == $needle; + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/ZipkinCodec.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/ZipkinCodec.php new file mode 100644 index 000000000..1ea5d7c0b --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Codec/ZipkinCodec.php @@ -0,0 +1,85 @@ +<?php + +namespace Jaeger\Codec; + +use Jaeger\SpanContext; + +use const Jaeger\DEBUG_FLAG; +use const Jaeger\SAMPLED_FLAG; + +class ZipkinCodec implements CodecInterface +{ + const SAMPLED_NAME = 'X-B3-Sampled'; + const TRACE_ID_NAME = 'X-B3-TraceId'; + const SPAN_ID_NAME = 'X-B3-SpanId'; + const PARENT_ID_NAME = 'X-B3-ParentSpanId'; + const FLAGS_NAME = 'X-B3-Flags'; + + /** + * {@inheritdoc} + * + * @see \Jaeger\Tracer::inject + * + * @param SpanContext $spanContext + * @param mixed $carrier + * + * @return void + */ + public function inject(SpanContext $spanContext, &$carrier) + { + $carrier[self::TRACE_ID_NAME] = dechex($spanContext->getTraceId()); + $carrier[self::SPAN_ID_NAME] = dechex($spanContext->getSpanId()); + if ($spanContext->getParentId() != null) { + $carrier[self::PARENT_ID_NAME] = dechex($spanContext->getParentId()); + } + $carrier[self::FLAGS_NAME] = (int) $spanContext->getFlags(); + } + + /** + * {@inheritdoc} + * + * @see \Jaeger\Tracer::extract + * + * @param mixed $carrier + * @return SpanContext|null + */ + public function extract($carrier) + { + $traceId = "0"; + $spanId = "0"; + $parentId = "0"; + $flags = 0; + + if (isset($carrier[strtolower(self::SAMPLED_NAME)])) { + if ($carrier[strtolower(self::SAMPLED_NAME)] === "1" || + strtolower($carrier[strtolower(self::SAMPLED_NAME)] === "true") + ) { + $flags = $flags | SAMPLED_FLAG; + } + } + + if (isset($carrier[strtolower(self::TRACE_ID_NAME)])) { + $traceId = CodecUtility::hexToInt64($carrier[strtolower(self::TRACE_ID_NAME)], 16, 10); + } + + if (isset($carrier[strtolower(self::PARENT_ID_NAME)])) { + $parentId = CodecUtility::hexToInt64($carrier[strtolower(self::PARENT_ID_NAME)], 16, 10); + } + + if (isset($carrier[strtolower(self::SPAN_ID_NAME)])) { + $spanId = CodecUtility::hexToInt64($carrier[strtolower(self::SPAN_ID_NAME)], 16, 10); + } + + if (isset($carrier[strtolower(self::FLAGS_NAME)])) { + if ($carrier[strtolower(self::FLAGS_NAME)] === "1") { + $flags = $flags | DEBUG_FLAG; + } + } + + if ($traceId != "0" && $spanId != "0") { + return new SpanContext($traceId, $spanId, $parentId, $flags); + } + + return null; + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Config.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Config.php new file mode 100644 index 000000000..28fb972da --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Config.php @@ -0,0 +1,390 @@ +<?php + +namespace Jaeger; + +use Exception; +use Jaeger\Reporter\CompositeReporter; +use Jaeger\Reporter\LoggingReporter; +use Jaeger\Reporter\ReporterInterface; +use Jaeger\ReporterFactory\JaegerHttpReporterFactory; +use Jaeger\ReporterFactory\JaegerReporterFactory; +use Jaeger\ReporterFactory\ZipkinReporterFactory; +use Jaeger\Sampler\ConstSampler; +use Jaeger\Sampler\ProbabilisticSampler; +use Jaeger\Sampler\RateLimitingSampler; +use Jaeger\Sampler\SamplerInterface; +use Jaeger\Util\RateLimiter; +use OpenTracing\GlobalTracer; +use Psr\Cache\CacheItemPoolInterface; +use Psr\Log\LoggerInterface; +use Psr\Log\NullLogger; + +class Config +{ + const IP_VERSION = "ip_version"; + + const ZIPKIN_OVER_COMPACT_UDP = "zipkin_over_compact_udp"; + const JAEGER_OVER_BINARY_UDP = "jaeger_over_binary_udp"; + const JAEGER_OVER_BINARY_HTTP = "jaeger_over_binary_http"; + + const IPV6 = "IPv6"; + const IPV4 = "IPv4"; + + /** + * @return string[] + */ + public static function getAvailableDispatchModes() + { + return [self::ZIPKIN_OVER_COMPACT_UDP, self::JAEGER_OVER_BINARY_UDP, self::JAEGER_OVER_BINARY_HTTP]; + } + + /** + * @var array + */ + private $config; + + /** + * @var string + */ + private $serviceName; + + /** + * @var bool + */ + private $initialized = false; + + /** + * @var LoggerInterface + */ + private $logger; + + /** + * @return LoggerInterface + */ + public function getLogger() + { + return $this->logger; + } + + /** + * @var CacheItemPoolInterface + */ + private $cache; + + /** + * Config constructor. + * @param array $config + * @param string|null $serviceName + * @param LoggerInterface|null $logger + * @param CacheItemPoolInterface|null $cache + * @throws Exception + */ + public function __construct( + array $config, + string $serviceName = null, + LoggerInterface $logger = null, + CacheItemPoolInterface $cache = null + ) { + $this->config = $config; + + $this->setConfigFromEnv(); + + if (empty($this->config["dispatch_mode"])) { + $this->config["dispatch_mode"] = self::ZIPKIN_OVER_COMPACT_UDP; + } + + if (empty($this->config[Config::IP_VERSION])) { + $this->config[Config::IP_VERSION] = self::IPV4; + } + + $this->serviceName = $this->config['service_name'] ?? $serviceName; + + if ($this->serviceName === null) { + throw new Exception('service_name required in the config or param.'); + } + + $this->logger = $logger ?: new NullLogger(); + $this->cache = $cache; + } + + /** + * @return Tracer|null + * @throws Exception + */ + public function initializeTracer() + { + if ($this->initialized) { + $this->logger->warning('Jaeger tracer already initialized, skipping'); + return null; + } + + $reporter = $this->getReporter(); + $sampler = $this->getSampler(); + + + $tracer = $this->createTracer($reporter, $sampler); + + $this->initializeGlobalTracer($tracer); + + return $tracer; + } + + /** + * @param ReporterInterface $reporter + * @param SamplerInterface $sampler + * @return Tracer + */ + public function createTracer(ReporterInterface $reporter, SamplerInterface $sampler): Tracer + { + return new Tracer( + $this->serviceName, + $reporter, + $sampler, + $this->shouldUseOneSpanPerRpc(), + $this->logger, + null, + $this->getTraceIdHeader(), + $this->getBaggageHeaderPrefix(), + $this->getDebugIdHeaderKey(), + $this->getConfiguredTags() + ); + } + + /** + * @return string + */ + public function getServiceName(): string + { + return $this->serviceName; + } + + /** + * @param Tracer $tracer + */ + private function initializeGlobalTracer(Tracer $tracer) + { + GlobalTracer::set($tracer); + $this->logger->debug('OpenTracing\GlobalTracer initialized to ' . $tracer->getServiceName()); + } + + /** + * @return bool + */ + private function getLogging(): bool + { + return (bool)($this->config['logging'] ?? false); + } + + /** + * @return ReporterInterface + */ + private function getReporter(): ReporterInterface + { + switch ($this->config["dispatch_mode"]) { + case self::JAEGER_OVER_BINARY_UDP: + $reporter = (new JaegerReporterFactory($this))->createReporter(); + break; + case self::ZIPKIN_OVER_COMPACT_UDP: + $reporter = (new ZipkinReporterFactory($this))->createReporter(); + break; + case self::JAEGER_OVER_BINARY_HTTP: + $reporter = (new JaegerHttpReporterFactory($this))->createReporter(); + break; + default: + throw new \RuntimeException( + sprintf( + "Unsupported `dispatch_mode` value: %s. Allowed values are: %s", + $this->config["dispatch_mode"], + implode(", ", Config::getAvailableDispatchModes()) + ) + ); + } + + if ($this->getLogging()) { + $reporter = new CompositeReporter($reporter, new LoggingReporter($this->logger)); + } + + return $reporter; + } + + /** + * @return SamplerInterface + * @throws \Psr\Cache\InvalidArgumentException + * @throws Exception + */ + private function getSampler(): SamplerInterface + { + $samplerConfig = $this->config['sampler'] ?? []; + $samplerType = $samplerConfig['type'] ?? null; + $samplerParam = $samplerConfig['param'] ?? null; + + if ($samplerType === null || $samplerType === SAMPLER_TYPE_REMOTE) { + // todo: implement remote sampling + return new ProbabilisticSampler((float)$samplerParam); + } elseif ($samplerType === SAMPLER_TYPE_CONST) { + return new ConstSampler($samplerParam ?? false); + } elseif ($samplerType === SAMPLER_TYPE_PROBABILISTIC) { + return new ProbabilisticSampler((float)$samplerParam); + } elseif ($samplerType === SAMPLER_TYPE_RATE_LIMITING) { + if (!$this->cache) { + throw new Exception('You cannot use RateLimitingSampler without cache component'); + } + $cacheConfig = $samplerConfig['cache'] ?? []; + return new RateLimitingSampler( + $samplerParam ?? 0, + new RateLimiter( + $this->cache, + $cacheConfig['currentBalanceKey'] ?? 'rate.currentBalance', + $cacheConfig['lastTickKey'] ?? 'rate.lastTick' + ) + ); + } + throw new Exception('Unknown sampler type ' . $samplerType); + } + + /** + * The UDP max buffer length. + * + * @return int + */ + public function getMaxBufferLength(): int + { + return (int)($this->config['max_buffer_length'] ?? 64000); + } + + /** + * @return string + */ + public function getLocalAgentReportingHost(): string + { + return $this->getLocalAgentGroup()['reporting_host'] ?? DEFAULT_REPORTING_HOST; + } + + /** + * @return int + */ + public function getLocalAgentReportingPort(): int + { + $port = $this->getLocalAgentGroup()['reporting_port'] ?? null; + if (empty($this->getLocalAgentGroup()['reporting_port'])) { + switch ($this->config['dispatch_mode']) { + case self::JAEGER_OVER_BINARY_UDP: + $port = DEFAULT_JAEGER_UDP_BINARY_REPORTING_PORT; + break; + case self::JAEGER_OVER_BINARY_HTTP: + $port = DEFAULT_JAEGER_HTTP_BINARY_REPORTING_PORT; + break; + default: + $port = DEFAULT_ZIPKIN_UDP_COMPACT_REPORTING_PORT; + } + } + return (int)$port; + } + + /** + * @return array + */ + private function getLocalAgentGroup(): array + { + return $this->config['local_agent'] ?? []; + } + + /** + * @return string + */ + private function getTraceIdHeader(): string + { + return $this->config['trace_id_header'] ?? TRACE_ID_HEADER; + } + + /** + * @return string + */ + private function getBaggageHeaderPrefix(): string + { + return $this->config['baggage_header_prefix'] ?? BAGGAGE_HEADER_PREFIX; + } + + /** + * @return string + */ + private function getDebugIdHeaderKey(): string + { + return $this->config['debug_id_header_key'] ?? DEBUG_ID_HEADER_KEY; + } + + /** + * Get a list of user-defined tags to be added to each span created by the tracer initialized by this config. + * @return string[] + */ + private function getConfiguredTags(): array + { + return $this->config['tags'] ?? []; + } + + /** + * Whether to follow the Zipkin model of using one span per RPC, + * as opposed to the model of using separate spans on the RPC client and server. + * Defaults to true. + * + * @return bool + */ + private function shouldUseOneSpanPerRpc(): bool + { + return $this->config['one_span_per_rpc'] ?? true; + } + + public function ipProtocolVersion(): string + { + return $this->config[self::IP_VERSION] ?? self::IPV4; + } + + /** + * Sets values from env vars into config props, unless ones has been already set. + */ + private function setConfigFromEnv() + { + // general + if (isset($_ENV['JAEGER_SERVICE_NAME']) && !isset($this->config['service_name'])) { + $this->config['service_name'] = $_ENV['JAEGER_SERVICE_NAME']; + } + + if (isset($_ENV['JAEGER_TAGS']) && !isset($this->config["tags"])) { + $this->config['tags'] = $_ENV['JAEGER_TAGS']; + } + + if (isset($_ENV['JAEGER_DISPATCH_MODE']) && !isset($this->config['dispatch_mode'])) { + $this->config['dispatch_mode'] = $_ENV['JAEGER_DISPATCH_MODE']; + } + + // reporting + if (isset($_ENV['JAEGER_AGENT_HOST']) && !isset($this->config['local_agent']['reporting_host'])) { + $this->config['local_agent']['reporting_host'] = $_ENV['JAEGER_AGENT_HOST']; + } + + if (isset($_ENV['JAEGER_AGENT_PORT']) && !isset($this->config['local_agent']['reporting_port'])) { + $this->config['local_agent']['reporting_port'] = intval($_ENV['JAEGER_AGENT_PORT']); + } + + if (isset($_ENV['JAEGER_REPORTER_LOG_SPANS']) && !isset($this->config['logging'])) { + $this->config['logging'] = filter_var($_ENV['JAEGER_REPORTER_LOG_SPANS'], FILTER_VALIDATE_BOOLEAN); + } + + if (isset($_ENV['JAEGER_REPORTER_MAX_QUEUE_SIZE']) && !isset($this->config['max_buffer_length'])) { + $this->config['max_buffer_length'] = intval($_ENV['JAEGER_REPORTER_MAX_QUEUE_SIZE']); + } + + // sampling + if (isset($_ENV['JAEGER_SAMPLER_TYPE']) && !isset($this->config['sampler']['type'])) { + $this->config['sampler']['type'] = $_ENV['JAEGER_SAMPLER_TYPE']; + } + + if (isset($_ENV['JAEGER_SAMPLER_PARAM']) && !isset($this->config['sampler']['param'])) { + $this->config['sampler']['param'] = $_ENV['JAEGER_SAMPLER_PARAM']; + } + + if (isset($_ENV['IP_VERSION']) && !isset($this->config[Config::IP_VERSION])) { + $this->config[Config::IP_VERSION] = $_ENV['IP_VERSION']; + } + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Constants.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Constants.php new file mode 100644 index 000000000..1e4be65f5 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Constants.php @@ -0,0 +1,100 @@ +<?php + +namespace Jaeger; + +// Max number of bits to use when generating random ID +const MAX_ID_BITS = 64; + +// How often remotely controller sampler polls for sampling strategy +const DEFAULT_SAMPLING_INTERVAL = 60; + +// How often remote reporter does a preemptive flush of its buffers +const DEFAULT_FLUSH_INTERVAL = 1; + +// Name of the HTTP header used to encode trace ID +const TRACE_ID_HEADER = 'uber-trace-id'; + +// Prefix for HTTP headers used to record baggage items +const BAGGAGE_HEADER_PREFIX = 'uberctx-'; + +// The name of HTTP header or a TextMap carrier key which, if found in the +// carrier, forces the trace to be sampled as "debug" trace. The value of the +// header is recorded as the tag on the # root span, so that the trace can +// be found in the UI using this value as a correlation ID. +const DEBUG_ID_HEADER_KEY = 'jaeger-debug-id'; + +const JAEGER_CLIENT_VERSION = 'PHP-' . PHP_VERSION; + +// Tracer-scoped tag that tells the version of Jaeger client library +const JAEGER_VERSION_TAG_KEY = 'jaeger.version'; + +// Tracer-scoped tag that contains the hostname +const JAEGER_HOSTNAME_TAG_KEY = 'jaeger.hostname'; + +const SAMPLER_TYPE_TAG_KEY = 'sampler.type'; + +const SAMPLER_PARAM_TAG_KEY = 'sampler.param'; + +const DEFAULT_SAMPLING_PROBABILITY = 0.001; + +const DEFAULT_LOWER_BOUND = 1.0 / (10.0 * 60.0); # sample once every 10 minutes + +const DEFAULT_MAX_OPERATIONS = 2000; + +const STRATEGIES_STR = 'perOperationStrategies'; + +const OPERATION_STR = 'operation'; + +const DEFAULT_LOWER_BOUND_STR = 'defaultLowerBoundTracesPerSecond'; + +const PROBABILISTIC_SAMPLING_STR = 'probabilisticSampling'; + +const SAMPLING_RATE_STR = 'samplingRate'; + +const DEFAULT_SAMPLING_PROBABILITY_STR = 'defaultSamplingProbability'; + +const OPERATION_SAMPLING_STR = 'operationSampling'; + +const MAX_TRACES_PER_SECOND_STR = 'maxTracesPerSecond'; + +const RATE_LIMITING_SAMPLING_STR = 'rateLimitingSampling'; + +const STRATEGY_TYPE_STR = 'strategyType'; + +// the type of sampler that always makes the same decision. +const SAMPLER_TYPE_CONST = 'const'; + +// the type of sampler that polls Jaeger agent for sampling strategy. +const SAMPLER_TYPE_REMOTE = 'remote'; + +// the type of sampler that samples traces with a certain fixed probability. +const SAMPLER_TYPE_PROBABILISTIC = 'probabilistic'; + +// the type of sampler that samples only up to a fixed number +// of traces per second. +// noinspection SpellCheckingInspection +const SAMPLER_TYPE_RATE_LIMITING = 'ratelimiting'; + +// the type of sampler that samples only up to a fixed number +// of traces per second. +// noinspection SpellCheckingInspection +const SAMPLER_TYPE_LOWER_BOUND = 'lowerbound'; + +const DEFAULT_REPORTING_HOST = 'localhost'; + +/** @deprecated */ +const DEFAULT_REPORTING_PORT = 5775; + +const DEFAULT_ZIPKIN_UDP_COMPACT_REPORTING_PORT = 5775; +const DEFAULT_JAEGER_UDP_BINARY_REPORTING_PORT = 6832; +const DEFAULT_JAEGER_HTTP_BINARY_REPORTING_PORT = 14268; + +const DEFAULT_SAMPLING_PORT = 5778; + +const LOCAL_AGENT_DEFAULT_ENABLED = true; + +const ZIPKIN_SPAN_FORMAT = 'zipkin-span-format'; + +const SAMPLED_FLAG = 0x01; + +const DEBUG_FLAG = 0x02; diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Mapper/SpanToJaegerMapper.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Mapper/SpanToJaegerMapper.php new file mode 100644 index 000000000..da5871904 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Mapper/SpanToJaegerMapper.php @@ -0,0 +1,171 @@ +<?php + +namespace Jaeger\Mapper; + +use Jaeger\Span; +use Jaeger\Thrift\Agent\Zipkin\AnnotationType; +use Jaeger\Thrift\Agent\Zipkin\BinaryAnnotation; +use Jaeger\Thrift\Log; +use Jaeger\Thrift\Span as JaegerThriftSpan; +use Jaeger\Thrift\Tag; +use Jaeger\Thrift\TagType; +use const OpenTracing\Tags\COMPONENT; +use const OpenTracing\Tags\PEER_HOST_IPV4; +use const OpenTracing\Tags\PEER_PORT; +use const OpenTracing\Tags\PEER_SERVICE; +use const OpenTracing\Tags\SPAN_KIND; + +class SpanToJaegerMapper +{ + private $specialSpanTags = ["jaeger.hostname", "jaeger.version"]; + + private $processTagsPrefix = "process."; + + /** + * @return string[] + */ + public function getSpecialSpanTags(): array + { + return $this->specialSpanTags; + } + + /** + * @return string + */ + public function getProcessTagsPrefix(): string + { + return $this->processTagsPrefix; + } + + public function mapSpanToJaeger(Span $span) : JaegerThriftSpan + { + $timestamp = $span->getStartTime(); + $duration = $span->getEndTime() - $span->getStartTime(); + + /** @var Tag[] $tags */ + $tags = []; + + $tags[] = new Tag([ + "key" => COMPONENT, + "vType" => TagType::STRING, + "vStr" => $span->getComponent() ?? $span->getTracer()->getServiceName(), + ]); + + // Handle special tags + $peerService = $span->peer['service_name'] ?? null; + if ($peerService !== null) { + $tags[] = new Tag([ + "key" => PEER_SERVICE, + "vType" => TagType::STRING, + "vStr" => $peerService, + ]); + } + + $peerHostIpv4 = $span->peer['ipv4'] ?? null; + if ($peerHostIpv4 !== null) { + $tags[] = new Tag([ + "key" => PEER_HOST_IPV4, + "vType" => TagType::STRING, + "vStr" => $peerHostIpv4, + ]); + } + + $peerPort = $span->peer['port'] ?? null; + if ($peerPort !== null) { + $tags[] = new Tag([ + "key" => PEER_PORT, + "vType" => TagType::LONG, + "vLong" => $peerPort, + ]); + } + + $spanKind = $span->getKind(); + if ($spanKind !== null) { + $tags[] = new Tag([ + "key" => SPAN_KIND, + "vType" => TagType::STRING, + "vStr" => $spanKind, + ]); + } + + /** @var BinaryAnnotation[] $binaryAnnotationTags */ + $binaryAnnotationTags = $span->getTags(); + foreach ($binaryAnnotationTags as $binaryAnnotationTag) { + if (in_array($binaryAnnotationTag->key, $this->specialSpanTags, true)) { + continue ; + } + + if (strpos($binaryAnnotationTag->key, $this->processTagsPrefix) === 0) { + continue; + } + + $type = ""; + $vkey = ""; + switch ($binaryAnnotationTag->annotation_type) { + case AnnotationType::BOOL: + $type = TagType::BOOL; + $vkey = "vBool"; + break; + case AnnotationType::BYTES: + $type = TagType::BINARY; + $vkey = "vBinary"; + break; + case AnnotationType::DOUBLE: + $type = TagType::DOUBLE; + $vkey = "vDouble"; + break; + case AnnotationType::I16: + case AnnotationType::I32: + case AnnotationType::I64: + $type = TagType::LONG; + $vkey = "vLong"; + break; + default: + $type = TagType::STRING; + $vkey = "vStr"; + } + + $tags[] = new Tag([ + "key" => $binaryAnnotationTag->key, + "vType" => $type, + $vkey => $binaryAnnotationTag->value, + ]); + } + + /** @var Log[] $logs */ + $logs = []; + + $spanLogs = $span->getLogs(); + + foreach ($spanLogs as $spanLog) { + /** @var Tag $fields */ + $fields = []; + + if (!empty($spanLog["fields"])) { + $fields[] = new Tag([ + "key" => "event", + "vType" => TagType::STRING, + "vStr" => json_encode($spanLog["fields"]) + ]); + } + + $logs[] = new Log([ + "timestamp" => $spanLog["timestamp"], + "fields" => $fields + ]); + } + + return new JaegerThriftSpan([ + "traceIdLow" => (int)$span->getContext()->getTraceId(), + "traceIdHigh" => 0, + "spanId" => (int)$span->getContext()->getSpanId(), + "parentSpanId" => (int)$span->getContext()->getParentId(), + "operationName" => $span->getOperationName(), + "startTime" => $timestamp, + "duration" => $duration, + "flags" => (int)$span->isDebug(), + "tags" => $tags, + "logs" => $logs + ]); + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/CompositeReporter.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/CompositeReporter.php new file mode 100644 index 000000000..78533cc76 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/CompositeReporter.php @@ -0,0 +1,51 @@ +<?php + +namespace Jaeger\Reporter; + +use Jaeger\Span; + +/** + * CompositeReporter delegates reporting to one or more underlying reporters. + */ +class CompositeReporter implements ReporterInterface +{ + /** + * @var ReporterInterface[] + */ + private $reporters; + + /** + * CompositeReporter constructor. + * + * @param ReporterInterface ...$reporters + */ + public function __construct(ReporterInterface ...$reporters) + { + $this->reporters = $reporters; + } + + /** + * {@inheritdoc} + * + * @param Span $span + * @return void + */ + public function reportSpan(Span $span) + { + foreach ($this->reporters as $reporter) { + $reporter->reportSpan($span); + } + } + + /** + * {@inheritdoc} + * + * @return void + */ + public function close() + { + foreach ($this->reporters as $reporter) { + $reporter->close(); + } + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/InMemoryReporter.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/InMemoryReporter.php new file mode 100644 index 000000000..8aabe2ee8 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/InMemoryReporter.php @@ -0,0 +1,47 @@ +<?php + +namespace Jaeger\Reporter; + +use Jaeger\Span; + +/** + * InMemoryReporter stores spans in memory and returns them via getSpans(). + */ +class InMemoryReporter implements ReporterInterface +{ + /** + * @var Span[] + */ + private $spans = []; + + /** + * {@inheritdoc} + * + * @param Span $span + * @return void + */ + public function reportSpan(Span $span) + { + $this->spans[] = $span; + } + + /** + * @return Span[] + */ + public function getSpans(): array + { + return $this->spans; + } + + /** + * {@inheritdoc} + * + * Only implemented to satisfy the sampler interface. + * + * @return void + */ + public function close() + { + // nothing to do + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/JaegerReporter.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/JaegerReporter.php new file mode 100644 index 000000000..999d69e0a --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/JaegerReporter.php @@ -0,0 +1,35 @@ +<?php + +namespace Jaeger\Reporter; + +use Jaeger\Sender\SenderInterface; +use Jaeger\Span; + +class JaegerReporter implements ReporterInterface +{ + /** + * @var SenderInterface + */ + private $sender; + + /** + * RemoteReporter constructor. + * + * @param SenderInterface $sender + */ + public function __construct(SenderInterface $sender) + { + $this->sender = $sender; + } + + public function reportSpan(Span $span) + { + $this->sender->append($span); + } + + public function close() + { + $this->sender->flush(); + $this->sender->close(); + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/LoggingReporter.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/LoggingReporter.php new file mode 100644 index 000000000..264ea94c5 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/LoggingReporter.php @@ -0,0 +1,51 @@ +<?php + +namespace Jaeger\Reporter; + +use Jaeger\Span; +use Psr\Log\LoggerInterface; +use Psr\Log\NullLogger; + +/** + * LoggingReporter logs all spans. + */ +class LoggingReporter implements ReporterInterface +{ + /** + * @var LoggerInterface + */ + private $logger; + + /** + * LoggingReporter constructor. + * + * @param LoggerInterface|null $logger + */ + public function __construct(LoggerInterface $logger = null) + { + $this->logger = $logger ?? new NullLogger(); + } + + /** + * {@inheritdoc} + * + * @param Span $span + * @return void + */ + public function reportSpan(Span $span) + { + $this->logger->debug('Reporting span ' . $span->getOperationName()); + } + + /** + * {@inheritdoc} + * + * Only implemented to satisfy the sampler interface. + * + * @return void + */ + public function close() + { + // nothing to do + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/NullReporter.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/NullReporter.php new file mode 100644 index 000000000..84a953bef --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/NullReporter.php @@ -0,0 +1,32 @@ +<?php + +namespace Jaeger\Reporter; + +use Jaeger\Span; + +/** + * NullReporter ignores all spans. + */ +class NullReporter implements ReporterInterface +{ + /** + * {@inheritdoc} + * + * @param Span $span + * @return void + */ + public function reportSpan(Span $span) + { + // nothing to do + } + + /** + * {@inheritdoc} + * + * @return void + */ + public function close() + { + // nothing to do + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/RemoteReporter.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/RemoteReporter.php new file mode 100644 index 000000000..9b78aa3d1 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/RemoteReporter.php @@ -0,0 +1,46 @@ +<?php + +namespace Jaeger\Reporter; + +use Jaeger\Sender\UdpSender; +use Jaeger\Span; + +class RemoteReporter implements ReporterInterface +{ + /** + * @var UdpSender + */ + private $transport; + + /** + * RemoteReporter constructor. + * + * @param UdpSender $transport + */ + public function __construct(UdpSender $transport) + { + $this->transport = $transport; + } + + /** + * {@inheritdoc} + * + * @param Span $span + * @return void + */ + public function reportSpan(Span $span) + { + $this->transport->append($span); + } + + /** + * {@inheritdoc} + * + * @return void + */ + public function close() + { + $this->transport->flush(); + $this->transport->close(); + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/ReporterInterface.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/ReporterInterface.php new file mode 100644 index 000000000..fea8a8713 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Reporter/ReporterInterface.php @@ -0,0 +1,28 @@ +<?php + +namespace Jaeger\Reporter; + +use Jaeger\Span; + +/** + * Uses to report finished span to something that collects those spans. + * + * @package Jaeger\Reporter + */ +interface ReporterInterface +{ + /** + * Report finished span. + * + * @param Span $span + * @return void + */ + public function reportSpan(Span $span); + + /** + * Release any resources used by the reporter and flushes/sends the data. + * + * @return void + */ + public function close(); +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/AbstractReporterFactory.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/AbstractReporterFactory.php new file mode 100644 index 000000000..e34adc5dc --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/AbstractReporterFactory.php @@ -0,0 +1,23 @@ +<?php + +namespace Jaeger\ReporterFactory; + +use Jaeger\Config; +use Thrift\Transport\TTransport; + +abstract class AbstractReporterFactory implements ReporterFactoryInterface +{ + /** + * @var Config + */ + protected $config; + + /** + * AbstractReporterFactory constructor. + * @param Config $config + */ + public function __construct($config) + { + $this->config = $config; + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/JaegerHttpReporterFactory.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/JaegerHttpReporterFactory.php new file mode 100644 index 000000000..038e81161 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/JaegerHttpReporterFactory.php @@ -0,0 +1,35 @@ +<?php + +namespace Jaeger\ReporterFactory; + +use Jaeger\AgentClient\HttpAgentClient; +use Jaeger\Reporter\JaegerReporter; +use Jaeger\Reporter\ReporterInterface; +use Jaeger\Sender\JaegerSender; +use Thrift\Exception\TTransportException; +use Thrift\Protocol\TBinaryProtocol; +use Thrift\Transport\THttpClient; + +class JaegerHttpReporterFactory extends AbstractReporterFactory implements ReporterFactoryInterface +{ + public function createReporter() : ReporterInterface + { + $transport = new THttpClient( + $this->config->getLocalAgentReportingHost(), + $this->config->getLocalAgentReportingPort(), + "/api/traces" + ); + + try { + $transport->open(); + } catch (TTransportException $e) { + $this->config->getLogger()->warning($e->getMessage()); + } + $protocol = new TBinaryProtocol($transport); + $client = new HttpAgentClient($protocol); + $this->config->getLogger()->debug('Initializing HTTP Jaeger Tracer with Jaeger.Thrift over Binary protocol'); + $sender = new JaegerSender($client, $this->config->getLogger()); + $sender->setMaxBufferLength($this->config->getMaxBufferLength()); + return new JaegerReporter($sender); + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/JaegerReporterFactory.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/JaegerReporterFactory.php new file mode 100644 index 000000000..9865884b5 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/JaegerReporterFactory.php @@ -0,0 +1,44 @@ +<?php + +namespace Jaeger\ReporterFactory; + +use Jaeger\AgentClient\HttpAgentClient; +use Jaeger\Reporter\JaegerReporter; +use Jaeger\Reporter\ReporterInterface; +use Jaeger\Sender\JaegerSender; +use Jaeger\Thrift\Agent\AgentClient; +use Jaeger\ThriftUdpTransport; +use Thrift\Exception\TTransportException; +use Thrift\Protocol\TBinaryProtocol; +use Thrift\Transport\TBufferedTransport; + +class JaegerReporterFactory extends AbstractReporterFactory implements ReporterFactoryInterface +{ + public function createReporter() : ReporterInterface + { + $udp = new ThriftUdpTransport( + $this->config->getLocalAgentReportingHost(), + $this->config->getLocalAgentReportingPort(), + $this->config->getLogger(), + $this->config + ); + + $transport = new TBufferedTransport( + $udp, + $this->config->getMaxBufferLength(), + $this->config->getMaxBufferLength() + ); + + try { + $transport->open(); + } catch (TTransportException $e) { + $this->config->getLogger()->warning($e->getMessage()); + } + $protocol = new TBinaryProtocol($transport); + $client = new AgentClient($protocol); + $this->config->getLogger()->debug('Initializing UDP Jaeger Tracer with Jaeger.Thrift over Binary protocol'); + $sender = new JaegerSender($client, $this->config->getLogger()); + $sender->setMaxBufferLength($this->config->getMaxBufferLength()); + return new JaegerReporter($sender); + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/ReporterFactoryInterface.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/ReporterFactoryInterface.php new file mode 100644 index 000000000..4bfd3204f --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/ReporterFactoryInterface.php @@ -0,0 +1,10 @@ +<?php + +namespace Jaeger\ReporterFactory; + +use Jaeger\Reporter\ReporterInterface; + +interface ReporterFactoryInterface +{ + public function createReporter() : ReporterInterface; +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/ZipkinReporterFactory.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/ZipkinReporterFactory.php new file mode 100644 index 000000000..736977b4d --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/ZipkinReporterFactory.php @@ -0,0 +1,46 @@ +<?php + +namespace Jaeger\ReporterFactory; + +use Jaeger\Reporter\JaegerReporter; +use Jaeger\Reporter\RemoteReporter; +use Jaeger\Reporter\ReporterInterface; +use Jaeger\Sender\JaegerSender; +use Jaeger\Sender\UdpSender; +use Jaeger\Thrift\Agent\AgentClient; +use Jaeger\ThriftUdpTransport; +use Thrift\Exception\TTransportException; +use Thrift\Protocol\TBinaryProtocol; +use Thrift\Protocol\TCompactProtocol; +use Thrift\Transport\TBufferedTransport; +use Thrift\Transport\TTransport; + +class ZipkinReporterFactory extends AbstractReporterFactory implements ReporterFactoryInterface +{ + public function createReporter() : ReporterInterface + { + $udp = new ThriftUdpTransport( + $this->config->getLocalAgentReportingHost(), + $this->config->getLocalAgentReportingPort(), + $this->config->getLogger(), + $this->config + ); + + $transport = new TBufferedTransport( + $udp, + $this->config->getMaxBufferLength(), + $this->config->getMaxBufferLength() + ); + + try { + $transport->open(); + } catch (TTransportException $e) { + $this->config->getLogger()->warning($e->getMessage()); + } + $protocol = new TCompactProtocol($transport); + $client = new AgentClient($protocol); + $this->config->getLogger()->debug('Initializing UDP Jaeger Tracer with Zipkin.Thrift over Compact protocol'); + $sender = new UdpSender($client, $this->config->getMaxBufferLength(), $this->config->getLogger()); + return new RemoteReporter($sender); + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/ConstSampler.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/ConstSampler.php new file mode 100644 index 000000000..7c6ba3d62 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/ConstSampler.php @@ -0,0 +1,68 @@ +<?php + +namespace Jaeger\Sampler; + +use const Jaeger\SAMPLER_PARAM_TAG_KEY; +use const Jaeger\SAMPLER_TYPE_CONST; +use const Jaeger\SAMPLER_TYPE_TAG_KEY; + +/** + * ConstSampler always returns the same decision. + * + * @package Jaeger\Sampler + */ +class ConstSampler implements SamplerInterface +{ + /** + * Whether or not the new trace should be sampled. + * + * @var bool + */ + private $decision; + + /** + * A list of the sampler tags. + * + * @var array + */ + private $tags = []; + + /** + * ConstSampler constructor. + * + * @param bool $decision + */ + public function __construct(bool $decision = true) + { + $this->tags = [ + SAMPLER_TYPE_TAG_KEY => SAMPLER_TYPE_CONST, + SAMPLER_PARAM_TAG_KEY => $decision, + ]; + + $this->decision = $decision; + } + + /** + * {@inheritdoc} + * + * @param string $traceId The traceId on the span. + * @param string $operation The operation name set on the span. + * @return array + */ + public function isSampled(string $traceId, string $operation = ''): array + { + return [$this->decision, $this->tags]; + } + + /** + * {@inheritdoc} + * + * Only implemented to satisfy the sampler interface. + * + * @return void + */ + public function close() + { + // nothing to do + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/ProbabilisticSampler.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/ProbabilisticSampler.php new file mode 100644 index 000000000..cb265d01e --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/ProbabilisticSampler.php @@ -0,0 +1,88 @@ +<?php + +namespace Jaeger\Sampler; + +use OutOfBoundsException; +use const Jaeger\SAMPLER_PARAM_TAG_KEY; +use const Jaeger\SAMPLER_TYPE_PROBABILISTIC; +use const Jaeger\SAMPLER_TYPE_TAG_KEY; + +/** + * A sampler that randomly samples a certain percentage of traces specified + * by the samplingRate, in the range between 0.0 and 1.0. + * + * @package Jaeger\Sampler + */ +class ProbabilisticSampler implements SamplerInterface +{ + /** + * The sampling rate rate between 0.0 and 1.0. + * + * @var float + */ + private $rate; + + /** + * A list of the sampler tags. + * + * @var array + */ + private $tags = []; + + /** + * The boundary of the sample sampling rate. + * + * @var float + */ + private $boundary; + + /** + * ProbabilisticSampler constructor. + * + * @param float $rate + * @throws OutOfBoundsException + */ + public function __construct(float $rate) + { + $this->tags = [ + SAMPLER_TYPE_TAG_KEY => SAMPLER_TYPE_PROBABILISTIC, + SAMPLER_PARAM_TAG_KEY => $rate, + ]; + + if ($rate < 0.0 || $rate > 1.0) { + throw new OutOfBoundsException('Sampling rate must be between 0.0 and 1.0.'); + } + + $this->rate = $rate; + if ($rate < 0.5) { + $this->boundary = (int)($rate * PHP_INT_MAX); + } else { + // more precise calculation due to int and float having different precision near PHP_INT_MAX + $this->boundary = PHP_INT_MAX - (int)((1 - $rate) * PHP_INT_MAX); + } + } + + /** + * {@inheritdoc} + * + * @param string $traceId The traceId on the span. + * @param string $operation The operation name set on the span. + * @return array + */ + public function isSampled(string $traceId, string $operation = ''): array + { + return [($traceId < $this->boundary), $this->tags]; + } + + /** + * {@inheritdoc} + * + * Only implemented to satisfy the sampler interface. + * + * @return void + */ + public function close() + { + // nothing to do + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/RateLimitingSampler.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/RateLimitingSampler.php new file mode 100644 index 000000000..d0ea0f180 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/RateLimitingSampler.php @@ -0,0 +1,62 @@ +<?php + +namespace Jaeger\Sampler; + +use Jaeger\Util\RateLimiter; + +use const Jaeger\SAMPLER_PARAM_TAG_KEY; +use const Jaeger\SAMPLER_TYPE_RATE_LIMITING; +use const Jaeger\SAMPLER_TYPE_TAG_KEY; + +class RateLimitingSampler implements SamplerInterface +{ + /** + * @var RateLimiter + */ + private $rateLimiter; + + /** + * A list of the sampler tags. + * + * @var array + */ + private $tags = []; + + public function __construct($maxTracesPerSecond, RateLimiter $rateLimiter) + { + $this->tags = [ + SAMPLER_TYPE_TAG_KEY => SAMPLER_TYPE_RATE_LIMITING, + SAMPLER_PARAM_TAG_KEY => $maxTracesPerSecond, + ]; + + $maxTracesPerNanosecond = $maxTracesPerSecond / 1000000000.0; + $this->rateLimiter = $rateLimiter; + $this->rateLimiter->initialize($maxTracesPerNanosecond, $maxTracesPerSecond > 1.0 ? 1.0 : $maxTracesPerSecond); + } + + /** + * Whether or not the new trace should be sampled. + * + * Implementations should return an array in the format [$decision, $tags]. + * + * @param string $traceId The traceId on the span. + * @param string $operation The operation name set on the span. + * @return array + */ + public function isSampled(string $traceId = '', string $operation = '') + { + return [$this->rateLimiter->checkCredit(1.0), $this->tags]; + } + + /** + * {@inheritdoc} + * + * Only implemented to satisfy the sampler interface. + * + * @return void + */ + public function close() + { + // nothing to do + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/SamplerInterface.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/SamplerInterface.php new file mode 100644 index 000000000..b6d44e783 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sampler/SamplerInterface.php @@ -0,0 +1,29 @@ +<?php + +namespace Jaeger\Sampler; + +/** + * Sampler is responsible for deciding if a new trace should be sampled and captured for storage. + * + * @package Jaeger\Sampler + */ +interface SamplerInterface +{ + /** + * Whether or not the new trace should be sampled. + * + * Implementations should return an array in the format [$decision, $tags]. + * + * @param string $traceId The traceId on the span. + * @param string $operation The operation name set on the span. + * @return array + */ + public function isSampled(string $traceId, string $operation); + + /** + * Release any resources used by the sampler. + * + * @return void + */ + public function close(); +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Scope.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Scope.php new file mode 100644 index 000000000..86511bae0 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Scope.php @@ -0,0 +1,71 @@ +<?php + +namespace Jaeger; + +use OpenTracing\Scope as OTScope; +use OpenTracing\Span as OTSpan; + +/** + * {@inheritdoc} + */ +class Scope implements OTScope +{ + /** + * @var ScopeManager + */ + private $scopeManager; + + /** + * @var OTSpan + */ + private $wrapped; + + /** + * @var OTScope|null + */ + private $toRestore; + + /** + * @var bool + */ + private $finishSpanOnClose; + + /** + * Scope constructor. + * @param ScopeManager $scopeManager + * @param OTSpan $wrapped + * @param bool $finishSpanOnClose + */ + public function __construct(ScopeManager $scopeManager, OTSpan $wrapped, bool $finishSpanOnClose) + { + $this->scopeManager = $scopeManager; + $this->wrapped = $wrapped; + $this->finishSpanOnClose = $finishSpanOnClose; + $this->toRestore = $scopeManager->getActive(); + } + + /** + * {@inheritdoc} + */ + public function close(): void + { + if ($this->scopeManager->getActive() !== $this) { + // This shouldn't happen if users call methods in expected order + return; + } + + if ($this->finishSpanOnClose) { + $this->wrapped->finish(); + } + + $this->scopeManager->setActive($this->toRestore); + } + + /** + * {@inheritdoc} + */ + public function getSpan(): OTSpan + { + return $this->wrapped; + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ScopeManager.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ScopeManager.php new file mode 100644 index 000000000..eb5c27676 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ScopeManager.php @@ -0,0 +1,45 @@ +<?php + +namespace Jaeger; + +use OpenTracing\ScopeManager as OTScopeManager; +use OpenTracing\Span as OTSpan; +use OpenTracing\Scope as OTScope; + +/** + * {@inheritdoc} + */ +class ScopeManager implements OTScopeManager +{ + /** + * @var OTScope + */ + private $active; + + /** + * {@inheritdoc} + */ + public function activate(OTSpan $span, bool $finishSpanOnClose = self::DEFAULT_FINISH_SPAN_ON_CLOSE): OTScope + { + $this->active = new Scope($this, $span, $finishSpanOnClose); + + return $this->active; + } + + /** + * {@inheritdoc} + */ + public function getActive(): ?OTScope + { + return $this->active; + } + + /** + * Sets the scope as active. + * @param OTScope|null $scope + */ + public function setActive(OTScope $scope = null) + { + $this->active = $scope; + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sender/JaegerSender.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sender/JaegerSender.php new file mode 100644 index 000000000..dfce510b8 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sender/JaegerSender.php @@ -0,0 +1,236 @@ +<?php + + +namespace Jaeger\Sender; + +use Jaeger\Mapper\SpanToJaegerMapper; +use Jaeger\Span as JaegerSpan; +use Jaeger\Thrift\Agent\AgentClient; +use Jaeger\Thrift\Agent\AgentIf; +use Jaeger\Thrift\Batch; +use Jaeger\Thrift\Process; +use Jaeger\Thrift\Span as JaegerThriftSpan; +use Jaeger\Thrift\Tag; +use Jaeger\Thrift\TagType; +use Jaeger\Tracer; +use Psr\Log\LoggerInterface; +use Psr\Log\NullLogger; +use Thrift\Protocol\TBinaryProtocol; +use Thrift\Protocol\TCompactProtocol; +use Thrift\Transport\TMemoryBuffer; +use const Jaeger\JAEGER_HOSTNAME_TAG_KEY; + +class JaegerSender implements SenderInterface +{ + /** + * @var JaegerSpan[] + */ + private $spans = []; + + /** + * @var AgentIf + */ + private $agentClient; + + /** + * @var LoggerInterface + */ + private $logger; + + /** + * @var Tracer + */ + private $tracer; + + /** + * @var SpanToJaegerMapper + */ + private $mapper; + + /** + * @var int + */ + private $jaegerBatchOverheadLength = 512; + + /** + * The maximum length of the thrift-objects for a jaeger-batch. + * + * @var int + */ + private $maxBufferLength = 64000; + + /** + * @param AgentIf $agentClient + * @param LoggerInterface|null $logger + * @param SpanToJaegerMapper|null $mapper + */ + public function __construct( + AgentIf $agentClient, + LoggerInterface $logger = null, + SpanToJaegerMapper $mapper = null + ) { + $this->agentClient = $agentClient; + $this->logger = $logger ?? new NullLogger(); + $this->mapper = $mapper ?? new SpanToJaegerMapper(); + } + + + public function flush(): int + { + $count = count($this->spans); + if ($count === 0) { + return 0; + } + + $jaegerThriftSpans = $this->makeJaegerBatch($this->spans); + + try { + $this->send($jaegerThriftSpans); + } catch (\Exception $e) { + $this->logger->warning($e->getMessage()); + } + + $this->spans = []; + + return $count; + } + + public function setMaxBufferLength($maxBufferLength) + { + $this->maxBufferLength = $maxBufferLength; + } + + /** + * @param JaegerSpan[] $spans + * @return array + */ + private function makeJaegerBatch(array $spans) : array + { + /** @var JaegerThriftSpan[] $jaegerSpans */ + $jaegerSpans = []; + + foreach ($spans as $span) { + if (empty($this->tracer)) { + $this->tracer = $span->getTracer(); + } + + $jaegerSpans[] = $this->mapper->mapSpanToJaeger($span); + } + + return $jaegerSpans; + } + + /** + * @param JaegerThriftSpan[] $spans + */ + private function send(array $spans) + { + if (empty($this->tracer)) { + return ; + } + + $chunks = $this->chunkSplit($spans); + foreach ($chunks as $chunk) { + /** @var JaegerThriftSpan[] $chunk */ + $this->emitJaegerBatch($chunk); + } + } + + /** + * @param JaegerThriftSpan $span + */ + private function getBufferLength($span) + { + $memoryBuffer = new TMemoryBuffer(); + $span->write(new TBinaryProtocol($memoryBuffer)); + return $memoryBuffer->available(); + } + + private function chunkSplit(array $spans): array + { + $actualBufferSize = $this->jaegerBatchOverheadLength; + $chunkId = 0; + $chunks = []; + + foreach ($spans as $span) { + $spanBufferLength = $this->getBufferLength($span); + if (!empty($chunks[$chunkId]) && ($actualBufferSize + $spanBufferLength) > $this->maxBufferLength) { + // point to next chunk + ++$chunkId; + + // reset buffer size + $actualBufferSize = $this->jaegerBatchOverheadLength; + } + + if (!isset($chunks[$chunkId])) { + $chunks[$chunkId] = []; + } + + $chunks[$chunkId][] = $span; + $actualBufferSize += $spanBufferLength; + } + + return $chunks; + } + + protected function emitJaegerBatch(array $spans) + { + /** @var Tag[] $tags */ + $tags = []; + + foreach ($this->tracer->getTags() as $k => $v) { + if (!in_array($k, $this->mapper->getSpecialSpanTags())) { + if (strpos($k, $this->mapper->getProcessTagsPrefix()) !== 0) { + continue ; + } + + $quoted = preg_quote($this->mapper->getProcessTagsPrefix()); + $k = preg_replace(sprintf('/^%s/', $quoted), '', $k); + } + + if ($k === JAEGER_HOSTNAME_TAG_KEY) { + $k = "hostname"; + } + + $tags[] = new Tag([ + "key" => $k, + "vType" => TagType::STRING, + "vStr" => $v + ]); + } + + $tags[] = new Tag([ + "key" => "format", + "vType" => TagType::STRING, + "vStr" => "jaeger.thrift" + ]); + + $tags[] = new Tag([ + "key" => "ip", + "vType" => TagType::STRING, + "vStr" => $this->tracer->getIpAddress() + ]); + + $batch = new Batch([ + "spans" => $spans, + "process" => new Process([ + "serviceName" => $this->tracer->getServiceName(), + "tags" => $tags + ]) + ]); + + $this->agentClient->emitBatch($batch); + } + + /** + * @param JaegerSpan $span + */ + public function append(JaegerSpan $span) + { + $this->spans[] = $span; + } + + public function close() + { + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sender/SenderInterface.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sender/SenderInterface.php new file mode 100644 index 000000000..24dc4fbfa --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sender/SenderInterface.php @@ -0,0 +1,12 @@ +<?php + +namespace Jaeger\Sender; + +use Jaeger\Span as JaegerSpan; + +interface SenderInterface +{ + public function flush(): int; + public function append(JaegerSpan $span); + public function close(); +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sender/UdpSender.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sender/UdpSender.php new file mode 100644 index 000000000..ff0e4cf3e --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Sender/UdpSender.php @@ -0,0 +1,305 @@ +<?php + +namespace Jaeger\Sender; + +use Exception; +use Jaeger\Thrift\Agent\AgentClient; +use Jaeger\Thrift\Agent\Zipkin\Annotation; +use Jaeger\Thrift\Agent\Zipkin\AnnotationType; +use Jaeger\Thrift\Agent\Zipkin\BinaryAnnotation; +use Jaeger\Thrift\Agent\Zipkin\Endpoint; +use Jaeger\Thrift\Agent\Zipkin\Span as ThriftSpan; +use Psr\Log\LoggerInterface; +use Psr\Log\NullLogger; +use Thrift\Base\TBase; +use Thrift\Protocol\TCompactProtocol; +use Thrift\Transport\TMemoryBuffer; +use Jaeger\Span as JaegerSpan; + +use const OpenTracing\Tags\COMPONENT; + +class UdpSender +{ + const CLIENT_ADDR = "ca"; + const SERVER_ADDR = "sa"; + + /** + * @var JaegerSpan[] + */ + private $spans = []; + + /** + * @var AgentClient + */ + private $client; + + /** + * @var LoggerInterface + */ + private $logger; + + /** + * The maximum length of the thrift-objects for a zipkin-batch. + * + * @var int + */ + private $maxBufferLength; + + /** + * The length of the zipkin-batch overhead. + * + * @var int + */ + private $zipkinBatchOverheadLength = 30; + + /** + * UdpSender constructor. + * + * @param AgentClient $client + * @param int $maxBufferLength + * @param LoggerInterface|null $logger + */ + public function __construct( + AgentClient $client, + int $maxBufferLength, + LoggerInterface $logger = null + ) { + $this->client = $client; + $this->maxBufferLength = $maxBufferLength; + $this->logger = $logger ?? new NullLogger(); + } + + /** + * @param JaegerSpan $span + */ + public function append(JaegerSpan $span) + { + $this->spans[] = $span; + } + + /** + * @return int the number of flushed spans + */ + public function flush(): int + { + $count = count($this->spans); + if ($count === 0) { + return 0; + } + + $zipkinSpans = $this->makeZipkinBatch($this->spans); + + try { + $this->send($zipkinSpans); + } catch (Exception $e) { + $this->logger->warning($e->getMessage()); + } + + $this->spans = []; + + return $count; + } + + public function close() + { + } + + /** + * Emits the thrift-objects. + * + * @param array|ThriftSpan[]|TBase[] $thrifts + */ + private function send(array $thrifts) + { + foreach ($this->chunkSplit($thrifts) as $chunk) { + /* @var $chunk ThriftSpan[] */ + $this->client->emitZipkinBatch($chunk); + } + } + + /** + * @param JaegerSpan[] $spans + * @return ThriftSpan[] + */ + private function makeZipkinBatch(array $spans): array + { + /** @var ThriftSpan[] */ + $zipkinSpans = []; + + foreach ($spans as $span) { + /** @var JaegerSpan $span */ + + $endpoint = $this->makeEndpoint( + $span->getTracer()->getIpAddress(), + 0, // span.port, + $span->getTracer()->getServiceName() + ); + + $timestamp = $span->getStartTime(); + $duration = $span->getEndTime() - $span->getStartTime(); + + $this->addZipkinAnnotations($span, $endpoint); + + $zipkinSpan = new ThriftSpan([ + 'name' => $span->getOperationName(), + 'id' => $span->getContext()->getSpanId(), + 'parent_id' => $span->getContext()->getParentId() ?? null, + 'trace_id' => $span->getContext()->getTraceId(), + 'annotations' => $this->createAnnotations($span, $endpoint), + 'binary_annotations' => $span->getTags(), + 'debug' => $span->isDebug(), + 'timestamp' => $timestamp, + 'duration' => $duration, + ]); + + $zipkinSpans[] = $zipkinSpan; + } + + return $zipkinSpans; + } + + private function addZipkinAnnotations(JaegerSpan $span, Endpoint $endpoint) + { + if ($span->isRpc() && $span->peer) { + $isClient = $span->isRpcClient(); + + $host = $this->makeEndpoint( + $span->peer['ipv4'] ?? 0, + $span->peer['port'] ?? 0, + $span->peer['service_name'] ?? '' + ); + + $key = ($isClient) ? self::SERVER_ADDR : self::CLIENT_ADDR; + + $peer = $this->makePeerAddressTag($key, $host); + $span->tags[$key] = $peer; + } else { + $tag = $this->makeLocalComponentTag( + $span->getComponent() ?? $span->getTracer()->getServiceName(), + $endpoint + ); + + $span->tags[COMPONENT] = $tag; + } + } + + private function makeLocalComponentTag(string $componentName, Endpoint $endpoint): BinaryAnnotation + { + return new BinaryAnnotation([ + 'key' => "lc", + 'value' => $componentName, + 'annotation_type' => AnnotationType::STRING, + 'host' => $endpoint, + ]); + } + + private function makeEndpoint(string $ipv4, int $port, string $serviceName): Endpoint + { + $ipv4 = $this->ipv4ToInt($ipv4); + + return new Endpoint([ + 'ipv4' => $ipv4, + 'port' => $port, + 'service_name' => $serviceName, + ]); + } + + private function ipv4ToInt(string $ipv4): int + { + if ($ipv4 == 'localhost') { + $ipv4 = '127.0.0.1'; + } elseif ($ipv4 == '::1') { + $ipv4 = '127.0.0.1'; + } + + $long = ip2long($ipv4); + if (PHP_INT_SIZE === 8) { + return $long >> 31 ? $long - (1 << 32) : $long; + } + return $long; + } + + // Used for Zipkin binary annotations like CA/SA (client/server address). + // They are modeled as Boolean type with '0x01' as the value. + private function makePeerAddressTag(string $key, Endpoint $host): BinaryAnnotation + { + return new BinaryAnnotation([ + "key" => $key, + "value" => '0x01', + "annotation_type" => AnnotationType::BOOL, + "host" => $host, + ]); + } + + /** + * Splits an array of thrift-objects into several chunks when the buffer limit has been reached. + * + * @param array|ThriftSpan[]|TBase[] $thrifts + * + * @return array + */ + private function chunkSplit(array $thrifts): array + { + $actualBufferSize = $this->zipkinBatchOverheadLength; + $chunkId = 0; + $chunks = []; + + foreach ($thrifts as $thrift) { + $spanBufferLength = $this->getBufferLength($thrift); + + if (!empty($chunks[$chunkId]) && ($actualBufferSize + $spanBufferLength) > $this->maxBufferLength) { + // point to next chunk + ++$chunkId; + + // reset buffer size + $actualBufferSize = $this->zipkinBatchOverheadLength; + } + + if (!isset($chunks[$chunkId])) { + $chunks[$chunkId] = []; + } + + $chunks[$chunkId][] = $thrift; + $actualBufferSize += $spanBufferLength; + } + + return $chunks; + } + + /** + * Returns the length of a thrift-object. + * + * @param ThriftSpan|TBase $thrift + * + * @return int + */ + private function getBufferLength($thrift): int + { + $memoryBuffer = new TMemoryBuffer(); + + $thrift->write(new TCompactProtocol($memoryBuffer)); + + return $memoryBuffer->available(); + } + + /* + * @param JaegerSpan $span + * @param Endpoint $endpoint + * + * @return array|Annotation[] + */ + private function createAnnotations(JaegerSpan $span, Endpoint $endpoint): array + { + $annotations = []; + + foreach ($span->getLogs() as $values) { + $annotations[] = new Annotation([ + 'timestamp' => $values['timestamp'], + 'value' => json_encode($values['fields']), + 'host' => $endpoint, + ]); + } + + return $annotations; + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Span.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Span.php new file mode 100644 index 000000000..abcb07c89 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Span.php @@ -0,0 +1,476 @@ +<?php + +namespace Jaeger; + +use Jaeger\Thrift\Agent\Zipkin\AnnotationType; +use Jaeger\Thrift\Agent\Zipkin\BinaryAnnotation; +use OpenTracing\Span as OTSpan; +use DateTime; +use DateTimeInterface; +use OpenTracing\SpanContext as OTSpanContext; +use const OpenTracing\Tags\COMPONENT; +use const OpenTracing\Tags\PEER_HOST_IPV4; +use const OpenTracing\Tags\PEER_PORT; +use const OpenTracing\Tags\PEER_SERVICE; +use const OpenTracing\Tags\SPAN_KIND; +use const OpenTracing\Tags\SPAN_KIND_MESSAGE_BUS_CONSUMER; +use const OpenTracing\Tags\SPAN_KIND_MESSAGE_BUS_PRODUCER; +use const OpenTracing\Tags\SPAN_KIND_RPC_CLIENT; +use const OpenTracing\Tags\SPAN_KIND_RPC_SERVER; + +class Span implements OTSpan +{ + /** + * @var Tracer + */ + private $tracer; + + /** + * @var SpanContext + */ + private $context; + + /** + * @var string + */ + private $operationName; + + /** + * @var int|float|DateTime|null + */ + private $startTime; + + /** + * @var int|float|DateTime|null + */ + private $endTime; + + /** + * SPAN_RPC_CLIENT + * @var null|string + */ + private $kind; + + /** + * @var array|null + */ + public $peer; + + /** + * @var string|null + */ + private $component; + + /** + * @var array + */ + private $logs = []; + + /** + * @var BinaryAnnotation[] + */ + public $tags = []; + + /** + * @var bool + */ + private $debug = false; + + /** + * Span constructor. + * @param SpanContext $context + * @param Tracer $tracer + * @param string $operationName + * @param array $tags + * @param int|float|DateTime|null $startTime + */ + public function __construct( + SpanContext $context, + Tracer $tracer, + string $operationName, + array $tags = [], + $startTime = null + ) { + $this->context = $context; + $this->tracer = $tracer; + + $this->operationName = $operationName; + $this->startTime = $this->microTime($startTime); + $this->endTime = null; + $this->kind = null; + $this->peer = null; + $this->component = null; + + foreach ($tags as $key => $value) { + $this->setTag($key, $value); + } + } + + /** + * Converts time to microtime int + * - int represents microseconds + * - float represents seconds + * + * @param int|float|DateTime|null $time + * @return int + */ + protected function microTime($time): int + { + if ($time === null) { + return $this->timestampMicro(); + } + + if ($time instanceof \DateTimeInterface) { + return (int)round($time->format('U.u') * 1000000, 0); + } + + if (is_int($time)) { + return $time; + } + + if (is_float($time)) { + return (int)round($time * 1000000, 0); + } + + throw new \InvalidArgumentException(sprintf( + 'Time should be one of the types int|float|DateTime|null, got %s.', + gettype($time) + )); + } + + /** + * @return Tracer + */ + public function getTracer(): Tracer + { + return $this->tracer; + } + + /** + * @return bool + */ + public function isDebug(): bool + { + return $this->debug; + } + + /** + * @return int + */ + public function getStartTime(): int + { + return $this->startTime; + } + + /** + * @return int|null + */ + public function getEndTime() + { + return $this->endTime; + } + + /** + * @return string + */ + public function getOperationName(): string + { + return $this->operationName; + } + + /** + * @return mixed + */ + public function getComponent() + { + // TODO + return $this->component; + } + + /** + * {@inheritdoc} + * + * @return SpanContext + */ + public function getContext(): OTSpanContext + { + return $this->context; + } + + /** + * {@inheritdoc} + */ + public function finish($finishTime = null, array $logRecords = []): void + { + if (!$this->isSampled()) { + return; + } + + foreach ($logRecords as $logRecord) { + $this->log($logRecord); + } + + $this->endTime = $this->microTime($finishTime); + $this->tracer->reportSpan($this); + } + + /** + * Returns true if the trace should be measured. + * + * @return bool + */ + public function isSampled(): bool + { + $context = $this->getContext(); + + return ($context->getFlags() & SAMPLED_FLAG) == SAMPLED_FLAG; + } + + /** + * {@inheritdoc} + */ + public function overwriteOperationName(string $newOperationName): void + { + // TODO log warning + $this->operationName = $newOperationName; + } + + /** + * {@inheritdoc} + * + * @param array $tags + * @return void + */ + public function setTags($tags) + { + foreach ($tags as $key => $value) { + $this->setTag($key, $value); + } + } + + /** + * {@inheritdoc} + */ + public function setTag(string $key, $value): void + { + if ($this->isSampled()) { + $special = self::SPECIAL_TAGS[$key] ?? null; + $handled = false; + + if ($special !== null && is_callable([$this, $special])) { + $handled = $this->$special($value); + } + + if (!$handled) { + $tag = $this->makeTag($key, $value); + $this->tags[$key] = $tag; + } + } + } + + const SPECIAL_TAGS = [ + PEER_SERVICE => 'setPeerService', + PEER_HOST_IPV4 => 'setPeerHostIpv4', + PEER_PORT => 'setPeerPort', + SPAN_KIND => 'setSpanKind', + COMPONENT => 'setComponent', + ]; + + /** + * Sets a low-cardinality identifier of the module, library, + * or package that is generating a span. + * + * @see Span::setTag() + * + * @param string $value + * @return bool + */ + private function setComponent($value): bool + { + $this->component = $value; + return true; + } + + /** + * @return bool + */ + private function setSpanKind($value): bool + { + $validSpanKinds = [ + SPAN_KIND_RPC_CLIENT, + SPAN_KIND_RPC_SERVER, + SPAN_KIND_MESSAGE_BUS_CONSUMER, + SPAN_KIND_MESSAGE_BUS_PRODUCER, + ]; + + if ($value === null || in_array($value, $validSpanKinds, true)) { + $this->kind = $value; + return true; + } + return false; + } + + /** + * @return string|null + */ + public function getKind(): ?string + { + return $this->kind; + } + + /** + * @return bool + */ + private function setPeerPort($value): bool + { + if ($this->peer === null) { + $this->peer = ['port' => $value]; + } else { + $this->peer['port'] = $value; + } + return true; + } + + /** + * @return bool + */ + private function setPeerHostIpv4($value): bool + { + if ($this->peer === null) { + $this->peer = ['ipv4' => $value]; + } else { + $this->peer['ipv4'] = $value; + } + return true; + } + + /** + * @return bool + */ + private function setPeerService($value): bool + { + if ($this->peer === null) { + $this->peer = ['service_name' => $value]; + } else { + $this->peer['service_name'] = $value; + } + return true; + } + + /** + * @return bool + */ + public function isRpc(): bool + { + return $this->kind == SPAN_KIND_RPC_CLIENT || $this->kind == SPAN_KIND_RPC_SERVER; + } + + /** + * @return bool + */ + public function isRpcClient(): bool + { + return $this->kind == SPAN_KIND_RPC_CLIENT; + } + + /** + * {@inheritdoc} + */ + public function log(array $fields = [], $timestamp = null): void + { + $timestamp = $this->microTime($timestamp); + if ($timestamp < $this->getStartTime()) { + $timestamp = $this->timestampMicro(); + } + + $this->logs[] = [ + 'fields' => $fields, + 'timestamp' => $timestamp, + ]; + } + + /** + * Returns the logs. + * + * [ + * [ + * 'timestamp' => timestamp in microsecond, + * 'fields' => [ + * 'error' => 'message', + * ] + * ] + * ] + * + * @return array + */ + public function getLogs(): array + { + return $this->logs; + } + + /** + * {@inheritdoc} + */ + public function addBaggageItem(string $key, string $value): void + { + $this->context = $this->context->withBaggageItem($key, $value); + } + + /** + * {@inheritdoc} + */ + public function getBaggageItem(string $key): ?string + { + return $this->context->getBaggageItem($key); + } + + /** + * @return array + */ + public function getTags(): array + { + return $this->tags; + } + + /** + * @return int + */ + private function timestampMicro(): int + { + return round(microtime(true) * 1000000); + } + + /** + * @param string $key + * @param mixed $value + * @return BinaryAnnotation + */ + private function makeTag(string $key, $value): BinaryAnnotation + { + $valueType = gettype($value); + $annotationType = null; + switch ($valueType) { + case "boolean": + $annotationType = AnnotationType::BOOL; + break; + case "integer": + $annotationType = AnnotationType::I64; + break; + case "double": + $annotationType = AnnotationType::DOUBLE; + break; + default: + $annotationType = AnnotationType::STRING; + $value = (string)$value; + if (strlen($value) > 1024) { + $value = substr($value, 0, 1024); + } + } + + return new BinaryAnnotation([ + 'key' => $key, + 'value' => $value, + 'annotation_type' => $annotationType, + ]); + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/SpanContext.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/SpanContext.php new file mode 100644 index 000000000..447ffd1a5 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/SpanContext.php @@ -0,0 +1,120 @@ +<?php + +namespace Jaeger; + +use ArrayIterator; +use OpenTracing\SpanContext as OTSpanContext; + +class SpanContext implements OTSpanContext +{ + private $traceId; + + private $spanId; + + private $parentId; + + private $flags; + + /** + * @var array + */ + private $baggage; + + private $debugId; + + /** + * SpanContext constructor. + * + * @param string $traceId + * @param string $spanId + * @param string $parentId + * @param int|null $flags + * @param array $baggage + * @param int|null $debugId + */ + public function __construct($traceId, $spanId, $parentId, $flags = null, $baggage = [], $debugId = null) + { + $this->traceId = $traceId; + $this->spanId = $spanId; + $this->parentId = $parentId; + $this->flags = $flags; + $this->baggage = is_array($baggage) ? $baggage : []; + $this->debugId = $debugId; + } + + /** + * {@inheritdoc} + * @return ArrayIterator + */ + #[\ReturnTypeWillChange] + public function getIterator() + { + return new ArrayIterator($this->baggage); + } + + /** + * {@inheritdoc} + */ + public function getBaggageItem(string $key): ?string + { + return array_key_exists($key, $this->baggage) ? $this->baggage[$key] : null; + } + + /** + * {@inheritdoc} + * + * @param string $key + * @param string $value + * @return SpanContext + */ + public function withBaggageItem(string $key, string $value): OTSpanContext + { + return new self( + $this->traceId, + $this->spanId, + $this->parentId, + $this->flags, + [$key => $value] + $this->baggage + ); + } + + public function getTraceId() + { + return $this->traceId; + } + + public function getParentId() + { + return $this->parentId; + } + + public function getSpanId() + { + return $this->spanId; + } + + /** + * Get the span context flags. + * + * @return int|null + */ + public function getFlags() + { + return $this->flags; + } + + public function getBaggage() + { + return $this->baggage; + } + + public function getDebugId() + { + return $this->debugId; + } + + public function isDebugIdContainerOnly(): bool + { + return ($this->traceId === null) && ($this->debugId !== null); + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AgentClient.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AgentClient.php new file mode 100644 index 000000000..640df4598 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AgentClient.php @@ -0,0 +1,76 @@ +<?php +namespace Jaeger\Thrift\Agent; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class AgentClient implements \Jaeger\Thrift\Agent\AgentIf { + protected $input_ = null; + protected $output_ = null; + + protected $seqid_ = 0; + + public function __construct($input, $output=null) { + $this->input_ = $input; + $this->output_ = $output ? $output : $input; + } + + public function emitZipkinBatch(array $spans) + { + $this->send_emitZipkinBatch($spans); + } + + public function send_emitZipkinBatch(array $spans) + { + $args = new \Jaeger\Thrift\Agent\Agent_emitZipkinBatch_args(); + $args->spans = $spans; + $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary'); + if ($bin_accel) + { + thrift_protocol_write_binary($this->output_, 'emitZipkinBatch', TMessageType::ONEWAY, $args, $this->seqid_, $this->output_->isStrictWrite()); + } + else + { + $this->output_->writeMessageBegin('emitZipkinBatch', TMessageType::ONEWAY, $this->seqid_); + $args->write($this->output_); + $this->output_->writeMessageEnd(); + $this->output_->getTransport()->flush(); + } + } + public function emitBatch(\Jaeger\Thrift\Batch $batch) + { + $this->send_emitBatch($batch); + } + + public function send_emitBatch(\Jaeger\Thrift\Batch $batch) + { + $args = new \Jaeger\Thrift\Agent\Agent_emitBatch_args(); + $args->batch = $batch; + $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary'); + if ($bin_accel) + { + thrift_protocol_write_binary($this->output_, 'emitBatch', TMessageType::ONEWAY, $args, $this->seqid_, $this->output_->isStrictWrite()); + } + else + { + $this->output_->writeMessageBegin('emitBatch', TMessageType::ONEWAY, $this->seqid_); + $args->write($this->output_); + $this->output_->writeMessageEnd(); + $this->output_->getTransport()->flush(); + } + } +} + + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AgentIf.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AgentIf.php new file mode 100644 index 000000000..30efc8cf3 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AgentIf.php @@ -0,0 +1,30 @@ +<?php +namespace Jaeger\Thrift\Agent; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +interface AgentIf { + /** + * @param \Jaeger\Thrift\Agent\Zipkin\Span[] $spans + */ + public function emitZipkinBatch(array $spans); + /** + * @param \Jaeger\Thrift\Batch $batch + */ + public function emitBatch(\Jaeger\Thrift\Batch $batch); +} + + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Agent_emitBatch_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Agent_emitBatch_args.php new file mode 100644 index 000000000..9d11b409c --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Agent_emitBatch_args.php @@ -0,0 +1,56 @@ +<?php +namespace Jaeger\Thrift\Agent; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class Agent_emitBatch_args extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'batch', + 'isRequired' => false, + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Batch', + ), + ); + + /** + * @var \Jaeger\Thrift\Batch + */ + public $batch = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'Agent_emitBatch_args'; + } + + public function read($input) + { + return $this->_read('Agent_emitBatch_args', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('Agent_emitBatch_args', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Agent_emitZipkinBatch_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Agent_emitZipkinBatch_args.php new file mode 100644 index 000000000..cc58527bb --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Agent_emitZipkinBatch_args.php @@ -0,0 +1,60 @@ +<?php +namespace Jaeger\Thrift\Agent; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class Agent_emitZipkinBatch_args extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'spans', + 'isRequired' => false, + 'type' => TType::LST, + 'etype' => TType::STRUCT, + 'elem' => array( + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Agent\Zipkin\Span', + ), + ), + ); + + /** + * @var \Jaeger\Thrift\Agent\Zipkin\Span[] + */ + public $spans = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'Agent_emitZipkinBatch_args'; + } + + public function read($input) + { + return $this->_read('Agent_emitZipkinBatch_args', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('Agent_emitZipkinBatch_args', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidatorClient.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidatorClient.php new file mode 100644 index 000000000..73825978a --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidatorClient.php @@ -0,0 +1,83 @@ +<?php +namespace Jaeger\Thrift\Agent; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class AggregationValidatorClient implements \Jaeger\Thrift\Agent\AggregationValidatorIf { + protected $input_ = null; + protected $output_ = null; + + protected $seqid_ = 0; + + public function __construct($input, $output=null) { + $this->input_ = $input; + $this->output_ = $output ? $output : $input; + } + + public function validateTrace($traceId) + { + $this->send_validateTrace($traceId); + return $this->recv_validateTrace(); + } + + public function send_validateTrace($traceId) + { + $args = new \Jaeger\Thrift\Agent\AggregationValidator_validateTrace_args(); + $args->traceId = $traceId; + $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary'); + if ($bin_accel) + { + thrift_protocol_write_binary($this->output_, 'validateTrace', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite()); + } + else + { + $this->output_->writeMessageBegin('validateTrace', TMessageType::CALL, $this->seqid_); + $args->write($this->output_); + $this->output_->writeMessageEnd(); + $this->output_->getTransport()->flush(); + } + } + + public function recv_validateTrace() + { + $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary'); + if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Jaeger\Thrift\Agent\AggregationValidator_validateTrace_result', $this->input_->isStrictRead()); + else + { + $rseqid = 0; + $fname = null; + $mtype = 0; + + $this->input_->readMessageBegin($fname, $mtype, $rseqid); + if ($mtype == TMessageType::EXCEPTION) { + $x = new TApplicationException(); + $x->read($this->input_); + $this->input_->readMessageEnd(); + throw $x; + } + $result = new \Jaeger\Thrift\Agent\AggregationValidator_validateTrace_result(); + $result->read($this->input_); + $this->input_->readMessageEnd(); + } + if ($result->success !== null) { + return $result->success; + } + throw new \Exception("validateTrace failed: unknown result"); + } + +} + + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidatorIf.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidatorIf.php new file mode 100644 index 000000000..853cd2a4f --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidatorIf.php @@ -0,0 +1,27 @@ +<?php +namespace Jaeger\Thrift\Agent; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +interface AggregationValidatorIf { + /** + * @param string $traceId + * @return \Jaeger\Thrift\Agent\ValidateTraceResponse + */ + public function validateTrace($traceId); +} + + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidator_validateTrace_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidator_validateTrace_args.php new file mode 100644 index 000000000..2f4d1171c --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidator_validateTrace_args.php @@ -0,0 +1,55 @@ +<?php +namespace Jaeger\Thrift\Agent; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class AggregationValidator_validateTrace_args extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'traceId', + 'isRequired' => true, + 'type' => TType::STRING, + ), + ); + + /** + * @var string + */ + public $traceId = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'AggregationValidator_validateTrace_args'; + } + + public function read($input) + { + return $this->_read('AggregationValidator_validateTrace_args', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('AggregationValidator_validateTrace_args', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidator_validateTrace_result.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidator_validateTrace_result.php new file mode 100644 index 000000000..6060c5ae3 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/AggregationValidator_validateTrace_result.php @@ -0,0 +1,56 @@ +<?php +namespace Jaeger\Thrift\Agent; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class AggregationValidator_validateTrace_result extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 0 => array( + 'var' => 'success', + 'isRequired' => false, + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Agent\ValidateTraceResponse', + ), + ); + + /** + * @var \Jaeger\Thrift\Agent\ValidateTraceResponse + */ + public $success = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'AggregationValidator_validateTrace_result'; + } + + public function read($input) + { + return $this->_read('AggregationValidator_validateTrace_result', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('AggregationValidator_validateTrace_result', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestriction.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestriction.php new file mode 100644 index 000000000..27593c4c1 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestriction.php @@ -0,0 +1,65 @@ +<?php +namespace Jaeger\Thrift\Agent; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class BaggageRestriction extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'baggageKey', + 'isRequired' => true, + 'type' => TType::STRING, + ), + 2 => array( + 'var' => 'maxValueLength', + 'isRequired' => true, + 'type' => TType::I32, + ), + ); + + /** + * @var string + */ + public $baggageKey = null; + /** + * @var int + */ + public $maxValueLength = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'BaggageRestriction'; + } + + public function read($input) + { + return $this->_read('BaggageRestriction', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('BaggageRestriction', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManagerClient.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManagerClient.php new file mode 100644 index 000000000..379153534 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManagerClient.php @@ -0,0 +1,83 @@ +<?php +namespace Jaeger\Thrift\Agent; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class BaggageRestrictionManagerClient implements \Jaeger\Thrift\Agent\BaggageRestrictionManagerIf { + protected $input_ = null; + protected $output_ = null; + + protected $seqid_ = 0; + + public function __construct($input, $output=null) { + $this->input_ = $input; + $this->output_ = $output ? $output : $input; + } + + public function getBaggageRestrictions($serviceName) + { + $this->send_getBaggageRestrictions($serviceName); + return $this->recv_getBaggageRestrictions(); + } + + public function send_getBaggageRestrictions($serviceName) + { + $args = new \Jaeger\Thrift\Agent\BaggageRestrictionManager_getBaggageRestrictions_args(); + $args->serviceName = $serviceName; + $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary'); + if ($bin_accel) + { + thrift_protocol_write_binary($this->output_, 'getBaggageRestrictions', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite()); + } + else + { + $this->output_->writeMessageBegin('getBaggageRestrictions', TMessageType::CALL, $this->seqid_); + $args->write($this->output_); + $this->output_->writeMessageEnd(); + $this->output_->getTransport()->flush(); + } + } + + public function recv_getBaggageRestrictions() + { + $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary'); + if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Jaeger\Thrift\Agent\BaggageRestrictionManager_getBaggageRestrictions_result', $this->input_->isStrictRead()); + else + { + $rseqid = 0; + $fname = null; + $mtype = 0; + + $this->input_->readMessageBegin($fname, $mtype, $rseqid); + if ($mtype == TMessageType::EXCEPTION) { + $x = new TApplicationException(); + $x->read($this->input_); + $this->input_->readMessageEnd(); + throw $x; + } + $result = new \Jaeger\Thrift\Agent\BaggageRestrictionManager_getBaggageRestrictions_result(); + $result->read($this->input_); + $this->input_->readMessageEnd(); + } + if ($result->success !== null) { + return $result->success; + } + throw new \Exception("getBaggageRestrictions failed: unknown result"); + } + +} + + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManagerIf.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManagerIf.php new file mode 100644 index 000000000..010bda741 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManagerIf.php @@ -0,0 +1,31 @@ +<?php +namespace Jaeger\Thrift\Agent; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +interface BaggageRestrictionManagerIf { + /** + * getBaggageRestrictions retrieves the baggage restrictions for a specific service. + * Usually, baggageRestrictions apply to all services however there may be situations + * where a baggageKey might only be allowed to be set by a specific service. + * + * @param string $serviceName + * @return \Jaeger\Thrift\Agent\BaggageRestriction[] + */ + public function getBaggageRestrictions($serviceName); +} + + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManager_getBaggageRestrictions_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManager_getBaggageRestrictions_args.php new file mode 100644 index 000000000..6f2b4650a --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManager_getBaggageRestrictions_args.php @@ -0,0 +1,55 @@ +<?php +namespace Jaeger\Thrift\Agent; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class BaggageRestrictionManager_getBaggageRestrictions_args extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'serviceName', + 'isRequired' => false, + 'type' => TType::STRING, + ), + ); + + /** + * @var string + */ + public $serviceName = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'BaggageRestrictionManager_getBaggageRestrictions_args'; + } + + public function read($input) + { + return $this->_read('BaggageRestrictionManager_getBaggageRestrictions_args', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('BaggageRestrictionManager_getBaggageRestrictions_args', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManager_getBaggageRestrictions_result.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManager_getBaggageRestrictions_result.php new file mode 100644 index 000000000..a3c52b37c --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/BaggageRestrictionManager_getBaggageRestrictions_result.php @@ -0,0 +1,60 @@ +<?php +namespace Jaeger\Thrift\Agent; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class BaggageRestrictionManager_getBaggageRestrictions_result extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 0 => array( + 'var' => 'success', + 'isRequired' => false, + 'type' => TType::LST, + 'etype' => TType::STRUCT, + 'elem' => array( + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Agent\BaggageRestriction', + ), + ), + ); + + /** + * @var \Jaeger\Thrift\Agent\BaggageRestriction[] + */ + public $success = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'BaggageRestrictionManager_getBaggageRestrictions_result'; + } + + public function read($input) + { + return $this->_read('BaggageRestrictionManager_getBaggageRestrictions_result', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('BaggageRestrictionManager_getBaggageRestrictions_result', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependencies.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependencies.php new file mode 100644 index 000000000..4295b9798 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependencies.php @@ -0,0 +1,61 @@ +<?php +namespace Jaeger\Thrift\Agent; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class Dependencies extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'links', + 'isRequired' => true, + 'type' => TType::LST, + 'etype' => TType::STRUCT, + 'elem' => array( + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Agent\DependencyLink', + ), + ), + ); + + /** + * @var \Jaeger\Thrift\Agent\DependencyLink[] + */ + public $links = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'Dependencies'; + } + + public function read($input) + { + return $this->_read('Dependencies', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('Dependencies', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/DependencyClient.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/DependencyClient.php new file mode 100644 index 000000000..2c247633d --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/DependencyClient.php @@ -0,0 +1,105 @@ +<?php +namespace Jaeger\Thrift\Agent; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class DependencyClient implements \Jaeger\Thrift\Agent\DependencyIf { + protected $input_ = null; + protected $output_ = null; + + protected $seqid_ = 0; + + public function __construct($input, $output=null) { + $this->input_ = $input; + $this->output_ = $output ? $output : $input; + } + + public function getDependenciesForTrace($traceId) + { + $this->send_getDependenciesForTrace($traceId); + return $this->recv_getDependenciesForTrace(); + } + + public function send_getDependenciesForTrace($traceId) + { + $args = new \Jaeger\Thrift\Agent\Dependency_getDependenciesForTrace_args(); + $args->traceId = $traceId; + $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary'); + if ($bin_accel) + { + thrift_protocol_write_binary($this->output_, 'getDependenciesForTrace', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite()); + } + else + { + $this->output_->writeMessageBegin('getDependenciesForTrace', TMessageType::CALL, $this->seqid_); + $args->write($this->output_); + $this->output_->writeMessageEnd(); + $this->output_->getTransport()->flush(); + } + } + + public function recv_getDependenciesForTrace() + { + $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary'); + if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Jaeger\Thrift\Agent\Dependency_getDependenciesForTrace_result', $this->input_->isStrictRead()); + else + { + $rseqid = 0; + $fname = null; + $mtype = 0; + + $this->input_->readMessageBegin($fname, $mtype, $rseqid); + if ($mtype == TMessageType::EXCEPTION) { + $x = new TApplicationException(); + $x->read($this->input_); + $this->input_->readMessageEnd(); + throw $x; + } + $result = new \Jaeger\Thrift\Agent\Dependency_getDependenciesForTrace_result(); + $result->read($this->input_); + $this->input_->readMessageEnd(); + } + if ($result->success !== null) { + return $result->success; + } + throw new \Exception("getDependenciesForTrace failed: unknown result"); + } + + public function saveDependencies(\Jaeger\Thrift\Agent\Dependencies $dependencies) + { + $this->send_saveDependencies($dependencies); + } + + public function send_saveDependencies(\Jaeger\Thrift\Agent\Dependencies $dependencies) + { + $args = new \Jaeger\Thrift\Agent\Dependency_saveDependencies_args(); + $args->dependencies = $dependencies; + $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary'); + if ($bin_accel) + { + thrift_protocol_write_binary($this->output_, 'saveDependencies', TMessageType::ONEWAY, $args, $this->seqid_, $this->output_->isStrictWrite()); + } + else + { + $this->output_->writeMessageBegin('saveDependencies', TMessageType::ONEWAY, $this->seqid_); + $args->write($this->output_); + $this->output_->writeMessageEnd(); + $this->output_->getTransport()->flush(); + } + } +} + + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/DependencyIf.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/DependencyIf.php new file mode 100644 index 000000000..c9432e7d8 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/DependencyIf.php @@ -0,0 +1,31 @@ +<?php +namespace Jaeger\Thrift\Agent; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +interface DependencyIf { + /** + * @param string $traceId + * @return \Jaeger\Thrift\Agent\Dependencies + */ + public function getDependenciesForTrace($traceId); + /** + * @param \Jaeger\Thrift\Agent\Dependencies $dependencies + */ + public function saveDependencies(\Jaeger\Thrift\Agent\Dependencies $dependencies); +} + + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/DependencyLink.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/DependencyLink.php new file mode 100644 index 000000000..14cfa5132 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/DependencyLink.php @@ -0,0 +1,74 @@ +<?php +namespace Jaeger\Thrift\Agent; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class DependencyLink extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'parent', + 'isRequired' => true, + 'type' => TType::STRING, + ), + 2 => array( + 'var' => 'child', + 'isRequired' => true, + 'type' => TType::STRING, + ), + 4 => array( + 'var' => 'callCount', + 'isRequired' => true, + 'type' => TType::I64, + ), + ); + + /** + * @var string + */ + public $parent = null; + /** + * @var string + */ + public $child = null; + /** + * @var int + */ + public $callCount = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'DependencyLink'; + } + + public function read($input) + { + return $this->_read('DependencyLink', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('DependencyLink', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependency_getDependenciesForTrace_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependency_getDependenciesForTrace_args.php new file mode 100644 index 000000000..5100ea77b --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependency_getDependenciesForTrace_args.php @@ -0,0 +1,55 @@ +<?php +namespace Jaeger\Thrift\Agent; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class Dependency_getDependenciesForTrace_args extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'traceId', + 'isRequired' => true, + 'type' => TType::STRING, + ), + ); + + /** + * @var string + */ + public $traceId = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'Dependency_getDependenciesForTrace_args'; + } + + public function read($input) + { + return $this->_read('Dependency_getDependenciesForTrace_args', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('Dependency_getDependenciesForTrace_args', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependency_getDependenciesForTrace_result.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependency_getDependenciesForTrace_result.php new file mode 100644 index 000000000..ebdd1303e --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependency_getDependenciesForTrace_result.php @@ -0,0 +1,56 @@ +<?php +namespace Jaeger\Thrift\Agent; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class Dependency_getDependenciesForTrace_result extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 0 => array( + 'var' => 'success', + 'isRequired' => false, + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Agent\Dependencies', + ), + ); + + /** + * @var \Jaeger\Thrift\Agent\Dependencies + */ + public $success = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'Dependency_getDependenciesForTrace_result'; + } + + public function read($input) + { + return $this->_read('Dependency_getDependenciesForTrace_result', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('Dependency_getDependenciesForTrace_result', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependency_saveDependencies_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependency_saveDependencies_args.php new file mode 100644 index 000000000..0d250c297 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Dependency_saveDependencies_args.php @@ -0,0 +1,56 @@ +<?php +namespace Jaeger\Thrift\Agent; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class Dependency_saveDependencies_args extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'dependencies', + 'isRequired' => false, + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Agent\Dependencies', + ), + ); + + /** + * @var \Jaeger\Thrift\Agent\Dependencies + */ + public $dependencies = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'Dependency_saveDependencies_args'; + } + + public function read($input) + { + return $this->_read('Dependency_saveDependencies_args', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('Dependency_saveDependencies_args', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/OperationSamplingStrategy.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/OperationSamplingStrategy.php new file mode 100644 index 000000000..7532a7b50 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/OperationSamplingStrategy.php @@ -0,0 +1,66 @@ +<?php +namespace Jaeger\Thrift\Agent; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class OperationSamplingStrategy extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'operation', + 'isRequired' => true, + 'type' => TType::STRING, + ), + 2 => array( + 'var' => 'probabilisticSampling', + 'isRequired' => true, + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Agent\ProbabilisticSamplingStrategy', + ), + ); + + /** + * @var string + */ + public $operation = null; + /** + * @var \Jaeger\Thrift\Agent\ProbabilisticSamplingStrategy + */ + public $probabilisticSampling = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'OperationSamplingStrategy'; + } + + public function read($input) + { + return $this->_read('OperationSamplingStrategy', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('OperationSamplingStrategy', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/PerOperationSamplingStrategies.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/PerOperationSamplingStrategies.php new file mode 100644 index 000000000..2a6ae8a61 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/PerOperationSamplingStrategies.php @@ -0,0 +1,88 @@ +<?php +namespace Jaeger\Thrift\Agent; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class PerOperationSamplingStrategies extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'defaultSamplingProbability', + 'isRequired' => true, + 'type' => TType::DOUBLE, + ), + 2 => array( + 'var' => 'defaultLowerBoundTracesPerSecond', + 'isRequired' => true, + 'type' => TType::DOUBLE, + ), + 3 => array( + 'var' => 'perOperationStrategies', + 'isRequired' => true, + 'type' => TType::LST, + 'etype' => TType::STRUCT, + 'elem' => array( + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Agent\OperationSamplingStrategy', + ), + ), + 4 => array( + 'var' => 'defaultUpperBoundTracesPerSecond', + 'isRequired' => false, + 'type' => TType::DOUBLE, + ), + ); + + /** + * @var double + */ + public $defaultSamplingProbability = null; + /** + * @var double + */ + public $defaultLowerBoundTracesPerSecond = null; + /** + * @var \Jaeger\Thrift\Agent\OperationSamplingStrategy[] + */ + public $perOperationStrategies = null; + /** + * @var double + */ + public $defaultUpperBoundTracesPerSecond = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'PerOperationSamplingStrategies'; + } + + public function read($input) + { + return $this->_read('PerOperationSamplingStrategies', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('PerOperationSamplingStrategies', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/ProbabilisticSamplingStrategy.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/ProbabilisticSamplingStrategy.php new file mode 100644 index 000000000..708ceb9a4 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/ProbabilisticSamplingStrategy.php @@ -0,0 +1,56 @@ +<?php +namespace Jaeger\Thrift\Agent; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class ProbabilisticSamplingStrategy extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'samplingRate', + 'isRequired' => true, + 'type' => TType::DOUBLE, + ), + ); + + /** + * @var double + */ + public $samplingRate = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'ProbabilisticSamplingStrategy'; + } + + public function read($input) + { + return $this->_read('ProbabilisticSamplingStrategy', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('ProbabilisticSamplingStrategy', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/RateLimitingSamplingStrategy.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/RateLimitingSamplingStrategy.php new file mode 100644 index 000000000..d5502e8ee --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/RateLimitingSamplingStrategy.php @@ -0,0 +1,56 @@ +<?php +namespace Jaeger\Thrift\Agent; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class RateLimitingSamplingStrategy extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'maxTracesPerSecond', + 'isRequired' => true, + 'type' => TType::I16, + ), + ); + + /** + * @var int + */ + public $maxTracesPerSecond = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'RateLimitingSamplingStrategy'; + } + + public function read($input) + { + return $this->_read('RateLimitingSamplingStrategy', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('RateLimitingSamplingStrategy', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManagerClient.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManagerClient.php new file mode 100644 index 000000000..9f5494a91 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManagerClient.php @@ -0,0 +1,83 @@ +<?php +namespace Jaeger\Thrift\Agent; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class SamplingManagerClient implements \Jaeger\Thrift\Agent\SamplingManagerIf { + protected $input_ = null; + protected $output_ = null; + + protected $seqid_ = 0; + + public function __construct($input, $output=null) { + $this->input_ = $input; + $this->output_ = $output ? $output : $input; + } + + public function getSamplingStrategy($serviceName) + { + $this->send_getSamplingStrategy($serviceName); + return $this->recv_getSamplingStrategy(); + } + + public function send_getSamplingStrategy($serviceName) + { + $args = new \Jaeger\Thrift\Agent\SamplingManager_getSamplingStrategy_args(); + $args->serviceName = $serviceName; + $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary'); + if ($bin_accel) + { + thrift_protocol_write_binary($this->output_, 'getSamplingStrategy', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite()); + } + else + { + $this->output_->writeMessageBegin('getSamplingStrategy', TMessageType::CALL, $this->seqid_); + $args->write($this->output_); + $this->output_->writeMessageEnd(); + $this->output_->getTransport()->flush(); + } + } + + public function recv_getSamplingStrategy() + { + $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary'); + if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Jaeger\Thrift\Agent\SamplingManager_getSamplingStrategy_result', $this->input_->isStrictRead()); + else + { + $rseqid = 0; + $fname = null; + $mtype = 0; + + $this->input_->readMessageBegin($fname, $mtype, $rseqid); + if ($mtype == TMessageType::EXCEPTION) { + $x = new TApplicationException(); + $x->read($this->input_); + $this->input_->readMessageEnd(); + throw $x; + } + $result = new \Jaeger\Thrift\Agent\SamplingManager_getSamplingStrategy_result(); + $result->read($this->input_); + $this->input_->readMessageEnd(); + } + if ($result->success !== null) { + return $result->success; + } + throw new \Exception("getSamplingStrategy failed: unknown result"); + } + +} + + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManagerIf.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManagerIf.php new file mode 100644 index 000000000..ef17cf308 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManagerIf.php @@ -0,0 +1,27 @@ +<?php +namespace Jaeger\Thrift\Agent; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +interface SamplingManagerIf { + /** + * @param string $serviceName + * @return \Jaeger\Thrift\Agent\SamplingStrategyResponse + */ + public function getSamplingStrategy($serviceName); +} + + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManager_getSamplingStrategy_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManager_getSamplingStrategy_args.php new file mode 100644 index 000000000..f39203efe --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManager_getSamplingStrategy_args.php @@ -0,0 +1,55 @@ +<?php +namespace Jaeger\Thrift\Agent; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class SamplingManager_getSamplingStrategy_args extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'serviceName', + 'isRequired' => false, + 'type' => TType::STRING, + ), + ); + + /** + * @var string + */ + public $serviceName = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'SamplingManager_getSamplingStrategy_args'; + } + + public function read($input) + { + return $this->_read('SamplingManager_getSamplingStrategy_args', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('SamplingManager_getSamplingStrategy_args', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManager_getSamplingStrategy_result.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManager_getSamplingStrategy_result.php new file mode 100644 index 000000000..79e6dce58 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingManager_getSamplingStrategy_result.php @@ -0,0 +1,56 @@ +<?php +namespace Jaeger\Thrift\Agent; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class SamplingManager_getSamplingStrategy_result extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 0 => array( + 'var' => 'success', + 'isRequired' => false, + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Agent\SamplingStrategyResponse', + ), + ); + + /** + * @var \Jaeger\Thrift\Agent\SamplingStrategyResponse + */ + public $success = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'SamplingManager_getSamplingStrategy_result'; + } + + public function read($input) + { + return $this->_read('SamplingManager_getSamplingStrategy_result', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('SamplingManager_getSamplingStrategy_result', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingStrategyResponse.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingStrategyResponse.php new file mode 100644 index 000000000..bc807a57d --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingStrategyResponse.php @@ -0,0 +1,86 @@ +<?php +namespace Jaeger\Thrift\Agent; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class SamplingStrategyResponse extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'strategyType', + 'isRequired' => true, + 'type' => TType::I32, + ), + 2 => array( + 'var' => 'probabilisticSampling', + 'isRequired' => false, + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Agent\ProbabilisticSamplingStrategy', + ), + 3 => array( + 'var' => 'rateLimitingSampling', + 'isRequired' => false, + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Agent\RateLimitingSamplingStrategy', + ), + 4 => array( + 'var' => 'operationSampling', + 'isRequired' => false, + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Agent\PerOperationSamplingStrategies', + ), + ); + + /** + * @var int + */ + public $strategyType = null; + /** + * @var \Jaeger\Thrift\Agent\ProbabilisticSamplingStrategy + */ + public $probabilisticSampling = null; + /** + * @var \Jaeger\Thrift\Agent\RateLimitingSamplingStrategy + */ + public $rateLimitingSampling = null; + /** + * @var \Jaeger\Thrift\Agent\PerOperationSamplingStrategies + */ + public $operationSampling = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'SamplingStrategyResponse'; + } + + public function read($input) + { + return $this->_read('SamplingStrategyResponse', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('SamplingStrategyResponse', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingStrategyType.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingStrategyType.php new file mode 100644 index 000000000..c8dff918a --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/SamplingStrategyType.php @@ -0,0 +1,28 @@ +<?php +namespace Jaeger\Thrift\Agent; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +final class SamplingStrategyType { + const PROBABILISTIC = 0; + const RATE_LIMITING = 1; + static public $__names = array( + 0 => 'PROBABILISTIC', + 1 => 'RATE_LIMITING', + ); +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/ValidateTraceResponse.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/ValidateTraceResponse.php new file mode 100644 index 000000000..226f61e80 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/ValidateTraceResponse.php @@ -0,0 +1,65 @@ +<?php +namespace Jaeger\Thrift\Agent; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class ValidateTraceResponse extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'ok', + 'isRequired' => true, + 'type' => TType::BOOL, + ), + 2 => array( + 'var' => 'traceCount', + 'isRequired' => true, + 'type' => TType::I64, + ), + ); + + /** + * @var bool + */ + public $ok = null; + /** + * @var int + */ + public $traceCount = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'ValidateTraceResponse'; + } + + public function read($input) + { + return $this->_read('ValidateTraceResponse', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('ValidateTraceResponse', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Annotation.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Annotation.php new file mode 100644 index 000000000..e7e48dade --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Annotation.php @@ -0,0 +1,87 @@ +<?php +namespace Jaeger\Thrift\Agent\Zipkin; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +/** + * 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 extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'timestamp', + 'isRequired' => false, + 'type' => TType::I64, + ), + 2 => array( + 'var' => 'value', + 'isRequired' => false, + 'type' => TType::STRING, + ), + 3 => array( + 'var' => 'host', + 'isRequired' => false, + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Agent\Zipkin\Endpoint', + ), + ); + + /** + * Microseconds from epoch. + * + * This value should use the most precise value possible. For example, + * gettimeofday or syncing nanoTime against a tick of currentTimeMillis. + * + * @var int + */ + public $timestamp = null; + /** + * @var string + */ + public $value = null; + /** + * 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. + * + * @var \Jaeger\Thrift\Agent\Zipkin\Endpoint + */ + public $host = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'Annotation'; + } + + public function read($input) + { + return $this->_read('Annotation', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('Annotation', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/AnnotationType.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/AnnotationType.php new file mode 100644 index 000000000..e21c0b0d8 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/AnnotationType.php @@ -0,0 +1,38 @@ +<?php +namespace Jaeger\Thrift\Agent\Zipkin; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +final class AnnotationType { + const BOOL = 0; + const BYTES = 1; + const I16 = 2; + const I32 = 3; + const I64 = 4; + const DOUBLE = 5; + const STRING = 6; + static public $__names = array( + 0 => 'BOOL', + 1 => 'BYTES', + 2 => 'I16', + 3 => 'I32', + 4 => 'I64', + 5 => 'DOUBLE', + 6 => 'STRING', + ); +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/BinaryAnnotation.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/BinaryAnnotation.php new file mode 100644 index 000000000..806a74831 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/BinaryAnnotation.php @@ -0,0 +1,106 @@ +<?php +namespace Jaeger\Thrift\Agent\Zipkin; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +/** + * 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 extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'key', + 'isRequired' => false, + 'type' => TType::STRING, + ), + 2 => array( + 'var' => 'value', + 'isRequired' => false, + 'type' => TType::STRING, + ), + 3 => array( + 'var' => 'annotation_type', + 'isRequired' => false, + 'type' => TType::I32, + ), + 4 => array( + 'var' => 'host', + 'isRequired' => false, + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Agent\Zipkin\Endpoint', + ), + ); + + /** + * @var string + */ + public $key = null; + /** + * @var string + */ + public $value = null; + /** + * @var int + */ + public $annotation_type = null; + /** + * 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. + * + * @var \Jaeger\Thrift\Agent\Zipkin\Endpoint + */ + public $host = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'BinaryAnnotation'; + } + + public function read($input) + { + return $this->_read('BinaryAnnotation', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('BinaryAnnotation', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Constant.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Constant.php new file mode 100644 index 000000000..ebfcebe48 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Constant.php @@ -0,0 +1,246 @@ +<?php +namespace Jaeger\Thrift\Agent\Zipkin; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +final class Constant extends \Thrift\Type\TConstant { + static protected $CLIENT_SEND; + static protected $CLIENT_RECV; + static protected $SERVER_SEND; + static protected $SERVER_RECV; + static protected $MESSAGE_SEND; + static protected $MESSAGE_RECV; + static protected $WIRE_SEND; + static protected $WIRE_RECV; + static protected $CLIENT_SEND_FRAGMENT; + static protected $CLIENT_RECV_FRAGMENT; + static protected $SERVER_SEND_FRAGMENT; + static protected $SERVER_RECV_FRAGMENT; + static protected $LOCAL_COMPONENT; + static protected $CLIENT_ADDR; + static protected $SERVER_ADDR; + static protected $MESSAGE_ADDR; + + static protected function init_CLIENT_SEND() { + return /** + * The client sent ("cs") a request to a server. There is only one send per + * span. For example, if there's a transport error, each attempt can be logged + * as a WIRE_SEND annotation. + * + * If chunking is involved, each chunk could be logged as a separate + * CLIENT_SEND_FRAGMENT in the same span. + * + * Annotation.host is not the server. It is the host which logged the send + * event, almost always the client. When logging CLIENT_SEND, instrumentation + * should also log the SERVER_ADDR. + */ +"cs"; + } + + static protected function init_CLIENT_RECV() { + return /** + * The client received ("cr") a response from a server. There is only one + * receive per span. For example, if duplicate responses were received, each + * can be logged as a WIRE_RECV annotation. + * + * If chunking is involved, each chunk could be logged as a separate + * CLIENT_RECV_FRAGMENT in the same span. + * + * Annotation.host is not the server. It is the host which logged the receive + * event, almost always the client. The actual endpoint of the server is + * recorded separately as SERVER_ADDR when CLIENT_SEND is logged. + */ +"cr"; + } + + static protected function init_SERVER_SEND() { + return /** + * The server sent ("ss") a response to a client. There is only one response + * per span. If there's a transport error, each attempt can be logged as a + * WIRE_SEND annotation. + * + * Typically, a trace ends with a server send, so the last timestamp of a trace + * is often the timestamp of the root span's server send. + * + * If chunking is involved, each chunk could be logged as a separate + * SERVER_SEND_FRAGMENT in the same span. + * + * Annotation.host is not the client. It is the host which logged the send + * event, almost always the server. The actual endpoint of the client is + * recorded separately as CLIENT_ADDR when SERVER_RECV is logged. + */ +"ss"; + } + + static protected function init_SERVER_RECV() { + return /** + * The server received ("sr") a request from a client. There is only one + * request per span. For example, if duplicate responses were received, each + * can be logged as a WIRE_RECV annotation. + * + * Typically, a trace starts with a server receive, so the first timestamp of a + * trace is often the timestamp of the root span's server receive. + * + * If chunking is involved, each chunk could be logged as a separate + * SERVER_RECV_FRAGMENT in the same span. + * + * Annotation.host is not the client. It is the host which logged the receive + * event, almost always the server. When logging SERVER_RECV, instrumentation + * should also log the CLIENT_ADDR. + */ +"sr"; + } + + static protected function init_MESSAGE_SEND() { + return /** + * Message send ("ms") is a request to send a message to a destination, usually + * a broker. This may be the only annotation in a messaging span. If WIRE_SEND + * exists in the same span, it follows this moment and clarifies delays sending + * the message, such as batching. + * + * Unlike RPC annotations like CLIENT_SEND, messaging spans never share a span + * ID. For example, "ms" should always be the parent of "mr". + * + * Annotation.host is not the destination, it is the host which logged the send + * event: the producer. When annotating MESSAGE_SEND, instrumentation should + * also tag the MESSAGE_ADDR. + */ +"ms"; + } + + static protected function init_MESSAGE_RECV() { + return /** + * A consumer received ("mr") a message from a broker. This may be the only + * annotation in a messaging span. If WIRE_RECV exists in the same span, it + * precedes this moment and clarifies any local queuing delay. + * + * Unlike RPC annotations like SERVER_RECV, messaging spans never share a span + * ID. For example, "mr" should always be a child of "ms" unless it is a root + * span. + * + * Annotation.host is not the broker, it is the host which logged the receive + * event: the consumer. When annotating MESSAGE_RECV, instrumentation should + * also tag the MESSAGE_ADDR. + */ +"mr"; + } + + static protected function init_WIRE_SEND() { + return /** + * Optionally logs an attempt to send a message on the wire. Multiple wire send + * events could indicate network retries. A lag between client or server send + * and wire send might indicate queuing or processing delay. + */ +"ws"; + } + + static protected function init_WIRE_RECV() { + return /** + * Optionally logs an attempt to receive a message from the wire. Multiple wire + * receive events could indicate network retries. A lag between wire receive + * and client or server receive might indicate queuing or processing delay. + */ +"wr"; + } + + static protected function init_CLIENT_SEND_FRAGMENT() { + return /** + * Optionally logs progress of a (CLIENT_SEND, WIRE_SEND). For example, this + * could be one chunk in a chunked request. + */ +"csf"; + } + + static protected function init_CLIENT_RECV_FRAGMENT() { + return /** + * Optionally logs progress of a (CLIENT_RECV, WIRE_RECV). For example, this + * could be one chunk in a chunked response. + */ +"crf"; + } + + static protected function init_SERVER_SEND_FRAGMENT() { + return /** + * Optionally logs progress of a (SERVER_SEND, WIRE_SEND). For example, this + * could be one chunk in a chunked response. + */ +"ssf"; + } + + static protected function init_SERVER_RECV_FRAGMENT() { + return /** + * Optionally logs progress of a (SERVER_RECV, WIRE_RECV). For example, this + * could be one chunk in a chunked request. + */ +"srf"; + } + + static protected function init_LOCAL_COMPONENT() { + return /** + * The value of "lc" is the component or namespace of a local span. + * + * BinaryAnnotation.host adds service context needed to support queries. + * + * Local Component("lc") supports three key features: flagging, query by + * service and filtering Span.name by namespace. + * + * While structurally the same, local spans are fundamentally different than + * RPC spans in how they should be interpreted. For example, zipkin v1 tools + * center on RPC latency and service graphs. Root local-spans are neither + * indicative of critical path RPC latency, nor have impact on the shape of a + * service graph. By flagging with "lc", tools can special-case local spans. + * + * Zipkin v1 Spans are unqueryable unless they can be indexed by service name. + * The only path to a service name is by (Binary)?Annotation.host.serviceName. + * By logging "lc", a local span can be queried even if no other annotations + * are logged. + * + * The value of "lc" is the namespace of Span.name. For example, it might be + * "finatra2", for a span named "bootstrap". "lc" allows you to resolves + * conflicts for the same Span.name, for example "finatra/bootstrap" vs + * "finch/bootstrap". Using local component, you'd search for spans named + * "bootstrap" where "lc=finch" + */ +"lc"; + } + + static protected function init_CLIENT_ADDR() { + return /** + * Indicates a client address ("ca") in a span. Most likely, there's only one. + * Multiple addresses are possible when a client changes its ip or port within + * a span. + */ +"ca"; + } + + static protected function init_SERVER_ADDR() { + return /** + * Indicates a server address ("sa") in a span. Most likely, there's only one. + * Multiple addresses are possible when a client is redirected, or fails to a + * different server ip or port. + */ +"sa"; + } + + static protected function init_MESSAGE_ADDR() { + return /** + * Indicates the remote address of a messaging span, usually the broker. + */ +"ma"; + } +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Endpoint.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Endpoint.php new file mode 100644 index 000000000..12ff02f96 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Endpoint.php @@ -0,0 +1,108 @@ +<?php +namespace Jaeger\Thrift\Agent\Zipkin; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +/** + * 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 extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'ipv4', + 'isRequired' => false, + 'type' => TType::I32, + ), + 2 => array( + 'var' => 'port', + 'isRequired' => false, + 'type' => TType::I16, + ), + 3 => array( + 'var' => 'service_name', + 'isRequired' => false, + 'type' => TType::STRING, + ), + 4 => array( + 'var' => 'ipv6', + 'isRequired' => false, + 'type' => TType::STRING, + ), + ); + + /** + * 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 + * + * @var int + */ + public $ipv4 = null; + /** + * 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. + * + * @var int + */ + public $port = null; + /** + * Service name in lowercase, such as "memcache" or "zipkin-web" + * + * Conventionally, when the service name isn't known, service_name = "unknown". + * + * @var string + */ + public $service_name = null; + /** + * IPv6 host address packed into 16 bytes. Ex Inet6Address.getBytes() + * + * @var string + */ + public $ipv6 = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'Endpoint'; + } + + public function read($input) + { + return $this->_read('Endpoint', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('Endpoint', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Response.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Response.php new file mode 100644 index 000000000..88c7f5e5d --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Response.php @@ -0,0 +1,56 @@ +<?php +namespace Jaeger\Thrift\Agent\Zipkin; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class Response extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'ok', + 'isRequired' => true, + 'type' => TType::BOOL, + ), + ); + + /** + * @var bool + */ + public $ok = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'Response'; + } + + public function read($input) + { + return $this->_read('Response', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('Response', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Span.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Span.php new file mode 100644 index 000000000..32a69b645 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/Span.php @@ -0,0 +1,190 @@ +<?php +namespace Jaeger\Thrift\Agent\Zipkin; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +/** + * 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 extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'trace_id', + 'isRequired' => false, + 'type' => TType::I64, + ), + 3 => array( + 'var' => 'name', + 'isRequired' => false, + 'type' => TType::STRING, + ), + 4 => array( + 'var' => 'id', + 'isRequired' => false, + 'type' => TType::I64, + ), + 5 => array( + 'var' => 'parent_id', + 'isRequired' => false, + 'type' => TType::I64, + ), + 6 => array( + 'var' => 'annotations', + 'isRequired' => false, + 'type' => TType::LST, + 'etype' => TType::STRUCT, + 'elem' => array( + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Agent\Zipkin\Annotation', + ), + ), + 8 => array( + 'var' => 'binary_annotations', + 'isRequired' => false, + 'type' => TType::LST, + 'etype' => TType::STRUCT, + 'elem' => array( + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Agent\Zipkin\BinaryAnnotation', + ), + ), + 9 => array( + 'var' => 'debug', + 'isRequired' => false, + 'type' => TType::BOOL, + ), + 10 => array( + 'var' => 'timestamp', + 'isRequired' => false, + 'type' => TType::I64, + ), + 11 => array( + 'var' => 'duration', + 'isRequired' => false, + 'type' => TType::I64, + ), + 12 => array( + 'var' => 'trace_id_high', + 'isRequired' => false, + 'type' => TType::I64, + ), + ); + + /** + * @var int + */ + public $trace_id = null; + /** + * Span name in lowercase, rpc method for example + * + * Conventionally, when the span name isn't known, name = "unknown". + * + * @var string + */ + public $name = null; + /** + * @var int + */ + public $id = null; + /** + * @var int + */ + public $parent_id = null; + /** + * @var \Jaeger\Thrift\Agent\Zipkin\Annotation[] + */ + public $annotations = null; + /** + * @var \Jaeger\Thrift\Agent\Zipkin\BinaryAnnotation[] + */ + public $binary_annotations = null; + /** + * @var bool + */ + public $debug = false; + /** + * 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. + * + * @var int + */ + public $timestamp = null; + /** + * 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. + * + * @var int + */ + public $duration = null; + /** + * Optional unique 8-byte additional identifier for a trace. If non zero, this + * means the trace uses 128 bit traceIds instead of 64 bit. + * + * @var int + */ + public $trace_id_high = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'Span'; + } + + public function read($input) + { + return $this->_read('Span', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('Span', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollectorClient.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollectorClient.php new file mode 100644 index 000000000..2978675c4 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollectorClient.php @@ -0,0 +1,83 @@ +<?php +namespace Jaeger\Thrift\Agent\Zipkin; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class ZipkinCollectorClient implements \Jaeger\Thrift\Agent\Zipkin\ZipkinCollectorIf { + protected $input_ = null; + protected $output_ = null; + + protected $seqid_ = 0; + + public function __construct($input, $output=null) { + $this->input_ = $input; + $this->output_ = $output ? $output : $input; + } + + public function submitZipkinBatch(array $spans) + { + $this->send_submitZipkinBatch($spans); + return $this->recv_submitZipkinBatch(); + } + + public function send_submitZipkinBatch(array $spans) + { + $args = new \Jaeger\Thrift\Agent\Zipkin\ZipkinCollector_submitZipkinBatch_args(); + $args->spans = $spans; + $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary'); + if ($bin_accel) + { + thrift_protocol_write_binary($this->output_, 'submitZipkinBatch', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite()); + } + else + { + $this->output_->writeMessageBegin('submitZipkinBatch', TMessageType::CALL, $this->seqid_); + $args->write($this->output_); + $this->output_->writeMessageEnd(); + $this->output_->getTransport()->flush(); + } + } + + public function recv_submitZipkinBatch() + { + $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary'); + if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Jaeger\Thrift\Agent\Zipkin\ZipkinCollector_submitZipkinBatch_result', $this->input_->isStrictRead()); + else + { + $rseqid = 0; + $fname = null; + $mtype = 0; + + $this->input_->readMessageBegin($fname, $mtype, $rseqid); + if ($mtype == TMessageType::EXCEPTION) { + $x = new TApplicationException(); + $x->read($this->input_); + $this->input_->readMessageEnd(); + throw $x; + } + $result = new \Jaeger\Thrift\Agent\Zipkin\ZipkinCollector_submitZipkinBatch_result(); + $result->read($this->input_); + $this->input_->readMessageEnd(); + } + if ($result->success !== null) { + return $result->success; + } + throw new \Exception("submitZipkinBatch failed: unknown result"); + } + +} + + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollectorIf.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollectorIf.php new file mode 100644 index 000000000..83abf8119 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollectorIf.php @@ -0,0 +1,27 @@ +<?php +namespace Jaeger\Thrift\Agent\Zipkin; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +interface ZipkinCollectorIf { + /** + * @param \Jaeger\Thrift\Agent\Zipkin\Span[] $spans + * @return \Jaeger\Thrift\Agent\Zipkin\Response[] + */ + public function submitZipkinBatch(array $spans); +} + + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollector_submitZipkinBatch_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollector_submitZipkinBatch_args.php new file mode 100644 index 000000000..24d25b078 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollector_submitZipkinBatch_args.php @@ -0,0 +1,60 @@ +<?php +namespace Jaeger\Thrift\Agent\Zipkin; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class ZipkinCollector_submitZipkinBatch_args extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'spans', + 'isRequired' => false, + 'type' => TType::LST, + 'etype' => TType::STRUCT, + 'elem' => array( + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Agent\Zipkin\Span', + ), + ), + ); + + /** + * @var \Jaeger\Thrift\Agent\Zipkin\Span[] + */ + public $spans = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'ZipkinCollector_submitZipkinBatch_args'; + } + + public function read($input) + { + return $this->_read('ZipkinCollector_submitZipkinBatch_args', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('ZipkinCollector_submitZipkinBatch_args', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollector_submitZipkinBatch_result.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollector_submitZipkinBatch_result.php new file mode 100644 index 000000000..faf165446 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Agent/Zipkin/ZipkinCollector_submitZipkinBatch_result.php @@ -0,0 +1,60 @@ +<?php +namespace Jaeger\Thrift\Agent\Zipkin; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class ZipkinCollector_submitZipkinBatch_result extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 0 => array( + 'var' => 'success', + 'isRequired' => false, + 'type' => TType::LST, + 'etype' => TType::STRUCT, + 'elem' => array( + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Agent\Zipkin\Response', + ), + ), + ); + + /** + * @var \Jaeger\Thrift\Agent\Zipkin\Response[] + */ + public $success = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'ZipkinCollector_submitZipkinBatch_result'; + } + + public function read($input) + { + return $this->_read('ZipkinCollector_submitZipkinBatch_result', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('ZipkinCollector_submitZipkinBatch_result', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Batch.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Batch.php new file mode 100644 index 000000000..56e9e5206 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Batch.php @@ -0,0 +1,71 @@ +<?php +namespace Jaeger\Thrift; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class Batch extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'process', + 'isRequired' => true, + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Process', + ), + 2 => array( + 'var' => 'spans', + 'isRequired' => true, + 'type' => TType::LST, + 'etype' => TType::STRUCT, + 'elem' => array( + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Span', + ), + ), + ); + + /** + * @var \Jaeger\Thrift\Process + */ + public $process = null; + /** + * @var \Jaeger\Thrift\Span[] + */ + public $spans = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'Batch'; + } + + public function read($input) + { + return $this->_read('Batch', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('Batch', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/BatchSubmitResponse.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/BatchSubmitResponse.php new file mode 100644 index 000000000..7ddc25eb5 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/BatchSubmitResponse.php @@ -0,0 +1,56 @@ +<?php +namespace Jaeger\Thrift; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class BatchSubmitResponse extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'ok', + 'isRequired' => true, + 'type' => TType::BOOL, + ), + ); + + /** + * @var bool + */ + public $ok = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'BatchSubmitResponse'; + } + + public function read($input) + { + return $this->_read('BatchSubmitResponse', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('BatchSubmitResponse', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/CollectorClient.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/CollectorClient.php new file mode 100644 index 000000000..e3c6e14c1 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/CollectorClient.php @@ -0,0 +1,83 @@ +<?php +namespace Jaeger\Thrift; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class CollectorClient implements \Jaeger\Thrift\CollectorIf { + protected $input_ = null; + protected $output_ = null; + + protected $seqid_ = 0; + + public function __construct($input, $output=null) { + $this->input_ = $input; + $this->output_ = $output ? $output : $input; + } + + public function submitBatches(array $batches) + { + $this->send_submitBatches($batches); + return $this->recv_submitBatches(); + } + + public function send_submitBatches(array $batches) + { + $args = new \Jaeger\Thrift\Collector_submitBatches_args(); + $args->batches = $batches; + $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary'); + if ($bin_accel) + { + thrift_protocol_write_binary($this->output_, 'submitBatches', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite()); + } + else + { + $this->output_->writeMessageBegin('submitBatches', TMessageType::CALL, $this->seqid_); + $args->write($this->output_); + $this->output_->writeMessageEnd(); + $this->output_->getTransport()->flush(); + } + } + + public function recv_submitBatches() + { + $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary'); + if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Jaeger\Thrift\Collector_submitBatches_result', $this->input_->isStrictRead()); + else + { + $rseqid = 0; + $fname = null; + $mtype = 0; + + $this->input_->readMessageBegin($fname, $mtype, $rseqid); + if ($mtype == TMessageType::EXCEPTION) { + $x = new TApplicationException(); + $x->read($this->input_); + $this->input_->readMessageEnd(); + throw $x; + } + $result = new \Jaeger\Thrift\Collector_submitBatches_result(); + $result->read($this->input_); + $this->input_->readMessageEnd(); + } + if ($result->success !== null) { + return $result->success; + } + throw new \Exception("submitBatches failed: unknown result"); + } + +} + + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/CollectorIf.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/CollectorIf.php new file mode 100644 index 000000000..da4f023ec --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/CollectorIf.php @@ -0,0 +1,27 @@ +<?php +namespace Jaeger\Thrift; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +interface CollectorIf { + /** + * @param \Jaeger\Thrift\Batch[] $batches + * @return \Jaeger\Thrift\BatchSubmitResponse[] + */ + public function submitBatches(array $batches); +} + + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Collector_submitBatches_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Collector_submitBatches_args.php new file mode 100644 index 000000000..014e3720d --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Collector_submitBatches_args.php @@ -0,0 +1,60 @@ +<?php +namespace Jaeger\Thrift; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class Collector_submitBatches_args extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'batches', + 'isRequired' => false, + 'type' => TType::LST, + 'etype' => TType::STRUCT, + 'elem' => array( + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Batch', + ), + ), + ); + + /** + * @var \Jaeger\Thrift\Batch[] + */ + public $batches = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'Collector_submitBatches_args'; + } + + public function read($input) + { + return $this->_read('Collector_submitBatches_args', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('Collector_submitBatches_args', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Collector_submitBatches_result.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Collector_submitBatches_result.php new file mode 100644 index 000000000..aae083707 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Collector_submitBatches_result.php @@ -0,0 +1,60 @@ +<?php +namespace Jaeger\Thrift; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class Collector_submitBatches_result extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 0 => array( + 'var' => 'success', + 'isRequired' => false, + 'type' => TType::LST, + 'etype' => TType::STRUCT, + 'elem' => array( + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\BatchSubmitResponse', + ), + ), + ); + + /** + * @var \Jaeger\Thrift\BatchSubmitResponse[] + */ + public $success = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'Collector_submitBatches_result'; + } + + public function read($input) + { + return $this->_read('Collector_submitBatches_result', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('Collector_submitBatches_result', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/Downstream.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/Downstream.php new file mode 100644 index 000000000..92b269aa6 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/Downstream.php @@ -0,0 +1,102 @@ +<?php +namespace Jaeger\Thrift\Crossdock; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class Downstream extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'serviceName', + 'isRequired' => true, + 'type' => TType::STRING, + ), + 2 => array( + 'var' => 'serverRole', + 'isRequired' => true, + 'type' => TType::STRING, + ), + 3 => array( + 'var' => 'host', + 'isRequired' => true, + 'type' => TType::STRING, + ), + 4 => array( + 'var' => 'port', + 'isRequired' => true, + 'type' => TType::STRING, + ), + 5 => array( + 'var' => 'transport', + 'isRequired' => true, + 'type' => TType::I32, + ), + 6 => array( + 'var' => 'downstream', + 'isRequired' => false, + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Crossdock\Downstream', + ), + ); + + /** + * @var string + */ + public $serviceName = null; + /** + * @var string + */ + public $serverRole = null; + /** + * @var string + */ + public $host = null; + /** + * @var string + */ + public $port = null; + /** + * @var int + */ + public $transport = null; + /** + * @var \Jaeger\Thrift\Crossdock\Downstream + */ + public $downstream = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'Downstream'; + } + + public function read($input) + { + return $this->_read('Downstream', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('Downstream', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/JoinTraceRequest.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/JoinTraceRequest.php new file mode 100644 index 000000000..39e6242b7 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/JoinTraceRequest.php @@ -0,0 +1,66 @@ +<?php +namespace Jaeger\Thrift\Crossdock; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class JoinTraceRequest extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'serverRole', + 'isRequired' => true, + 'type' => TType::STRING, + ), + 2 => array( + 'var' => 'downstream', + 'isRequired' => false, + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Crossdock\Downstream', + ), + ); + + /** + * @var string + */ + public $serverRole = null; + /** + * @var \Jaeger\Thrift\Crossdock\Downstream + */ + public $downstream = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'JoinTraceRequest'; + } + + public function read($input) + { + return $this->_read('JoinTraceRequest', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('JoinTraceRequest', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/ObservedSpan.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/ObservedSpan.php new file mode 100644 index 000000000..d60331851 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/ObservedSpan.php @@ -0,0 +1,74 @@ +<?php +namespace Jaeger\Thrift\Crossdock; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class ObservedSpan extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'traceId', + 'isRequired' => true, + 'type' => TType::STRING, + ), + 2 => array( + 'var' => 'sampled', + 'isRequired' => true, + 'type' => TType::BOOL, + ), + 3 => array( + 'var' => 'baggage', + 'isRequired' => true, + 'type' => TType::STRING, + ), + ); + + /** + * @var string + */ + public $traceId = null; + /** + * @var bool + */ + public $sampled = null; + /** + * @var string + */ + public $baggage = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'ObservedSpan'; + } + + public function read($input) + { + return $this->_read('ObservedSpan', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('ObservedSpan', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/StartTraceRequest.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/StartTraceRequest.php new file mode 100644 index 000000000..50b9c6668 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/StartTraceRequest.php @@ -0,0 +1,84 @@ +<?php +namespace Jaeger\Thrift\Crossdock; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class StartTraceRequest extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'serverRole', + 'isRequired' => true, + 'type' => TType::STRING, + ), + 2 => array( + 'var' => 'sampled', + 'isRequired' => true, + 'type' => TType::BOOL, + ), + 3 => array( + 'var' => 'baggage', + 'isRequired' => true, + 'type' => TType::STRING, + ), + 4 => array( + 'var' => 'downstream', + 'isRequired' => true, + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Crossdock\Downstream', + ), + ); + + /** + * @var string + */ + public $serverRole = null; + /** + * @var bool + */ + public $sampled = null; + /** + * @var string + */ + public $baggage = null; + /** + * @var \Jaeger\Thrift\Crossdock\Downstream + */ + public $downstream = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'StartTraceRequest'; + } + + public function read($input) + { + return $this->_read('StartTraceRequest', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('StartTraceRequest', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TraceResponse.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TraceResponse.php new file mode 100644 index 000000000..107d4e26d --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TraceResponse.php @@ -0,0 +1,82 @@ +<?php +namespace Jaeger\Thrift\Crossdock; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +/** + * Each server must include the information about the span it observed. + * It can only be omitted from the response if notImplementedError field is not empty. + * If the server was instructed to make a downstream call, it must embed the + * downstream response in its own response. + */ +class TraceResponse extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'span', + 'isRequired' => false, + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Crossdock\ObservedSpan', + ), + 2 => array( + 'var' => 'downstream', + 'isRequired' => false, + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Crossdock\TraceResponse', + ), + 3 => array( + 'var' => 'notImplementedError', + 'isRequired' => true, + 'type' => TType::STRING, + ), + ); + + /** + * @var \Jaeger\Thrift\Crossdock\ObservedSpan + */ + public $span = null; + /** + * @var \Jaeger\Thrift\Crossdock\TraceResponse + */ + public $downstream = null; + /** + * @var string + */ + public $notImplementedError = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'TraceResponse'; + } + + public function read($input) + { + return $this->_read('TraceResponse', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('TraceResponse', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedServiceClient.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedServiceClient.php new file mode 100644 index 000000000..2fd8b4fc9 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedServiceClient.php @@ -0,0 +1,134 @@ +<?php +namespace Jaeger\Thrift\Crossdock; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class TracedServiceClient implements \Jaeger\Thrift\Crossdock\TracedServiceIf { + protected $input_ = null; + protected $output_ = null; + + protected $seqid_ = 0; + + public function __construct($input, $output=null) { + $this->input_ = $input; + $this->output_ = $output ? $output : $input; + } + + public function startTrace(\Jaeger\Thrift\Crossdock\StartTraceRequest $request) + { + $this->send_startTrace($request); + return $this->recv_startTrace(); + } + + public function send_startTrace(\Jaeger\Thrift\Crossdock\StartTraceRequest $request) + { + $args = new \Jaeger\Thrift\Crossdock\TracedService_startTrace_args(); + $args->request = $request; + $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary'); + if ($bin_accel) + { + thrift_protocol_write_binary($this->output_, 'startTrace', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite()); + } + else + { + $this->output_->writeMessageBegin('startTrace', TMessageType::CALL, $this->seqid_); + $args->write($this->output_); + $this->output_->writeMessageEnd(); + $this->output_->getTransport()->flush(); + } + } + + public function recv_startTrace() + { + $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary'); + if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Jaeger\Thrift\Crossdock\TracedService_startTrace_result', $this->input_->isStrictRead()); + else + { + $rseqid = 0; + $fname = null; + $mtype = 0; + + $this->input_->readMessageBegin($fname, $mtype, $rseqid); + if ($mtype == TMessageType::EXCEPTION) { + $x = new TApplicationException(); + $x->read($this->input_); + $this->input_->readMessageEnd(); + throw $x; + } + $result = new \Jaeger\Thrift\Crossdock\TracedService_startTrace_result(); + $result->read($this->input_); + $this->input_->readMessageEnd(); + } + if ($result->success !== null) { + return $result->success; + } + throw new \Exception("startTrace failed: unknown result"); + } + + public function joinTrace(\Jaeger\Thrift\Crossdock\JoinTraceRequest $request) + { + $this->send_joinTrace($request); + return $this->recv_joinTrace(); + } + + public function send_joinTrace(\Jaeger\Thrift\Crossdock\JoinTraceRequest $request) + { + $args = new \Jaeger\Thrift\Crossdock\TracedService_joinTrace_args(); + $args->request = $request; + $bin_accel = ($this->output_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_write_binary'); + if ($bin_accel) + { + thrift_protocol_write_binary($this->output_, 'joinTrace', TMessageType::CALL, $args, $this->seqid_, $this->output_->isStrictWrite()); + } + else + { + $this->output_->writeMessageBegin('joinTrace', TMessageType::CALL, $this->seqid_); + $args->write($this->output_); + $this->output_->writeMessageEnd(); + $this->output_->getTransport()->flush(); + } + } + + public function recv_joinTrace() + { + $bin_accel = ($this->input_ instanceof TBinaryProtocolAccelerated) && function_exists('thrift_protocol_read_binary'); + if ($bin_accel) $result = thrift_protocol_read_binary($this->input_, '\Jaeger\Thrift\Crossdock\TracedService_joinTrace_result', $this->input_->isStrictRead()); + else + { + $rseqid = 0; + $fname = null; + $mtype = 0; + + $this->input_->readMessageBegin($fname, $mtype, $rseqid); + if ($mtype == TMessageType::EXCEPTION) { + $x = new TApplicationException(); + $x->read($this->input_); + $this->input_->readMessageEnd(); + throw $x; + } + $result = new \Jaeger\Thrift\Crossdock\TracedService_joinTrace_result(); + $result->read($this->input_); + $this->input_->readMessageEnd(); + } + if ($result->success !== null) { + return $result->success; + } + throw new \Exception("joinTrace failed: unknown result"); + } + +} + + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedServiceIf.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedServiceIf.php new file mode 100644 index 000000000..e2dd9a8eb --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedServiceIf.php @@ -0,0 +1,40 @@ +<?php +namespace Jaeger\Thrift\Crossdock; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +interface TracedServiceIf { + /** + * @param \Jaeger\Thrift\Crossdock\StartTraceRequest $request + * @return \Jaeger\Thrift\Crossdock\TraceResponse Each server must include the information about the span it observed. + * It can only be omitted from the response if notImplementedError field is not empty. + * If the server was instructed to make a downstream call, it must embed the + * downstream response in its own response. + * + */ + public function startTrace(\Jaeger\Thrift\Crossdock\StartTraceRequest $request); + /** + * @param \Jaeger\Thrift\Crossdock\JoinTraceRequest $request + * @return \Jaeger\Thrift\Crossdock\TraceResponse Each server must include the information about the span it observed. + * It can only be omitted from the response if notImplementedError field is not empty. + * If the server was instructed to make a downstream call, it must embed the + * downstream response in its own response. + * + */ + public function joinTrace(\Jaeger\Thrift\Crossdock\JoinTraceRequest $request); +} + + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_joinTrace_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_joinTrace_args.php new file mode 100644 index 000000000..fb82b43c7 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_joinTrace_args.php @@ -0,0 +1,56 @@ +<?php +namespace Jaeger\Thrift\Crossdock; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class TracedService_joinTrace_args extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'request', + 'isRequired' => false, + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Crossdock\JoinTraceRequest', + ), + ); + + /** + * @var \Jaeger\Thrift\Crossdock\JoinTraceRequest + */ + public $request = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'TracedService_joinTrace_args'; + } + + public function read($input) + { + return $this->_read('TracedService_joinTrace_args', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('TracedService_joinTrace_args', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_joinTrace_result.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_joinTrace_result.php new file mode 100644 index 000000000..26ebd7124 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_joinTrace_result.php @@ -0,0 +1,56 @@ +<?php +namespace Jaeger\Thrift\Crossdock; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class TracedService_joinTrace_result extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 0 => array( + 'var' => 'success', + 'isRequired' => false, + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Crossdock\TraceResponse', + ), + ); + + /** + * @var \Jaeger\Thrift\Crossdock\TraceResponse + */ + public $success = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'TracedService_joinTrace_result'; + } + + public function read($input) + { + return $this->_read('TracedService_joinTrace_result', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('TracedService_joinTrace_result', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_startTrace_args.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_startTrace_args.php new file mode 100644 index 000000000..cabc260ea --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_startTrace_args.php @@ -0,0 +1,56 @@ +<?php +namespace Jaeger\Thrift\Crossdock; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class TracedService_startTrace_args extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'request', + 'isRequired' => false, + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Crossdock\StartTraceRequest', + ), + ); + + /** + * @var \Jaeger\Thrift\Crossdock\StartTraceRequest + */ + public $request = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'TracedService_startTrace_args'; + } + + public function read($input) + { + return $this->_read('TracedService_startTrace_args', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('TracedService_startTrace_args', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_startTrace_result.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_startTrace_result.php new file mode 100644 index 000000000..f4b114e64 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/TracedService_startTrace_result.php @@ -0,0 +1,56 @@ +<?php +namespace Jaeger\Thrift\Crossdock; +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class TracedService_startTrace_result extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 0 => array( + 'var' => 'success', + 'isRequired' => false, + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Crossdock\TraceResponse', + ), + ); + + /** + * @var \Jaeger\Thrift\Crossdock\TraceResponse + */ + public $success = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'TracedService_startTrace_result'; + } + + public function read($input) + { + return $this->_read('TracedService_startTrace_result', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('TracedService_startTrace_result', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/Transport.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/Transport.php new file mode 100644 index 000000000..1b71e686b --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Crossdock/Transport.php @@ -0,0 +1,30 @@ +<?php +namespace Jaeger\Thrift\Crossdock; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +final class Transport { + const HTTP = 0; + const TCHANNEL = 1; + const DUMMY = 2; + static public $__names = array( + 0 => 'HTTP', + 1 => 'TCHANNEL', + 2 => 'DUMMY', + ); +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Log.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Log.php new file mode 100644 index 000000000..809a92d7c --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Log.php @@ -0,0 +1,70 @@ +<?php +namespace Jaeger\Thrift; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class Log extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'timestamp', + 'isRequired' => true, + 'type' => TType::I64, + ), + 2 => array( + 'var' => 'fields', + 'isRequired' => true, + 'type' => TType::LST, + 'etype' => TType::STRUCT, + 'elem' => array( + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Tag', + ), + ), + ); + + /** + * @var int + */ + public $timestamp = null; + /** + * @var \Jaeger\Thrift\Tag[] + */ + public $fields = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'Log'; + } + + public function read($input) + { + return $this->_read('Log', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('Log', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Process.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Process.php new file mode 100644 index 000000000..3b925220a --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Process.php @@ -0,0 +1,70 @@ +<?php +namespace Jaeger\Thrift; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class Process extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'serviceName', + 'isRequired' => true, + 'type' => TType::STRING, + ), + 2 => array( + 'var' => 'tags', + 'isRequired' => false, + 'type' => TType::LST, + 'etype' => TType::STRUCT, + 'elem' => array( + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Tag', + ), + ), + ); + + /** + * @var string + */ + public $serviceName = null; + /** + * @var \Jaeger\Thrift\Tag[] + */ + public $tags = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'Process'; + } + + public function read($input) + { + return $this->_read('Process', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('Process', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Span.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Span.php new file mode 100644 index 000000000..cff0c324d --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Span.php @@ -0,0 +1,161 @@ +<?php +namespace Jaeger\Thrift; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class Span extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'traceIdLow', + 'isRequired' => true, + 'type' => TType::I64, + ), + 2 => array( + 'var' => 'traceIdHigh', + 'isRequired' => true, + 'type' => TType::I64, + ), + 3 => array( + 'var' => 'spanId', + 'isRequired' => true, + 'type' => TType::I64, + ), + 4 => array( + 'var' => 'parentSpanId', + 'isRequired' => true, + 'type' => TType::I64, + ), + 5 => array( + 'var' => 'operationName', + 'isRequired' => true, + 'type' => TType::STRING, + ), + 6 => array( + 'var' => 'references', + 'isRequired' => false, + 'type' => TType::LST, + 'etype' => TType::STRUCT, + 'elem' => array( + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\SpanRef', + ), + ), + 7 => array( + 'var' => 'flags', + 'isRequired' => true, + 'type' => TType::I32, + ), + 8 => array( + 'var' => 'startTime', + 'isRequired' => true, + 'type' => TType::I64, + ), + 9 => array( + 'var' => 'duration', + 'isRequired' => true, + 'type' => TType::I64, + ), + 10 => array( + 'var' => 'tags', + 'isRequired' => false, + 'type' => TType::LST, + 'etype' => TType::STRUCT, + 'elem' => array( + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Tag', + ), + ), + 11 => array( + 'var' => 'logs', + 'isRequired' => false, + 'type' => TType::LST, + 'etype' => TType::STRUCT, + 'elem' => array( + 'type' => TType::STRUCT, + 'class' => '\Jaeger\Thrift\Log', + ), + ), + ); + + /** + * @var int + */ + public $traceIdLow = null; + /** + * @var int + */ + public $traceIdHigh = null; + /** + * @var int + */ + public $spanId = null; + /** + * @var int + */ + public $parentSpanId = null; + /** + * @var string + */ + public $operationName = null; + /** + * @var \Jaeger\Thrift\SpanRef[] + */ + public $references = null; + /** + * @var int + */ + public $flags = null; + /** + * @var int + */ + public $startTime = null; + /** + * @var int + */ + public $duration = null; + /** + * @var \Jaeger\Thrift\Tag[] + */ + public $tags = null; + /** + * @var \Jaeger\Thrift\Log[] + */ + public $logs = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'Span'; + } + + public function read($input) + { + return $this->_read('Span', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('Span', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/SpanRef.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/SpanRef.php new file mode 100644 index 000000000..cb5ee78db --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/SpanRef.php @@ -0,0 +1,83 @@ +<?php +namespace Jaeger\Thrift; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class SpanRef extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'refType', + 'isRequired' => true, + 'type' => TType::I32, + ), + 2 => array( + 'var' => 'traceIdLow', + 'isRequired' => true, + 'type' => TType::I64, + ), + 3 => array( + 'var' => 'traceIdHigh', + 'isRequired' => true, + 'type' => TType::I64, + ), + 4 => array( + 'var' => 'spanId', + 'isRequired' => true, + 'type' => TType::I64, + ), + ); + + /** + * @var int + */ + public $refType = null; + /** + * @var int + */ + public $traceIdLow = null; + /** + * @var int + */ + public $traceIdHigh = null; + /** + * @var int + */ + public $spanId = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'SpanRef'; + } + + public function read($input) + { + return $this->_read('SpanRef', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('SpanRef', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/SpanRefType.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/SpanRefType.php new file mode 100644 index 000000000..d6d6f20c3 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/SpanRefType.php @@ -0,0 +1,28 @@ +<?php +namespace Jaeger\Thrift; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +final class SpanRefType { + const CHILD_OF = 0; + const FOLLOWS_FROM = 1; + static public $__names = array( + 0 => 'CHILD_OF', + 1 => 'FOLLOWS_FROM', + ); +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Tag.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Tag.php new file mode 100644 index 000000000..06af59939 --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/Tag.php @@ -0,0 +1,110 @@ +<?php +namespace Jaeger\Thrift; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +class Tag extends TBase { + static $isValidate = false; + + static $_TSPEC = array( + 1 => array( + 'var' => 'key', + 'isRequired' => true, + 'type' => TType::STRING, + ), + 2 => array( + 'var' => 'vType', + 'isRequired' => true, + 'type' => TType::I32, + ), + 3 => array( + 'var' => 'vStr', + 'isRequired' => false, + 'type' => TType::STRING, + ), + 4 => array( + 'var' => 'vDouble', + 'isRequired' => false, + 'type' => TType::DOUBLE, + ), + 5 => array( + 'var' => 'vBool', + 'isRequired' => false, + 'type' => TType::BOOL, + ), + 6 => array( + 'var' => 'vLong', + 'isRequired' => false, + 'type' => TType::I64, + ), + 7 => array( + 'var' => 'vBinary', + 'isRequired' => false, + 'type' => TType::STRING, + ), + ); + + /** + * @var string + */ + public $key = null; + /** + * @var int + */ + public $vType = null; + /** + * @var string + */ + public $vStr = null; + /** + * @var double + */ + public $vDouble = null; + /** + * @var bool + */ + public $vBool = null; + /** + * @var int + */ + public $vLong = null; + /** + * @var string + */ + public $vBinary = null; + + public function __construct($vals=null) { + if (is_array($vals)) { + parent::__construct(self::$_TSPEC, $vals); + } + } + + public function getName() { + return 'Tag'; + } + + public function read($input) + { + return $this->_read('Tag', self::$_TSPEC, $input); + } + + public function write($output) { + return $this->_write('Tag', self::$_TSPEC, $output); + } + +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/TagType.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/TagType.php new file mode 100644 index 000000000..3b1f69f9f --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Thrift/TagType.php @@ -0,0 +1,34 @@ +<?php +namespace Jaeger\Thrift; + +/** + * Autogenerated by Thrift Compiler (0.11.0) + * + * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING + * @generated + */ +use Thrift\Base\TBase; +use Thrift\Type\TType; +use Thrift\Type\TMessageType; +use Thrift\Exception\TException; +use Thrift\Exception\TProtocolException; +use Thrift\Protocol\TProtocol; +use Thrift\Protocol\TBinaryProtocolAccelerated; +use Thrift\Exception\TApplicationException; + + +final class TagType { + const STRING = 0; + const DOUBLE = 1; + const BOOL = 2; + const LONG = 3; + const BINARY = 4; + static public $__names = array( + 0 => 'STRING', + 1 => 'DOUBLE', + 2 => 'BOOL', + 3 => 'LONG', + 4 => 'BINARY', + ); +} + diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ThriftUdpTransport.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ThriftUdpTransport.php new file mode 100644 index 000000000..babc689dc --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ThriftUdpTransport.php @@ -0,0 +1,151 @@ +<?php + +namespace Jaeger; + +use Psr\Log\LoggerInterface; +use Psr\Log\NullLogger; +use Thrift\Transport\TTransport; + +class ThriftUdpTransport extends TTransport +{ + private $socket; + + /** + * @var string + */ + private $host; + + /** + * @var int + */ + private $port; + + /** + * @var LoggerInterface + */ + private $logger; + + /** + * @var Config + */ + private $config; + + /** + * ThriftUdpTransport constructor. + * @param string $host + * @param int $port + * @param LoggerInterface $logger + */ + public function __construct(string $host, int $port, LoggerInterface $logger = null, Config $config = null) + { + $this->setLogger($logger); + + $this->config = $config; + + $ipProtocol = $this->ipProtocolVersion(); + $this->socket = $this->createSocket($ipProtocol); + + $this->host = $host; + $this->port = $port; + } + + protected function setLogger($logger) + { + $this->logger = $logger ?? new NullLogger(); + } + + protected function createSocket(string $ipProtocol) + { + $socketDomain = AF_INET; + if ($ipProtocol === Config::IPV6) { + $socketDomain = AF_INET6; + } + + $socket = @socket_create($socketDomain, SOCK_DGRAM, SOL_UDP); + if ($socket === false) { + $this->handleSocketError("socket_create failed"); + } + return $socket; + } + + protected function ipProtocolVersion() + { + if (!empty($this->config)) { + return $this->config->ipProtocolVersion(); + } + return ""; + } + + /** + * Whether this transport is open. + * + * @return boolean true if open + */ + public function isOpen() + { + return $this->socket !== null; + } + + /** + * Open the transport for reading/writing + */ + public function open() + { + $ok = @socket_connect($this->socket, $this->host, $this->port); + if ($ok === false) { + $this->handleSocketError('socket_connect failed'); + } + } + + /** + * Close the transport. + */ + public function close() + { + if (is_null($this->socket)) { + $this->logger->warning("can't close empty socket"); + return ; + } + + @socket_close($this->socket); + $this->socket = null; + } + + /** + * Read some data into the array. + * + * @todo + * + * @param int $len How much to read + * @return string The data that has been read + */ + public function read($len) + { + } + + /** + * Writes the given data out. + * + * @param string $buf The data to write + */ + public function write($buf) + { + if (!$this->isOpen()) { + $this->logger->warning('transport is closed'); + return ; + } + + $ok = @socket_write($this->socket, $buf); + if ($ok === false) { + $this->handleSocketError("socket_write failed"); + } + } + + public function handleSocketError($msg) + { + $errorCode = socket_last_error($this->socket); + $errorMsg = socket_strerror($errorCode); + + $this->logger->warning(sprintf('%s: [code - %d] %s', $msg, $errorCode, $errorMsg)); + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Tracer.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Tracer.php new file mode 100644 index 000000000..bb0649a0b --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Tracer.php @@ -0,0 +1,420 @@ +<?php + +namespace Jaeger; + +use Exception; +use OpenTracing\Scope as OTScope; +use OpenTracing\Span as OTSpan; +use OpenTracing\UnsupportedFormatException; +use Psr\Log\LoggerInterface; +use Psr\Log\NullLogger; +use Jaeger\Codec\BinaryCodec; +use Jaeger\Codec\CodecInterface; +use Jaeger\Codec\TextCodec; +use Jaeger\Codec\ZipkinCodec; +use Jaeger\Reporter\ReporterInterface; +use Jaeger\Sampler\SamplerInterface; +use OpenTracing\Tracer as OTTracer; +use OpenTracing\SpanContext as OTSpanContext; +use OpenTracing\Reference; +use OpenTracing\StartSpanOptions; +use OpenTracing\Exceptions\UnsupportedFormat; +use const OpenTracing\Formats\BINARY; +use const OpenTracing\Formats\HTTP_HEADERS; +use const OpenTracing\Formats\TEXT_MAP; +use const OpenTracing\Tags\SPAN_KIND; +use const OpenTracing\Tags\SPAN_KIND_RPC_SERVER; +use OpenTracing\ScopeManager as OTScopeManager; + +class Tracer implements OTTracer +{ + /** + * @var string + */ + private $serviceName; + + /** + * @var ReporterInterface + */ + private $reporter; + + /** + * @var SamplerInterface + */ + private $sampler; + + /** + * @var string + */ + private $ipAddress; + + /** + * @var string + */ + private $debugIdHeader; + + /** + * @var CodecInterface[] + */ + private $codecs; + + /** + * @var LoggerInterface + */ + private $logger; + + /** + * @var bool + */ + private $oneSpanPerRpc; + + /** + * @var string[] + */ + private $tags; + + /** + * @var ScopeManager + */ + private $scopeManager; + + /** + * Tracer constructor. + * @param string $serviceName + * @param ReporterInterface $reporter + * @param SamplerInterface $sampler + * @param bool $oneSpanPerRpc + * @param LoggerInterface|null $logger + * @param ScopeManager|null $scopeManager + * @param string $traceIdHeader + * @param string $baggageHeaderPrefix + * @param string $debugIdHeader + * @param array|null $tags + */ + public function __construct( + $serviceName, + ReporterInterface $reporter, + SamplerInterface $sampler, + $oneSpanPerRpc = true, + LoggerInterface $logger = null, + ScopeManager $scopeManager = null, + $traceIdHeader = TRACE_ID_HEADER, + $baggageHeaderPrefix = BAGGAGE_HEADER_PREFIX, + $debugIdHeader = DEBUG_ID_HEADER_KEY, + $tags = null + ) { + $this->serviceName = $serviceName; + $this->reporter = $reporter; + $this->sampler = $sampler; + $this->oneSpanPerRpc = $oneSpanPerRpc; + + $this->logger = $logger ?? new NullLogger(); + $this->scopeManager = $scopeManager ?? new ScopeManager(); + + $this->debugIdHeader = $debugIdHeader; + + $this->codecs = [ + TEXT_MAP => new TextCodec( + false, + $traceIdHeader, + $baggageHeaderPrefix, + $debugIdHeader + ), + HTTP_HEADERS => new TextCodec( + true, + $traceIdHeader, + $baggageHeaderPrefix, + $debugIdHeader + ), + BINARY => new BinaryCodec(), + ZIPKIN_SPAN_FORMAT => new ZipkinCodec(), + ]; + + $this->tags = [ + JAEGER_VERSION_TAG_KEY => JAEGER_CLIENT_VERSION, + ]; + if ($tags !== null) { + $this->tags = array_merge($this->tags, $tags); + } + + $hostname = $this->getHostName(); + $this->ipAddress = $this->getHostByName($hostname); + + if (!empty($hostname)) { + $this->tags[JAEGER_HOSTNAME_TAG_KEY] = $hostname; + } + } + + /** + * @return string[] + */ + public function getTags(): array + { + return $this->tags; + } + + /** + * {@inheritdoc} + */ + public function startSpan(string $operationName, $options = []): OTSpan + { + if (!($options instanceof StartSpanOptions)) { + $options = StartSpanOptions::create($options); + } + + $parent = $this->getParentSpanContext($options); + $tags = $options->getTags(); + + $rpcServer = ($tags[SPAN_KIND] ?? null) == SPAN_KIND_RPC_SERVER; + + if ($parent == null || $parent->isDebugIdContainerOnly()) { + $traceId = $this->randomId(); + $spanId = $traceId; + $parentId = null; + $flags = 0; + $baggage = null; + if ($parent == null) { + list($sampled, $samplerTags) = $this->sampler->isSampled($traceId, $operationName); + if ($sampled) { + $flags = SAMPLED_FLAG; + $tags = $tags ?? []; + foreach ($samplerTags as $key => $value) { + $tags[$key] = $value; + } + } + } else { // have debug id + $flags = SAMPLED_FLAG | DEBUG_FLAG; + $tags = $tags ?? []; + $tags[$this->debugIdHeader] = $parent->getDebugId(); + } + } else { + $traceId = $parent->getTraceId(); + if ($rpcServer && $this->oneSpanPerRpc) { + // Zipkin-style one-span-per-RPC + $spanId = $parent->getSpanId(); + $parentId = $parent->getParentId(); + } else { + $spanId = $this->randomId(); + $parentId = $parent->getSpanId(); + } + + $flags = $parent->getFlags(); + $baggage = $parent->getBaggage(); + } + + $spanContext = new SpanContext( + $traceId, + $spanId, + $parentId, + $flags, + $baggage + ); + + $span = new Span( + $spanContext, + $this, + $operationName, + $tags ?? [], + $options->getStartTime() + ); + + $mergedTags = array_merge($this->tags, $tags); + $span->setTags($mergedTags); + + return $span; + } + + /** + * {@inheritdoc} + * + * @param SpanContext $spanContext + * @param string $format + * @param mixed $carrier + * @return void + * + * @throws UnsupportedFormat + */ + public function inject(OTSpanContext $spanContext, string $format, &$carrier): void + { + if ($spanContext instanceof SpanContext) { + $codec = $this->codecs[$format] ?? null; + + if ($codec == null) { + throw UnsupportedFormatException::forFormat(is_scalar($format) ? $format : gettype($format)); + } + + + $codec->inject($spanContext, $carrier); + return; + } + + $message = sprintf( + 'Invalid span context. Expected Jaeger\SpanContext, got %s.', + is_object($spanContext) ? get_class($spanContext) : gettype($spanContext) + ); + + $this->logger->warning($message); + } + + /** + * {@inheritdoc} + * + * @param mixed $carrier + * @return SpanContext|null + * + * @throws UnsupportedFormat + */ + public function extract(string $format, $carrier): ?OTSpanContext + { + $codec = $this->codecs[$format] ?? null; + + if ($codec == null) { + throw UnsupportedFormatException::forFormat(is_scalar($format) ? $format : gettype($format)); + } + + try { + return $codec->extract($carrier); + } catch (\Throwable $e) { + $this->logger->warning($e->getMessage()); + + return null; + } + } + + /** + * {@inheritdoc} + */ + public function flush(): void + { + $this->sampler->close(); + $this->reporter->close(); + } + + public function reportSpan(Span $span) + { + $this->reporter->reportSpan($span); + } + + /** + * {@inheritdoc} + */ + public function getScopeManager(): OTScopeManager + { + return $this->scopeManager; + } + + /** + * {@inheritdoc} + */ + public function getActiveSpan(): ?OTSpan + { + $activeScope = $this->getScopeManager()->getActive(); + if ($activeScope === null) { + return null; + } + + return $activeScope->getSpan(); + } + + /** + * {@inheritdoc} + */ + public function startActiveSpan(string $operationName, $options = []): OTScope + { + if (!$options instanceof StartSpanOptions) { + $options = StartSpanOptions::create($options); + } + + if (!$this->getParentSpanContext($options) && $this->getActiveSpan() !== null) { + $parent = $this->getActiveSpan()->getContext(); + $options = $options->withParent($parent); + } + + $span = $this->startSpan($operationName, $options); + $scope = $this->scopeManager->activate($span, $options->shouldFinishSpanOnClose()); + + return $scope; + } + + /** + * Gets parent span context (if any). + * + * @param StartSpanOptions $options + * @return null|OTSpanContext|SpanContext + */ + private function getParentSpanContext(StartSpanOptions $options) + { + $references = $options->getReferences(); + foreach ($references as $ref) { + if ($ref->isType(Reference::CHILD_OF)) { + return $ref->getSpanContext(); + } + } + + return null; + } + + /** + * @return string + * @throws Exception + */ + private function randomId(): string + { + return (string) random_int(0, PHP_INT_MAX); + } + + /** + * The facade to get the host name. + * + * @return string + */ + protected function getHostName() + { + return gethostname(); + } + + /** + * The facade to get IPv4 address corresponding to a given Internet host name. + * + * NOTE: DNS Resolution may take too long, and during this time your script is NOT being executed. + * + * @param string|null $hostname + * @return string + */ + protected function getHostByName($hostname) + { + if (empty($hostname)) { + $this->logger->error('Unable to determine host name'); + return '127.0.0.1'; + } + + return gethostbyname($hostname); + } + + /** + * @param SamplerInterface $sampler + * @return $this + */ + public function setSampler(SamplerInterface $sampler) + { + $this->sampler = $sampler; + + return $this; + } + + /** + * @return string + */ + public function getServiceName() + { + return $this->serviceName; + } + + /** + * @return string + */ + public function getIpAddress() + { + return $this->ipAddress; + } +} diff --git a/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Util/RateLimiter.php b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Util/RateLimiter.php new file mode 100644 index 000000000..d767ad40f --- /dev/null +++ b/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/Util/RateLimiter.php @@ -0,0 +1,128 @@ +<?php + +namespace Jaeger\Util; + +use Psr\Cache\CacheItemInterface; +use Psr\Cache\CacheItemPoolInterface; + +class RateLimiter +{ + /** + * @var CacheItemPoolInterface + */ + private $cache; + + /** + * @var CacheItemInterface + */ + private $balance; + + /** + * @var CacheItemInterface + */ + private $lastTick; + + /** + * @var float + */ + private $creditsPerNanosecond = 0; + + /** + * @var float + */ + private $maxBalance = 0; + + /** + * RateLimiter constructor. + * + * @param CacheItemPoolInterface $cache + * @param string $currentBalanceKey key of current balance value in $cache + * @param string $lastTickKey key of last tick value in $cache + * @throws \Psr\Cache\InvalidArgumentException + */ + public function __construct( + CacheItemPoolInterface $cache, + string $currentBalanceKey, + string $lastTickKey + ) { + $this->cache = $cache; + $this->balance = $this->cache->getItem($currentBalanceKey); + $this->lastTick = $this->cache->getItem($lastTickKey); + } + + /** + * @param $itemCost + * @return bool + */ + public function checkCredit($itemCost) + { + if (!$this->creditsPerNanosecond) { + return false; + } + + list($lastTick, $balance) = $this->getState(); + + if (!$lastTick) { + $this->saveState(hrtime(true), 0); + return true; + } + + $currentTick = hrtime(true); + $elapsedTime = $currentTick - $lastTick; + $balance += $elapsedTime * $this->creditsPerNanosecond; + if ($balance > $this->maxBalance) { + $balance = $this->maxBalance; + } + + $result = false; + if ($balance >= $itemCost) { + $balance -= $itemCost; + $result = true; + } + + $this->saveState($currentTick, $balance); + + return $result; + } + + + /** + * Initializes limiter costs and boundaries + * + * @param float $creditsPerNanosecond + * @param float $maxBalance + */ + public function initialize(float $creditsPerNanosecond, float $maxBalance) + { + $this->creditsPerNanosecond = $creditsPerNanosecond; + $this->maxBalance = $maxBalance; + } + + /** + * Method loads last tick and current balance from cache + * + * @return array [$lastTick, $balance] + */ + private function getState() : array + { + return [ + $this->lastTick->get(), + $this->balance->get() + ]; + } + + /** + * Method saves last tick and current balance into cache + * + * @param integer $lastTick + * @param float $balance + */ + private function saveState($lastTick, $balance) + { + $this->lastTick->set($lastTick); + $this->balance->set($balance); + $this->cache->saveDeferred($this->lastTick); + $this->cache->saveDeferred($this->balance); + $this->cache->commit(); + } +} |