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:
@@ -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