Skip to content

Commit

Permalink
Add route.
Browse files Browse the repository at this point in the history
  • Loading branch information
twose committed Oct 18, 2018
1 parent 246d522 commit e9476c5
Showing 1 changed file with 28 additions and 17 deletions.
45 changes: 28 additions & 17 deletions examples/grpc/greeter_server.php
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<?php

use Helloworld\HelloReply;
use Helloworld\HelloRequest;

Expand All @@ -12,26 +13,36 @@
'open_http2_protocol' => true
]);
$http->on('workerStart', function (swoole_http_server $server) {
echo "nghttp -v http://127.0.0.1:{$server->port}\n";
echo "php " . __DIR__ . "/greeter_client.php\n";
});
$http->on('request', function (swoole_http_request $request, swoole_http_response $response) use ($http) {
/**@var $request_message HelloRequest */
$request_message = Grpc\Parser::deserializeMessage([HelloRequest::class, null], $request->rawcontent());
if ($request_message) {
$response_message = new HelloReply();
$response_message->setMessage('Hello ' . $request_message->getName());
$response->header('content-type', 'application/grpc');
$response->header('trailer','grpc-status, grpc-message');
$trailer = [
"grpc-status" => "0",
"grpc-message" => ""
];
foreach ($trailer as $trailer_name => $trailer_value) {
$response->trailer($trailer_name, $trailer_value);
$path = $request->server['request_uri'];
$route = [
'/helloworld.Greeter/SayHello' => function (...$args) {
[$server, $request, $response] = $args;
/**@var $request_message HelloRequest */
$request_message = Grpc\Parser::deserializeMessage([HelloRequest::class, null], $request->rawContent());
if ($request_message) {
$response_message = new HelloReply();
$response_message->setMessage('Hello ' . $request_message->getName());
$response->header('content-type', 'application/grpc');
$response->header('trailer', 'grpc-status, grpc-message');
$trailer = [
"grpc-status" => "0",
"grpc-message" => ""
];
foreach ($trailer as $trailer_name => $trailer_value) {
$response->trailer($trailer_name, $trailer_value);
}
$response->end(Grpc\Parser::serializeMessage($response_message));
return true;
}
return false;
}
$response->end(Grpc\Parser::serializeMessage($response_message));
} else {
$response->end('failed');
];
if (!(isset($route[$path]) && $route[$path]($http, $request, $response))) {
$response->status(400);
$response->end('Bad Request');
}
});
$http->start();

0 comments on commit e9476c5

Please sign in to comment.