/** * @param array<string> $keys * @return \Kbrw\RiakBundle\Model\KV\Datas */ public function fetch($keys) { $datas = new Datas(); foreach ($keys as $key) { if (array_key_exists($key, $this->content)) { $datas->add(new Data($key, $this->content[$key])); } } return $datas; }
/** * @param string $method * @param \Kbrw\RiakBundle\Model\KV\Datas $datas * @param \Guzzle\Http\Curl\CurlMultiInterface $curlMulti * @param \Guzzle\Service\Client $client * @return array<\Guzzle\Http\Message\RequestInterface> */ public function prepareRequests($method, $datas, &$curlMulti, $client) { $requests = array(); foreach ($datas->getDatas() as $data) { $request = $client->createRequest($method, urlencode($data->getKey()), $data->getHeaderBag()->all(), $data->getContent(true)); $curlMulti->add($request); $requests[$data->getKey()] = $request; } return $requests; }
/** * @param \Kbrw\RiakBundle\Model\Cluster\Cluster $cluster * @param \Kbrw\RiakBundle\Model\Bucket\Bucket $bucket * @param array<string> $keys * @return \Kbrw\RiakBundle\Model\KV\Datas */ public function fetch($cluster, $bucket, $keys) { if (!is_array($keys)) { $keys = array($keys); } $datas = new Datas(); // Split work in smaller pieces to avoid exception caused by too many opened connections if (count($keys) > $cluster->getMaxParallelCalls()) { $chunks = array_chunk($keys, $cluster->getMaxParallelCalls()); foreach ($chunks as $chunk) { $datas->addAll($this->fetch($cluster, $bucket, $chunk)); } return $datas; } foreach ($keys as $key) { $key = trim($key); $data = new Data($key); if (isset($this->content[$key])) { $data->setStringContent($this->content[$key]); if ($this->contentTypeNormalizer->isFormatSupportedForSerialization($bucket->getFormat())) { /*var_dump($data->getRawContent()); var_dump($bucket->getFullyQualifiedClassName()); var_dump($bucket->getFormat()); exit;*/ $riakKVObject = $this->serializer->deserialize($data->getContent(true), $bucket->getFullyQualifiedClassName(), $bucket->getFormat()); if ($riakKVObject !== false) { if ($riakKVObject instanceof Transmutable) { $riakKVObject = $riakKVObject->transmute(); } $data->setContent($riakKVObject); } } } $datas->add($data); } return $datas; }