1
0
Fork 0
cuberite-2a/src/OSSupport/Promise.h

39 lines
711 B
C++

#pragma once
class cCombinedPromise;
class cPromise {
public:
cPromise() {}
virtual ~cPromise () {}
cPromise * WaitFor(cPromise * a_Promise);
cPromise * CancelOn(volatile bool& cancelationtoken);
void Wait();
virtual bool IsCompleted() = 0;
//TODO:Expose Events for waiting on
};
class cCombinedPromise : public cPromise {
public:
cCombinedPromise(cPromise*, cPromise*);
~cCombinedPromise();
virtual bool IsCompleted();
private:
cPromise* m_left;
cPromise* m_right;
};
class cCancelablePromise : public cPromise {
public:
cCancelablePromise(cPromise*, volatile bool&);
~cCancelablePromise();
virtual bool IsCompleted();
private:
volatile bool& m_cancel;
cPromise* m_wrapped;
};