예제 #1
0
 /**
  * @param string $key
  * @param mixed $value
  * @return $this
  */
 public function set($key, $value)
 {
     if ($this->started == false) {
         throw new SessionException('Session not stated yet. Call start() first.');
     }
     $this->keyValueStore->set($key, $value);
     return $this;
 }
예제 #2
0
$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());
                    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);