|  | <?php | 
|  |  | 
|  | error_reporting(E_ALL); | 
|  |  | 
|  | require_once __DIR__ . '/../../vendor/autoload.php'; | 
|  |  | 
|  | $opts = getopt( | 
|  | 'h::', | 
|  | [ | 
|  | 'port::', | 
|  | 'domain-socket::', | 
|  | 'pipe::', | 
|  | 'server-type::', | 
|  | 'transport::', | 
|  | 'protocol::', | 
|  | 'multiplex::', | 
|  | 'abstract-namespace::', | 
|  | 'ssl::', | 
|  | 'zlib::', | 
|  | 'processor-events::', | 
|  | 'workers::', | 
|  | ] | 
|  | ); | 
|  | if (isset($opts['h'])) { | 
|  | echo <<<HELP | 
|  | -h | --help                  produce help message | 
|  | --port=arg (9090)            Port number to listen | 
|  | --domain-socket=arg          Unix Domain Socket (e.g. /tmp/ThriftTest.thrift) | 
|  | --pipe=arg                   Windows Named Pipe (e.g. MyThriftPipe) | 
|  | --server-type=arg (simple)   type of server, "simple", "thread-pool", | 
|  | "threaded", or "nonblocking" | 
|  | --transport=arg (buffered)   transport: buffered, framed, http, anonpipe, zlib | 
|  | --protocol=arg (binary)      protocol: binary, compact, header, json | 
|  | --multiplex                  Add TMultiplexedProtocol service name "ThriftTest" | 
|  | --abstract-namespace         Create the domain socket in the Abstract Namespace | 
|  | (no connection with filesystem pathnames) | 
|  | --ssl                        Encrypted Transport using SSL | 
|  | --zlib                       Wrapped Transport using Zlib | 
|  | --processor-events           processor-events | 
|  | -n=arg | --workers=arg (=4)  Number of thread pools workers. Only valid for | 
|  | thread-pool server type | 
|  | HELP; | 
|  | exit(0); | 
|  | } | 
|  |  | 
|  | $port = $opts['port'] ?? 9090; | 
|  | $transport = $opts['transport'] ?? 'buffered'; | 
|  |  | 
|  |  | 
|  | $loader = new Thrift\ClassLoader\ThriftClassLoader(); | 
|  | $loader->registerDefinition('ThriftTest', __DIR__ . '/../../lib/php/test/Resources/packages/phpcm'); | 
|  | $loader->register(); | 
|  |  | 
|  | $sslOptions = \stream_context_create( | 
|  | [ | 
|  | 'ssl' => [ | 
|  | 'verify_peer' => false, | 
|  | 'verify_peer_name' => false, | 
|  | ], | 
|  | ] | 
|  | ); | 
|  |  | 
|  | require_once __DIR__ . '/Handler.php'; | 
|  |  | 
|  | switch ($transport) { | 
|  | case 'framed': | 
|  | $serverTransportFactory = new \Thrift\Factory\TFramedTransportFactory(); | 
|  | break; | 
|  | default: | 
|  | $serverTransportFactory = new \Thrift\Factory\TTransportFactory(); | 
|  | } | 
|  |  | 
|  | $serverTransport = new \Thrift\Server\TServerSocket('localhost', $port); | 
|  | $handler = new Handler(); | 
|  | $processor = new ThriftTest\ThriftTestProcessor($handler); | 
|  |  | 
|  | $server = new \Thrift\Server\TSimpleServer( | 
|  | $processor, | 
|  | $serverTransport, | 
|  | $serverTransportFactory, | 
|  | $serverTransportFactory, | 
|  | new \Thrift\Factory\TBinaryProtocolFactory(), | 
|  | new \Thrift\Factory\TBinaryProtocolFactory() | 
|  | ); | 
|  |  | 
|  | echo "Starting the Test server...\n"; | 
|  | $server->serve(); |