switch ($request->getType()) { case ProtocolCached_Request_RequestType::SET: echo sprintf("# set operation: %d, %d\n", $request->getSet()->getKey(), strlen($request->getSet()->getValue())); $store->set($request->getSet()->getKey(), $request->getSet()->getValue()); var_dump($store); var_dump($request); break; case ProtocolCached_Request_RequestType::GET: $result = $store->get($request->getGet()->getKey()); break; } } catch (ProtocolBuffers\InvalidProtocoBufferException $e) { echo $e->getMessage(); } if ($result) { $response = new ProtocolCached_Response(); $response->setType(ProtocolCached_Response_ResponseType::GET); $payload = new ProtocolCached_GetResponse(); $payload->setValue($result); $response->setGet($payload); uv_write($socket, $response->serializeToString(), function ($socket, $stat) { echo "# Connection closed\n"; uv_close($socket); }); } else { echo "# Connection closed\n"; uv_close($socket); } }); }); $timer = uv_timer_init();
$c = uv_tcp_init(); uv_tcp_connect6($c, uv_ip6_addr('::1', 9999), function ($client, $stat) { if ($stat == 0) { $request = new ProtocolCached_Request(); $type = getRequestType($_SERVER['argv'][1]); $request->setType($type); if ($type == ProtocolCached_Request_RequestType::SET) { $set = new ProtocolCached_SetRequest(); $set->setKey($_SERVER['argv'][2]); $set->setValue($_SERVER['argv'][3]); $request->setSet($set); } else { if ($type == ProtocolCached_Request_RequestType::GET) { $set = new ProtocolCached_GetRequest(); $set->setKey($_SERVER['argv'][2]); $request->setGet($set); } } uv_write($client, $request->serializeToString(), function ($socket, $stat) use($type) { if ($type == ProtocolCached_Request_RequestType::GET) { uv_read_start($socket, function ($socket, $nread, $buffer) use($type) { var_dump(ProtocolCached_Response::parseFromString($buffer)); uv_close($socket); }); } else { uv_close($socket); } }); } }); uv_run();