整理目录结构,编写CMakeLists.txt文件
This commit is contained in:
70
platform/src/future.cpp
Normal file
70
platform/src/future.cpp
Normal file
@@ -0,0 +1,70 @@
|
||||
#include "future.h"
|
||||
struct promise
|
||||
{
|
||||
struct future f;
|
||||
void * ctx;
|
||||
promise_ctx_destroy_cb* cb_ctx_destroy;
|
||||
};
|
||||
struct future
|
||||
{
|
||||
void * user;
|
||||
future_success_cb * cb_success;
|
||||
future_failed_cb * cb_failed;
|
||||
};
|
||||
|
||||
inline struct future* promise_to_future(struct promise* p)
|
||||
{
|
||||
return p->f;
|
||||
}
|
||||
inline struct promise* future_to_promise(struct future* f)
|
||||
{
|
||||
return (struct promise*)f;
|
||||
}
|
||||
struct future* future_create(future_success_cb * cb_success, future_failed_cb * cb_failed, void * user)
|
||||
{
|
||||
struct promise* p=ALLOC(struct promise, 1);
|
||||
p->f.user=user;
|
||||
p->f.cb_success=cb_success;
|
||||
p->f.cb_failed=cb_failed;
|
||||
return p->f;
|
||||
}
|
||||
void future_destroy(struct future * f)
|
||||
{
|
||||
struct promise* promise=future_to_promise(f);
|
||||
if(promise->cb_ctx_destroy!=NULL)
|
||||
{
|
||||
promise->cb_ctx_destroy(promise);
|
||||
}
|
||||
memset(promise,0,sizeof(struct promise));
|
||||
free(promise);
|
||||
return;
|
||||
}
|
||||
|
||||
void promise_failed(struct promise* p, enum e_future_error error, const char* what)
|
||||
{
|
||||
p->f.cb_failed(error, what,p->f.user);
|
||||
return;
|
||||
}
|
||||
void promise_success(struct promise* p, void *result)
|
||||
{
|
||||
p->f.cb_success(result, p->f.user);
|
||||
return;
|
||||
}
|
||||
void promise_set_ctx(struct promise* p,void* ctx, promise_ctx_destroy_cb* cb)
|
||||
{
|
||||
p->ctx=ctx;
|
||||
p->cb_ctx_destroy=cb;
|
||||
return;
|
||||
}
|
||||
void* promise_get_ctx(struct promise* p)
|
||||
{
|
||||
return p->ctx;
|
||||
}
|
||||
void* promise_dettach_ctx(struct promise* p)
|
||||
{
|
||||
void* ctx=p->ctx;
|
||||
p->ctx=NULL;
|
||||
p->cb_ctx_destroy=NULL;
|
||||
return ctx;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user