|  | <?php | 
|  |  | 
|  | /** | 
|  | * Generic class for a Thrift server. | 
|  | * | 
|  | * @package thrift.server | 
|  | */ | 
|  | abstract class TServer { | 
|  |  | 
|  | /** | 
|  | * Processor to handle new clients | 
|  | * | 
|  | * @var TProcessor | 
|  | */ | 
|  | protected $processor_; | 
|  |  | 
|  | /** | 
|  | * Server transport to be used for listening | 
|  | * and accepting new clients | 
|  | * | 
|  | * @var TServerTransport | 
|  | */ | 
|  | protected $transport_; | 
|  |  | 
|  | /** | 
|  | * Input transport factory | 
|  | * | 
|  | * @var TTransportFactory | 
|  | */ | 
|  | protected $inputTransportFactory_; | 
|  |  | 
|  | /** | 
|  | * Output transport factory | 
|  | * | 
|  | * @var TTransportFactory | 
|  | */ | 
|  | protected $outputTransportFactory_; | 
|  |  | 
|  | /** | 
|  | * Input protocol factory | 
|  | * | 
|  | * @var TProtocolFactory | 
|  | */ | 
|  | protected $inputProtocolFactory_; | 
|  |  | 
|  | /** | 
|  | * Output protocol factory | 
|  | * | 
|  | * @var TProtocolFactory | 
|  | */ | 
|  | protected $outputProtocolFactory_; | 
|  |  | 
|  | /** | 
|  | * Sets up all the factories, etc | 
|  | * | 
|  | * @param object $processor | 
|  | * @param TServerTransport $transport | 
|  | * @param TTransportFactory $inputTransportFactory | 
|  | * @param TTransportFactory $outputTransportFactory | 
|  | * @param TProtocolFactory $inputProtocolFactory | 
|  | * @param TProtocolFactory $outputProtocolFactory | 
|  | * @return void | 
|  | */ | 
|  | public function __construct($processor, | 
|  | TServerTransport $transport, | 
|  | TTransportFactory $inputTransportFactory, | 
|  | TTransportFactory $outputTransportFactory, | 
|  | TProtocolFactory $inputProtocolFactory, | 
|  | TProtocolFactory $outputProtocolFactory) { | 
|  | $this->processor_ = $processor; | 
|  | $this->transport_ = $transport; | 
|  | $this->inputTransportFactory_ = $inputTransportFactory; | 
|  | $this->outputTransportFactory_ = $outputTransportFactory; | 
|  | $this->inputProtocolFactory_ = $inputProtocolFactory; | 
|  | $this->outputProtocolFactory_ = $outputProtocolFactory; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Serves the server. This should never return | 
|  | * unless a problem permits it to do so or it | 
|  | * is interrupted intentionally | 
|  | * | 
|  | * @abstract | 
|  | * @return void | 
|  | */ | 
|  | abstract public function serve(); | 
|  |  | 
|  | /** | 
|  | * Stops the server serving | 
|  | * | 
|  | * @abstract | 
|  | * @return void | 
|  | */ | 
|  | abstract public function stop(); | 
|  | } |