Skip to content

Commit c6187f8

Browse files
committed
Reduced indention
1 parent d7085d0 commit c6187f8

File tree

1 file changed

+65
-48
lines changed

1 file changed

+65
-48
lines changed

src/Eio/File.php

Lines changed: 65 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -30,67 +30,84 @@ public function stat(): PromiseInterface
3030
public function getContents(int $offset = 0 , ?int $maxlen = null): PromiseInterface
3131
{
3232
$this->activate();
33-
return new Promise(function (callable $resolve, callable $reject) use ($offset, $maxlen): void {
34-
\eio_open(
35-
$this->path . DIRECTORY_SEPARATOR . $this->name,
36-
\EIO_O_RDONLY,
37-
0,
38-
\EIO_PRI_DEFAULT,
39-
function ($_, $fileDescriptor) use ($resolve, $reject, $offset, $maxlen): void {
40-
try {
41-
\eio_fstat($fileDescriptor, \EIO_PRI_DEFAULT, function ($fileDescriptor, $stat) use ($resolve, $reject, $offset, $maxlen): void {
42-
try {
43-
\eio_read($fileDescriptor, $maxlen ?? (int)$stat['size'], $offset, \EIO_PRI_DEFAULT, function ($fileDescriptor, string $buffer) use ($resolve): void {
44-
\eio_close($fileDescriptor, \EIO_PRI_DEFAULT, function () use ($resolve, $buffer) {
45-
$this->deactivate();
46-
$resolve($buffer);
47-
});
48-
}, $fileDescriptor);
49-
} catch (\Throwable $error) {
50-
$this->deactivate();
51-
$reject($error);
52-
}
33+
return $this->openFile(
34+
$this->path . DIRECTORY_SEPARATOR . $this->name,
35+
\EIO_O_RDONLY,
36+
0,
37+
)->then(
38+
function ($fileDescriptor) use ($offset, $maxlen): PromiseInterface {
39+
return $this->statFileDescriptor($fileDescriptor)->then(function ($stat) use ($fileDescriptor, $offset, $maxlen): PromiseInterface {
40+
return new Promise (function (callable $resolve) use ($fileDescriptor, $offset, $maxlen, $stat): void {
41+
\eio_read($fileDescriptor, $maxlen ?? (int)$stat['size'], $offset, \EIO_PRI_DEFAULT, function ($fileDescriptor, string $buffer) use ($resolve): void {
42+
$resolve($this->closeOpenFile($fileDescriptor)->then(function () use ($buffer): string {
43+
return $buffer;
44+
}));
5345
}, $fileDescriptor);
54-
} catch (\Throwable $error) {
55-
$this->deactivate();
56-
$reject($error);
57-
}
58-
}
59-
);
60-
});
46+
});
47+
});
48+
}
49+
);
6150
}
6251

6352
public function putContents(string $contents, int $flags = 0)
6453
{
6554
$this->activate();
66-
return new Promise(function (callable $resolve, callable $reject) use ($contents, $flags): void {
67-
\eio_open(
55+
return $this->openFile(
6856
$this->path . DIRECTORY_SEPARATOR . $this->name,
6957
(($flags & \FILE_APPEND) == \FILE_APPEND) ? \EIO_O_RDWR | \EIO_O_APPEND : \EIO_O_RDWR | \EIO_O_CREAT,
70-
0644,
58+
0644
59+
)->then(
60+
function ($fileDescriptor) use ($contents, $flags): PromiseInterface {
61+
return new Promise (function (callable $resolve) use ($contents, $fileDescriptor): void {
62+
\eio_write($fileDescriptor, $contents, strlen($contents), 0, \EIO_PRI_DEFAULT, function ($fileDescriptor, int $bytesWritten) use ($resolve): void {
63+
$resolve($this->closeOpenFile($fileDescriptor)->then(function () use ($bytesWritten): int {
64+
return $bytesWritten;
65+
}));
66+
}, $fileDescriptor);
67+
});
68+
}
69+
);
70+
}
71+
72+
private function statFileDescriptor($fileDescriptor): PromiseInterface
73+
{
74+
return new Promise(function (callable $resolve, callable $reject) use ($fileDescriptor) {
75+
\eio_fstat($fileDescriptor, \EIO_PRI_DEFAULT, function ($_, $stat) use ($resolve): void {
76+
$resolve($stat);
77+
}, $fileDescriptor);
78+
});
79+
}
80+
81+
private function openFile(string $path, int $flags, int $mode): PromiseInterface
82+
{
83+
return new Promise(function (callable $resolve, callable $reject) use ($path, $flags, $mode): void {
84+
\eio_open(
85+
$path,
86+
$flags,
87+
$mode,
7188
\EIO_PRI_DEFAULT,
72-
function ($_, $fileDescriptor) use ($resolve, $reject, $contents, $flags): void {
73-
try {
74-
\eio_write($fileDescriptor, $contents, strlen($contents), 0, \EIO_PRI_DEFAULT, function ($fileDescriptor, int $bytesWritten) use ($resolve, $reject): void {
75-
try {
76-
\eio_close($fileDescriptor, \EIO_PRI_DEFAULT, function () use ($resolve, $bytesWritten): void {
77-
$this->deactivate();
78-
$resolve($bytesWritten);
79-
});
80-
} catch (\Throwable $error) {
81-
$this->deactivate();
82-
$reject($error);
83-
}
84-
}, $fileDescriptor);
85-
} catch (\Throwable $error) {
86-
$this->deactivate();
87-
$reject($error);
88-
}
89+
function ($_, $fileDescriptor) use ($resolve): void {
90+
$resolve($fileDescriptor);
8991
}
9092
);
9193
});
9294
}
9395

96+
private function closeOpenFile($fileDescriptor): PromiseInterface
97+
{
98+
return new Promise(function (callable $resolve) use ($fileDescriptor) {
99+
try {
100+
\eio_close($fileDescriptor, \EIO_PRI_DEFAULT, function () use ($resolve): void {
101+
$this->deactivate();
102+
$resolve();
103+
});
104+
} catch (\Throwable $error) {
105+
$this->deactivate();
106+
throw $error;
107+
}
108+
});
109+
}
110+
94111
public function unlink(): PromiseInterface
95112
{
96113
$this->activate();
@@ -121,4 +138,4 @@ protected function deactivate(): void
121138
{
122139
$this->poll->deactivate();
123140
}
124-
}
141+
}

0 commit comments

Comments
 (0)