#include "ioserver.h"
using namespace LCBTest;
Future::Future()
{
failed = false;
}
void
Future::wait()
{
mutex.lock();
while (!isDone() && !failed) {
cond.wait(mutex);
}
mutex.unlock();
}
Future::~Future()
{
mutex.close();
cond.close();
}
void
Future::startUpdate()
{
mutex.lock();
}
void
Future::endUpdate()
{
if (shouldEnd()) {
cond.signal();
}
mutex.unlock();
}
bool
Future::checkDone()
{
bool ret;
if (!mutex.tryLock()) {
return false;
}
ret = isDone();
mutex.unlock();
return ret;
}