Merge pull request #11980 from nextcloud/assemblly-stream-lazy
lazy open first source stream in assemblystream
This commit is contained in:
commit
869df2ee7a
|
@ -76,9 +76,6 @@ class AssemblyStream implements \Icewind\Streams\File {
|
||||||
return strnatcmp($a->getName(), $b->getName());
|
return strnatcmp($a->getName(), $b->getName());
|
||||||
});
|
});
|
||||||
$this->nodes = array_values($nodes);
|
$this->nodes = array_values($nodes);
|
||||||
if (count($this->nodes) > 0) {
|
|
||||||
$this->currentStream = $this->getStream($this->nodes[0]);
|
|
||||||
}
|
|
||||||
$this->size = array_reduce($this->nodes, function ($size, IFile $file) {
|
$this->size = array_reduce($this->nodes, function ($size, IFile $file) {
|
||||||
return $size + $file->getSize();
|
return $size + $file->getSize();
|
||||||
}, 0);
|
}, 0);
|
||||||
|
@ -107,7 +104,11 @@ class AssemblyStream implements \Icewind\Streams\File {
|
||||||
*/
|
*/
|
||||||
public function stream_read($count) {
|
public function stream_read($count) {
|
||||||
if (is_null($this->currentStream)) {
|
if (is_null($this->currentStream)) {
|
||||||
return '';
|
if ($this->currentNode < count($this->nodes)) {
|
||||||
|
$this->currentStream = $this->getStream($this->nodes[$this->currentNode]);
|
||||||
|
} else {
|
||||||
|
return '';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
@ -191,7 +192,7 @@ class AssemblyStream implements \Icewind\Streams\File {
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function stream_eof() {
|
public function stream_eof() {
|
||||||
return $this->pos >= $this->size || $this->currentStream === null;
|
return $this->pos >= $this->size || ($this->currentNode >= count($this->nodes) && $this->currentNode === null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue