summaryrefslogtreecommitdiff
path: root/src/include/tfe_future.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/tfe_future.h')
-rw-r--r--src/include/tfe_future.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/include/tfe_future.h b/src/include/tfe_future.h
new file mode 100644
index 0000000..fc2311d
--- /dev/null
+++ b/src/include/tfe_future.h
@@ -0,0 +1,28 @@
+#pragma once
+
+enum e_future_error
+{
+ FUTURE_ERROR_CANCEL,
+ FUTURE_ERROR_EXCEPTION,
+ FUTURE_ERROR_TIMEOUT
+};
+
+struct promise;
+struct future;
+typedef void future_result_t;
+typedef void (future_success_cb)(future_result_t* result, void * user);
+typedef void (future_failed_cb)(enum e_future_error err, const char * what, void * user);
+typedef void (promise_ctx_destroy_cb)(struct promise * p);
+
+struct future * future_create(future_success_cb * cb_success, future_failed_cb * cb_failed, void * user);
+struct future * promise_to_future(struct promise * p);
+struct promise * future_to_promise(struct future * f);
+
+void future_destroy(struct future * f);
+void promise_failed(struct promise * p, enum e_future_error error, const char * what);
+void promise_success(struct promise * p, void * result);
+void promise_finish(struct promise * p);
+void promise_allow_many_successes(struct promise *p);
+void promise_set_ctx(struct promise * p, void * ctx, promise_ctx_destroy_cb * cb);
+void * promise_get_ctx(struct promise * p);
+void * promise_dettach_ctx(struct promise * p);