变更stream系列文件的名称,修正了部分编译错误
* 变更stream系列文件的名称为ssl_stream, tcp_stream等; * 变更stream.h为platform.h,因该文件为平台整体公用; * 修正了ssl_stream, ssl_sess_cache文件中的编译错误,部分实现的bug。 * 调整了tfe_future的路径,由平台实现改为公用组件。
This commit is contained in:
83
common/src/tfe_future.cpp
Normal file
83
common/src/tfe_future.cpp
Normal file
@@ -0,0 +1,83 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <tfe_future.h>
|
||||
#include <tfe_utils.h>
|
||||
|
||||
struct future
|
||||
{
|
||||
void * user;
|
||||
future_success_cb * cb_success;
|
||||
future_failed_cb * cb_failed;
|
||||
};
|
||||
|
||||
struct promise
|
||||
{
|
||||
struct future f;
|
||||
void * ctx;
|
||||
promise_ctx_destroy_cb * cb_ctx_destroy;
|
||||
};
|
||||
|
||||
struct future * promise_to_future(struct promise * p)
|
||||
{
|
||||
return &p->f;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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