CallbackReadDataWrapper   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 0
dl 0
loc 50
ccs 0
cts 28
cp 0
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A wrap() 0 13 1
A open() 0 9 1
A stream_read() 0 7 2
1
<?php
2
3
namespace OCA\Files_Antivirus;
4
5
use Icewind\Streams\CallbackWrapper;
6
use Icewind\Streams\Wrapper;
7
8
class CallbackReadDataWrapper extends CallbackWrapper {
9
	/**
10
	 * @var callable
11
	 */
12
	protected $readDataCallback;
13
14
	/**
15
	 * Wraps a stream with the provided callbacks
16
	 *
17
	 * @param resource $source
18
	 * @param callable $readData (optional)
19
	 * @param callable $write (optional)
20
	 * @param callable $close (optional)
21
	 * @param callable $readDir (optional)
22
	 * @return resource
23
	 *
24
	 * @throws \BadMethodCallException
25
	 */
26
	public static function wrap($source, $readData = null, $write = null, $close = null, $readDir = null, $preClose = null) {
27
		$context = stream_context_create([
28
			'callbackReadData' => [
29
				'source' => $source,
30
				'readData' => $readData,
31
				'write' => $write,
32
				'close' => $close,
33
				'readDir' => $readDir,
34
				'preClose' => $preClose
35
			]
36
		]);
37
		return Wrapper::wrapSource($source, $context, 'callbackReadData', self::class);
38
	}
39
40
	protected function open() {
41
		$context = $this->loadContext('callbackReadData');
42
43
		$this->readDataCallback = $context['readData'];
44
		$this->writeCallback = $context['write'];
45
		$this->closeCallback = $context['close'];
46
		$this->readDirCallBack = $context['readDir'];
47
		return true;
48
	}
49
50
	public function stream_read($count) {
51
		$result = parent::stream_read($count);
52
		if (is_callable($this->readDataCallback)) {
53
			call_user_func($this->readDataCallback, strlen($count), $result);
54
		}
55
		return $result;
56
	}
57
}
58