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:
Makefile.am
src
TagArchive.cxxTagFile.cxxTagStream.cxx
archive
command
decoder
input
AsyncInputStream.cxxAsyncInputStream.hxxCondHandler.hxxFailingInputStream.hxxHandler.hxxInputPlugin.hxxInputStream.cxxInputStream.hxxLocalOpen.cxxLocalOpen.hxxOpen.cxxProxyInputStream.cxxProxyInputStream.hxxThreadInputStream.cxxThreadInputStream.hxx
plugins
playlist
PlaylistAny.cxxPlaylistAny.hxxPlaylistMapper.cxxPlaylistMapper.hxxPlaylistPlugin.hxxPlaylistQueue.cxxPlaylistRegistry.cxxPlaylistRegistry.hxxPlaylistStream.cxxPlaylistStream.hxxPrint.cxx
plugins
tag
test
@@ -370,7 +370,8 @@ DecoderBridge::OpenUri(const char *uri)
|
||||
Mutex &mutex = dc.mutex;
|
||||
Cond &cond = dc.cond;
|
||||
|
||||
auto is = InputStream::Open(uri, mutex, cond);
|
||||
auto is = InputStream::Open(uri, mutex);
|
||||
is->SetHandler(&dc);
|
||||
|
||||
const std::lock_guard<Mutex> lock(mutex);
|
||||
while (true) {
|
||||
@@ -404,7 +405,7 @@ try {
|
||||
if (is.IsAvailable())
|
||||
break;
|
||||
|
||||
is.cond.wait(is.mutex);
|
||||
dc.cond.wait(is.mutex);
|
||||
}
|
||||
|
||||
size_t nbytes = is.Read(buffer, length);
|
||||
|
Reference in New Issue
Block a user