-
Kenton Varda authored
This lets you construct an AsyncInputStream / AsyncOutputStream pair that operates entirely within userspace, rather than pushing through a kernel-level pipe. This is far more efficient, avoiding system calls and reducing copies. The pipe does not buffer at all. Instead, it waits for both a read() and a write() call to be active at the same time, and then it fulfills one with the other. This implementation also optimizes pumps. Imagine the situation: you create a pipe; you call pumpTo() on the write end to pump it to some other; then you write to the write end of the pipe. In this case, the write will *directly* call the target stream to which the pipe is being pumped. Hence, adding daisy-chained pipes on top of a final output stream does not incur additional copies of the data. Similarly, tryPumpFrom() is optimized on the read end.
7117175d
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
cmake | ||
ekam-provider | ||
m4 | ||
pkgconfig | ||
samples | ||
src | ||
CMakeLists.txt | ||
LICENSE.txt | ||
Makefile.am | ||
Makefile.ekam | ||
README.txt | ||
afl-fuzz.sh | ||
configure.ac | ||
regenerate-bootstraps.sh | ||
setup-autotools.sh | ||
setup-ekam.sh |