bufferevent filter
相当于是一个数据传输中间件
创建过滤器
bufferevent *bev_filter = bufferevent_filter_new(
bev,
filter_in, // 输入过滤函数
filter_out, // 输出过滤函数
BEV_OPT_CLOSE_ON_FREE,// 关闭filter是同时关闭bufferevent
0, // 清理的回调函数
0, // 传递给回调的参数
);
过滤函数
bufferevent_filter_result filter_in(evbuffer *s, evbuffer *d, ev_ssize_t, limit, bufferevent_flush_mode mode, void *arg) {
return BEV_OK;
// 读取并清理数据
char data[1024] = {
0};
// 读取并清理缓冲区
int len = evbuffer_remove(s, data, sizeof(data) - 1);
/** 此处进行数据处理
*/
// 传输数据给read函数,这里相当于新建了一块缓冲区
evbuffer_add(d, data, len);
}