Restructure promise API, use it in cosmo, add test.

This commit is contained in:
Ian Gulliver
2015-07-01 04:48:25 +00:00
parent 13fe1a07ce
commit ac4437b7b2
4 changed files with 60 additions and 33 deletions

View File

@@ -7,13 +7,15 @@ typedef struct promise promise;
// (passthrough, result)
typedef void (*promise_callback)(void *, void *);
typedef void (*promise_cleanup)(void *);
promise *promise_create(bool will_wait, promise_callback on_success, promise_callback on_failure, void *passthrough);
promise *promise_create(promise_callback on_success, promise_callback on_failure, void *passthrough);
bool promise_wait(promise *promise_obj, void **result);
void promise_destroy(promise *promise_obj);
void promise_complete(promise *promise_obj, void *result, bool success);
void promise_complete(promise *promise_obj, void *result, promise_cleanup cleanup, bool success);
// Shortcuts for promise_complete()
void promise_succeed(promise *promise_obj, void *result);
void promise_fail(promise *promise_obj, void *result);
void promise_succeed(promise *promise_obj, void *result, promise_cleanup cleanup);
void promise_fail(promise *promise_obj, void *result, promise_cleanup cleanup);
#endif