summaryrefslogtreecommitdiffstats
path: root/src/OSSupport/Promise.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/OSSupport/Promise.h')
-rw-r--r--src/OSSupport/Promise.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/OSSupport/Promise.h b/src/OSSupport/Promise.h
new file mode 100644
index 000000000..83d04860b
--- /dev/null
+++ b/src/OSSupport/Promise.h
@@ -0,0 +1,38 @@
+#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;
+};
+
+
+