3d81854214
Can be used to set the SO_REUSEPORT option for multi-thread/multi-process incoming TCP connection distribution. |
||
---|---|---|
examples | ||
lib | ||
source/eventcore | ||
tests | ||
.editorconfig | ||
.gitignore | ||
.travis.yml | ||
appveyor.yml | ||
dub.sdl | ||
README.md | ||
travis-ci.sh |
EventCore
This is a high-performance native event loop abstraction for D, focused on asynchronous I/O and GUI message integration. The API is callback (delegate) based. For a higher level fiber based abstraction, take a look at vibe.d.
Supported drivers and operating systems
Driver | Linux | Windows | macOS | FreeBSD | Android | iOS |
---|---|---|---|---|---|---|
SelectEventDriver | yes | yes | yes | yes¹ | — | — |
EpollEventDriver | yes | — | — | — | — | — |
WinAPIEventDriver | — | yes | — | — | — | — |
KqueueEventDriver | — | — | yes | yes¹ | — | — |
LibasyncEventDriver | —¹ | —¹ | —¹ | —¹ | — | — |
¹ planned, but not currenly implemented
Driver development status
Feature | SelectEventDriver | EpollEventDriver | WinAPIEventDriver | KqueueEventDriver |
---|---|---|---|---|
TCP Sockets | yes | yes | — | yes |
UDP Sockets | yes | yes | — | yes |
USDS | yes | yes | — | yes |
DNS | yes | yes | yes | yes |
Timers | yes | yes | yes | yes |
Events | yes | yes | yes | yes |
Unix Signals | yes² | yes² | — | — |
Files | yes | yes | yes | yes |
UI Integration | yes¹ | yes¹ | yes | yes¹ |
File watcher | yes² | yes² | yes | — |
Feature | LibasyncEventDriver |
---|---|
TCP Sockets | — |
UDP Sockets | — |
USDS | — |
DNS | — |
Timers | — |
Events | — |
Unix Signals | — |
Files | — |
UI Integration | — |
File watcher | — |
¹ Manually, by adopting the X11 display connection socket
² Currently only supported on Linux
Open questions
- Error code reporting
- Adopting existing file descriptors (done for files)
- Enqueued writes
- Use the type system to prohibit passing thread-local handles to foreign threads