]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/jaegertracing/thrift/lib/php/lib/Server/TSimpleServer.php
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / jaegertracing / thrift / lib / php / lib / Server / TSimpleServer.php
diff --git a/ceph/src/jaegertracing/thrift/lib/php/lib/Server/TSimpleServer.php b/ceph/src/jaegertracing/thrift/lib/php/lib/Server/TSimpleServer.php
new file mode 100644 (file)
index 0000000..4c1dda5
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+
+namespace Thrift\Server;
+
+use Thrift\Exception\TTransportException;
+
+/**
+ * Simple implemtation of a Thrift server.
+ *
+ * @package thrift.server
+ */
+class TSimpleServer extends TServer
+{
+    /**
+     * Flag for the main serving loop
+     *
+     * @var bool
+     */
+    private $stop_ = false;
+
+    /**
+     * Listens for new client using the supplied
+     * transport. It handles TTransportExceptions
+     * to avoid timeouts etc killing it
+     *
+     * @return void
+     */
+    public function serve()
+    {
+        $this->transport_->listen();
+
+        while (!$this->stop_) {
+            try {
+                $transport = $this->transport_->accept();
+
+                if ($transport != null) {
+                    $inputTransport = $this->inputTransportFactory_->getTransport($transport);
+                    $outputTransport = $this->outputTransportFactory_->getTransport($transport);
+                    $inputProtocol = $this->inputProtocolFactory_->getProtocol($inputTransport);
+                    $outputProtocol = $this->outputProtocolFactory_->getProtocol($outputTransport);
+                    while ($this->processor_->process($inputProtocol, $outputProtocol)) {
+                    }
+                }
+            } catch (TTransportException $e) {
+            }
+        }
+    }
+
+    /**
+     * Stops the server running. Kills the transport
+     * and then stops the main serving loop
+     *
+     * @return void
+     */
+    public function stop()
+    {
+        $this->transport_->close();
+        $this->stop_ = true;
+    }
+}