Add a thread pool based async file implementation.

This commit is contained in:
Sönke Ludwig 2016-10-06 22:04:33 +02:00
parent a2691ff0af
commit 2a8c52f347
6 changed files with 350 additions and 51 deletions

View file

@ -104,8 +104,12 @@ interface EventDriverFiles {
@safe: /*@nogc:*/ nothrow:
FileFD open(string path, FileOpenMode mode);
FileFD createTemp();
void write(FileFD file, ulong offset, ubyte[] buffer, IOCallback on_write_finish);
void read(FileFD file, ulong offset, ubyte[] buffer, IOCallback on_read_finish);
void close(FileFD file);
ulong getSize(FileFD file);
void write(FileFD file, ulong offset, const(ubyte)[] buffer, FileIOCallback on_write_finish);
void read(FileFD file, ulong offset, ubyte[] buffer, FileIOCallback on_read_finish);
void cancelWrite(FileFD file);
void cancelRead(FileFD file);
@ -191,6 +195,7 @@ interface EventDriverWatchers {
alias ConnectCallback = void delegate(StreamSocketFD, ConnectStatus);
alias AcceptCallback = void delegate(StreamListenSocketFD, StreamSocketFD);
alias IOCallback = void delegate(StreamSocketFD, IOStatus, size_t);
alias FileIOCallback = void delegate(FileFD, IOStatus, size_t);
alias EventCallback = void delegate(EventID);
alias SignalCallback = void delegate(int);
alias TimerCallback = void delegate(TimerID);