/** * @param \Kbrw\RiakBundle\Model\Cluster\Cluster $cluster * @param \Kbrw\RiakBundle\Model\Bucket\Bucket $bucket * @param string | array<string> | \Kbrw\RiakBundle\Model\KV\Data | array<\Kbrw\RiakBundle\Model\KV\Data> | \Kbrw\RiakBundle\Model\KV\Datas $datas * @return \Kbrw\RiakBundle\Model\KV\Datas */ public function fetch($cluster, $bucket, $datas) { // normalize $datas parameter $datas = $this->normalizeDatas($datas, $bucket->getFormat(), $cluster->getClientId(), true); // Split work in smaller pieces to avoid exception caused by too many opened connections $result = new Datas(); $chunks = $datas->chunk($cluster->getMaxParallelCalls()); foreach ($chunks as $chunk) { $result->addAll($this->doFetch($cluster, $bucket, $chunk)); } return $result; }
/** * @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; }