summaryrefslogtreecommitdiff
path: root/vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/ZipkinReporterFactory.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/ZipkinReporterFactory.php')
-rw-r--r--vendor/jonahgeorge/jaeger-client-php/src/Jaeger/ReporterFactory/ZipkinReporterFactory.php46
1 files changed, 46 insertions, 0 deletions
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);
+ }
+}