接口设计
当sdk接口众多时,为了接口的统一管理,用回调函数是一个比较好的办法。这样基本可以返回任何想要的数据。下面是伪代码接口设计
enum DATATYEP{
DATA_ONE,
DATA_TWO,
}; //数据类型
enum ERROYTYPE{
NOERROE = 0,
ERRORTYPE_ONE,
}; //错误码
struct DATA_ONE_ST
{
int a;
int b;
};
struct DATA_TWO_ST
{
char s[20];
double dbleng;
};
/*
@description 数据查询回调函数
@parameter data 返回数据 根据DATATYEP 类型转化为相应的数据
@parameter length 返回数据的长度
@parameter DATATYEP 返回的数据类型
@parameter ERROYTYPE 错误码
@parameter receiver 透传指针
*/
typedef void (*callback)(void*data, int length, DATATYEP type, ERROYTYPE error, void*receiver );
/*
@description 注册回调函数
@parameter cb 回调函数
@parameter type 请求数据类型
@parameter receiver 透传指针
*/
void request_data(callback cb, DATATYEP type, void*receiver );
使用意见:
用户定一个回调函数,然后使用request_data()注册一次回调函数。后台就可以根据需要返回对应的数据。用户也可以随时使用该注册函数向后台索取想要的数据
sdk使用者:
比如用户想要DATA_ONE 这种数据:只需要这样写即可:
//定义回调函数
void callback_fun(void*data, int length, DATATYEP type, ERROYTYPE error, void*receiver )
{
//dosomthing
}
request_data(callback_fun, DATA_ONE, null);
在自定义的callback_fun回调函数中,获取请求的数据。
新增数据类型
在DATATYEP 枚举中添加一个新的枚举值,然后建一个对应的结构体。sdk就可以在request_data函数中进行具体的实现。