forked from reactphp/filesystem
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathAdapterInterface.php
More file actions
247 lines (219 loc) · 5.97 KB
/
AdapterInterface.php
File metadata and controls
247 lines (219 loc) · 5.97 KB
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
<?php
namespace React\Filesystem;
use React\Filesystem\ObjectStream;
use React\EventLoop\LoopInterface;
use React\Promise\PromiseInterface;
interface AdapterInterface
{
const CREATION_MODE = 'rwxrw----';
/**
* Checks whether the current installation supports the adapter.
*
* @return bool
*/
public static function isSupported();
/**
* Return the loop associated with this adapter.
*
* @return LoopInterface
*/
public function getLoop();
/**
* Get the relevant filesystem for this adapter.
*
* @internal
* @return FilesystemInterface
*/
public function getFilesystem();
/**
* Set the relevant filesystem for this adapter.
*
* @internal
* @param FilesystemInterface $filesystem
* @return void
*/
public function setFilesystem(FilesystemInterface $filesystem);
/**
* Call the underlying filesystem.
*
* @internal
* @param string $function
* @param array $args
* @param int $errorResultCode
* @return PromiseInterface
*/
public function callFilesystem($function, $args, $errorResultCode = -1);
/**
* Create a directory at the given path with the given mode.
*
* @param string $path
* @param $mode
* @return PromiseInterface
*/
public function mkdir($path, $mode = self::CREATION_MODE);
/**
* Remove the given directory, fails when it has contents.
*
* @param string $path
* @return PromiseInterface
*/
public function rmdir($path);
/**
* Remove the given file.
*
* @param string $filename
* @return PromiseInterface
*/
public function unlink($filename);
/**
* Change the mode of the given path.
*
* @param string $path
* @param int $mode
* @return PromiseInterface
*/
public function chmod($path, $mode);
/**
* Change the owner of the given path.
*
* @param string $path
* @param int $uid
* @param int $gid
* @return PromiseInterface
*/
public function chown($path, $uid, $gid);
/**
* Stat the node, returning information such as the file, c/m/a-time, mode, g/u-id, and more.
*
* @param string $filename
* @return PromiseInterface
*/
public function stat($filename);
/**
* List contents of the given path.
*
* @param string $path
* @return PromiseInterface
*/
public function ls($path);
/**
* List contents of the given path.
*
* @param string $path
* @return ObjectStream
*/
public function lsStream($path);
/**
* Touch the given path, either creating a file, or updating mtime on the file.
*
* @param string $path
* @param $mode
* @return PromiseInterface
*/
public function touch($path, $mode = self::CREATION_MODE);
/**
* Open a file for reading or writing at the given path. This will return a file descriptor,
* which can be used to read or write to the file. And ultimately close the file descriptor.
*
* @param string $path
* @param string $flags
* @param $mode
* @return PromiseInterface
*/
public function open($path, $flags, $mode = self::CREATION_MODE);
/**
* Read from the given file descriptor.
*
* @param mixed $fileDescriptor
* @param int $length
* @param int $offset
* @return PromiseInterface
*/
public function read($fileDescriptor, $length, $offset);
/**
* Write to the given file descriptor.
*
* @param mixed $fileDescriptor
* @param string $data
* @param int $length
* @param int $offset
* @return PromiseInterface
*/
public function write($fileDescriptor, $data, $length, $offset);
/**
* Close the given file descriptor.
*
* @param mixed $fd
* @return PromiseInterface
*/
public function close($fd);
/**
* Reads the entire file.
*
* This is an optimization for adapters which can optimize
* the open -> (seek ->) read -> close sequence into one call.
*
* @param string $path
* @param int $offset
* @param int|null $length
* @return PromiseInterface
*/
public function getContents($path, $offset = 0, $length = null);
/**
* Writes the given content to the specified file.
* If the file exists, the file is truncated.
* If the file does not exist, the file will be created.
*
* This is an optimization for adapters which can optimize
* the open -> write -> close sequence into one call.
*
* @param string $path
* @param string $content
* @return PromiseInterface
* @see AdapterInterface::appendContents()
*/
public function putContents($path, $content);
/**
* Appends the given content to the specified file.
* If the file does not exist, the file will be created.
*
* This is an optimization for adapters which can optimize
* the open -> write -> close sequence into one call.
*
* @param string $path
* @param string $content
* @return PromiseInterface
* @see AdapterInterface::putContents()
*/
public function appendContents($path, $content);
/**
* Rename a node.
*
* @param string $fromPath
* @param string $toPath
* @return PromiseInterface
*/
public function rename($fromPath, $toPath);
/**
* Read link information from the given path (has to be a symlink).
*
* @param string $path
* @return PromiseInterface
*/
public function readlink($path);
/**
* Create a symlink from $fromPath to $toPath.
*
* @param string $fromPath
* @param string $toPath
* @return PromiseInterface
*/
public function symlink($fromPath, $toPath);
/**
* Detect the type of the given path.
*
* @param string $path
* @return PromiseInterface
*/
public function detectType($path);
}