Esempio n. 1
0
 public function processRequest($req)
 {
     $request = json_decode($req['q'], true);
     $sender_node = $this->parseSenderNode($request);
     if ($sender_node !== NULL) {
         $this->updateKBuckets($sender_node);
     }
     switch ($request['query']['type']) {
         case 'FIND_NODE':
             $needle_id = \Kademlia\Node::hexId2bin($request['query']['node_id']);
             $response = @json_encode($this->createFindNodeResponse($needle_id, $sender_node));
             break;
         case 'FIND_VALUE':
             $key_id = \Kademlia\Node::hexId2bin($request['query']['key_id']);
             $data = $this->createFindValueResponse($key_id, $sender_node);
             $data['values'] = array_map(base64_encode, $data['values']);
             $response = @json_encode($data);
             break;
         case 'STORE':
             $key_id = \Kademlia\Node::hexId2bin($request['query']['key_id']);
             $value = base64_decode($request['query']['value']);
             $expire = $request['query']['expire'];
             $this->createStoreResponse($sender_node, $key_id, $value, $expire);
             $response = '{}';
             break;
         default:
             $response = '{}';
             break;
     }
     return $response;
 }