return count($this->store); } public function set($key, $value) { $this->store[$key] = $value; } public function get($key) { $result = NULL; if (isset($this->store[$key])) { $result = $this->store[$key]; } return $result; } } $store = new KeyValueStore(); $tcp = uv_tcp_init(); uv_tcp_bind6($tcp, uv_ip6_addr('::1', 9999)); echo "# Server listening to ::1 9999\n"; uv_listen($tcp, 100, function ($server) use($store) { $client = uv_tcp_init(); uv_accept($server, $client); echo "# Accepted\n"; uv_read_start($client, function ($socket, $nread, $buffer) use($server, $store) { try { $result = null; $request = ProtocolCached_Request::parseFromString($buffer); 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());
/** * @return $this */ public function close() { $this->keyValueStore->setValues([]); $this->sessionWrapper->close(); return $this; }