Nextrek
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
<?php
/*
* This file is part of the Predis package.
*
* (c) Daniele Alessandri <suppakilla@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Predis\Iterator;
/**
* Abstracts the access to a streamable list of tuples represented
* as a multibulk reply that alternates keys and values.
*
* @author Daniele Alessandri <suppakilla@gmail.com>
*/
class MultiBulkResponseTuple extends MultiBulkResponse implements \OuterIterator
{
private $iterator;
/**
* @param MultiBulkResponseSimple $iterator Multibulk reply iterator.
*/
public function __construct(MultiBulkResponseSimple $iterator)
{
$this->checkPreconditions($iterator);
$virtualSize = count($iterator) / 2;
$this->iterator = $iterator;
$this->position = $iterator->getPosition();
$this->current = $virtualSize > 0 ? $this->getValue() : null;
$this->replySize = $virtualSize;
}
/**
* Checks for valid preconditions.
*
* @param MultiBulkResponseSimple $iterator Multibulk reply iterator.
*/
protected function checkPreconditions(MultiBulkResponseSimple $iterator)
{
if ($iterator->getPosition() !== 0) {
throw new \RuntimeException('Cannot initialize a tuple iterator with an already initiated iterator');
}
if (($size = count($iterator)) % 2 !== 0) {
throw new \UnexpectedValueException("Invalid reply size for a tuple iterator [$size]");
}
}
/**
* {@inheritdoc}
*/
public function getInnerIterator()
{
return $this->iterator;
}
/**
* {@inheritdoc}
*/
public function __destruct()
{
$this->iterator->sync(true);
}
/**
* {@inheritdoc}
*/
protected function getValue()
{
$k = $this->iterator->current();
$this->iterator->next();
$v = $this->iterator->current();
$this->iterator->next();
return array($k, $v);
}
}
|
Revision |
Author |
Commited |
Message |
1464
|
MOliva
|
Tue 13 Oct, 2020 11:16:56 +0000 |
|