blob: 3b017523a3eec8ad927718c04e11ae87a41ed0d8 [file] [log] [blame]
Volodymyr Panivko68139d12024-03-19 23:14:07 +01001<?php
2
3error_reporting(E_ALL);
4
5require_once __DIR__ . '/../../vendor/autoload.php';
6
7$opts = getopt(
8 'h::',
9 [
10 'port::',
11 'domain-socket::',
12 'pipe::',
13 'server-type::',
14 'transport::',
15 'protocol::',
16 'multiplex::',
17 'abstract-namespace::',
18 'ssl::',
19 'zlib::',
20 'processor-events::',
21 'workers::',
22 ]
23);
24if (isset($opts['h'])) {
25 echo <<<HELP
26 -h | --help produce help message
27 --port=arg (9090) Port number to listen
28 --domain-socket=arg Unix Domain Socket (e.g. /tmp/ThriftTest.thrift)
29 --pipe=arg Windows Named Pipe (e.g. MyThriftPipe)
30 --server-type=arg (simple) type of server, "simple", "thread-pool",
31 "threaded", or "nonblocking"
32 --transport=arg (buffered) transport: buffered, framed, http, anonpipe, zlib
33 --protocol=arg (binary) protocol: binary, compact, header, json
34 --multiplex Add TMultiplexedProtocol service name "ThriftTest"
35 --abstract-namespace Create the domain socket in the Abstract Namespace
36 (no connection with filesystem pathnames)
37 --ssl Encrypted Transport using SSL
38 --zlib Wrapped Transport using Zlib
39 --processor-events processor-events
40 -n=arg | --workers=arg (=4) Number of thread pools workers. Only valid for
41 thread-pool server type
42HELP;
43 exit(0);
44}
45
46$port = $opts['port'] ?? 9090;
47$transport = $opts['transport'] ?? 'buffered';
48
49
50$loader = new Thrift\ClassLoader\ThriftClassLoader();
51$loader->registerDefinition('ThriftTest', __DIR__ . '/../../lib/php/test/Resources/packages/phpcm');
52$loader->register();
53
54$sslOptions = \stream_context_create(
55 [
56 'ssl' => [
57 'verify_peer' => false,
58 'verify_peer_name' => false,
59 ],
60 ]
61);
62
63require_once __DIR__ . '/Handler.php';
64
65switch ($transport) {
66 case 'framed':
67 $serverTransportFactory = new \Thrift\Factory\TFramedTransportFactory();
68 break;
69 default:
70 $serverTransportFactory = new \Thrift\Factory\TTransportFactory();
71}
72
73$serverTransport = new \Thrift\Server\TServerSocket('localhost', $port);
74$handler = new Handler();
75$processor = new ThriftTest\ThriftTestProcessor($handler);
76
77$server = new \Thrift\Server\TSimpleServer(
78 $processor,
79 $serverTransport,
80 $serverTransportFactory,
81 $serverTransportFactory,
82 new \Thrift\Factory\TBinaryProtocolFactory(),
83 new \Thrift\Factory\TBinaryProtocolFactory()
84);
85
86echo "Starting the Test server...\n";
87$server->serve();