2015-06-28 11:18:05 -07:00
|
|
|
#ifndef _PROMISE_H
|
|
|
|
|
#define _PROMISE_H
|
|
|
|
|
|
|
|
|
|
#include <stdbool.h>
|
|
|
|
|
|
|
|
|
|
typedef struct promise promise;
|
|
|
|
|
|
|
|
|
|
// (passthrough, result)
|
|
|
|
|
typedef void (*promise_callback)(void *, void *);
|
2015-07-01 04:48:25 +00:00
|
|
|
typedef void (*promise_cleanup)(void *);
|
2015-06-28 11:18:05 -07:00
|
|
|
|
2015-07-01 04:48:25 +00:00
|
|
|
promise *promise_create(promise_callback on_success, promise_callback on_failure, void *passthrough);
|
2015-06-28 11:18:05 -07:00
|
|
|
bool promise_wait(promise *promise_obj, void **result);
|
2015-07-01 04:48:25 +00:00
|
|
|
void promise_destroy(promise *promise_obj);
|
2015-06-28 11:18:05 -07:00
|
|
|
|
2015-07-01 04:48:25 +00:00
|
|
|
void promise_complete(promise *promise_obj, void *result, promise_cleanup cleanup, bool success);
|
2015-06-28 11:18:05 -07:00
|
|
|
// Shortcuts for promise_complete()
|
2015-07-01 04:48:25 +00:00
|
|
|
void promise_succeed(promise *promise_obj, void *result, promise_cleanup cleanup);
|
|
|
|
|
void promise_fail(promise *promise_obj, void *result, promise_cleanup cleanup);
|
2015-06-28 11:18:05 -07:00
|
|
|
|
|
|
|
|
#endif
|