input/Stream: remove attribute "cond", replace with handler interface

This adds a bit of overhead, but also adds flexibility to the API,
because arbitrary triggers may be invoked from that virtual method
implementation, not just Cond::signal().

The motivation for this is to make the handlers more dynamic, for the
upcoming buffering class utilizing ProxyInputStream.
This commit is contained in:
Max Kellermann
2018-06-22 19:37:18 +02:00
parent 01d8eb6290
commit d0fbf6db59
66 changed files with 403 additions and 280 deletions

View File

@@ -32,20 +32,20 @@
#include <assert.h>
InputStreamPtr
OpenLocalInputStream(Path path, Mutex &mutex, Cond &cond)
OpenLocalInputStream(Path path, Mutex &mutex)
{
InputStreamPtr is;
#ifdef ENABLE_ARCHIVE
try {
#endif
is = OpenFileInputStream(path, mutex, cond);
is = OpenFileInputStream(path, mutex);
#ifdef ENABLE_ARCHIVE
} catch (const std::system_error &e) {
if (IsPathNotFound(e)) {
/* ENOTDIR means this may be a path inside an archive
file */
is = OpenArchiveInputStream(path, mutex, cond);
is = OpenArchiveInputStream(path, mutex);
if (!is)
throw;
} else