| <?php |
| |
| include_once $GLOBALS['THRIFT_ROOT'].'/server/TServer.php'; |
| |
| /** |
| * 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; |
| } |
| } |