libevent::事件
/*****************************************************************
函数功能: 创建事件集
*****************************************************************/
struct event_base *event_base_new(void)
/************************************************************************
函数功能: 创建事件
输入参数: struct event_base -- 事件所在的事件集。
输出参数: evutil_socket_t --socket的描述符。
输出参数: short --事件类型,其中EV_READ表示等待读事件发生,
--EV_WRITE表示写事件发生,或者它俩的组合,
--EV_SIGNAL表示需要等待事件的号码,
--如果不包含上述的标志,就是超时事件或者手动激活的事件。
输出参数: event_callback_fn --回调函数。
输出参数: void* --回调函数的参数值。
返回值 :
说明 :
************************************************************************/
struct event event_new(struct event_base ,evutil_socket_t ,short ,event_callback_fn,void*)
/**********************************************************************
函数功能: 添加事件
输入参数: struct event * 需要添加的事件
输入参数: struct timeval* 事件的最大等待事件,如果是NULL的话,就是永久等待
***********************************************************************/
int event_add(struct event * ev,const struct timeval* timeout)
/**********************************************************************
函数功能: 需要删除的事件
输入参数: struct event * 需要删除的事件
***********************************************************************/
int event_del(struct event *)
/**********************************************************************
函数功能: 分配监听事件
输入参数: struct event_base * 需要监视的事件集
***********************************************************************/
int event_base_dispatch(struct event_base * )
/**********************************************************************
函数功能:I/O buffer事件
输入参数:struct event_base * 需要添加到的时间集
输入参数:相关的文件描述符
输入参数:0或者是相应的BEV_OPT_*可选标志
***********************************************************************/
struct bufferevent* bufferevent_socket_new (struct event_base * base, evutil_socket_t fd, int options)
/**********************************************************************
函数功能:I/O buffer事件
输入参数:struct bufferevent * bev 需要启用的bufferevent
输入参数:short event any combination of EV|READ | EV_WRITE
***********************************************************************/
int bufferevent_enable(struct bufferevent * bev,short event)
int bufferevent_disable(struct bufferevent * bev,short event)
/**********************************************************************
函数功能:
输入参数:struct bufferevent bev 读取的buffer_event事件
输入参数:void data 存储数据的指针
输入参数:size_t size 数据buffer的大小
返回 值:读取数据的字节数
***********************************************************************/
size_t bufferevent_read(struct bufferevent bev,void data,size_t size) /**********************************************************************
函数功能:
输入参数:struct bufferevent bev 读取的buffer_event事件
输入参数:void data 存储数据的指针
输入参数:size_t size 数据buffer的大小
返回 值:要写入的数据的大小,字节数
***********************************************************************/
int bufferevent_write(struct bufferevent bev,const void data,size_t size)
libevent::事件的更多相关文章
- Libevent 事件管理和添加事件
/** 我们先来看一下事件的创建*/struct event * event_new(struct event_base *base, evutil_socket_t fd, short even ...
- Libevent 事件循环(2)---事件被加入激活队列
由Libevent 事件循环(1) 在上文中我们提到了libevent 事件循环event_dispatch 的大致过程,以epoll为例,我们看一下事件被如何加入激活队列. //在epoll_dis ...
- Libevent 事件循环(1)
// 事件的dispatch int event_base_loop(struct event_base *base, int flags) { //得到采用的事件模型 epoll/epoll/ ...
- libevent::事件::定时器2
#define evtimer_new(b, cb, arg) event_new((b), -1, 0, (cb), (arg)) #include <cstdio> #include ...
- libevent::事件::定时器
#include <cstdio> #include <errno.h> #include <sys/types.h> #include <event.h&g ...
- Libevent(2.1.8)中的事件结构和管理
Libevent(2.1.8)中的事件结构体 这里的libevent版本为 2.1.8 . libevent中事件的结构体struct event,定义在event_struct.h 中, 这里我们简 ...
- libevent中的事件机制
libevent是事件驱动的网络库,事件驱动是他的核心,所以理解事件驱动对于理解整个网络库有很重要的意义. 本着从简入繁,今天分析下单线程最简单的事件触发.通过sample下的event- ...
- libevent源码分析:time-test例子
time-test例子是libevent自带的一个例子,通过libevent提供的定时事件来实现,间隔固定时间打印的功能. /* * gcc -g -o time-test time-test.c - ...
- libevent库1.4升级到2.0时无法flush的解决办法
libevent的接口兼容性做的还算不错,基本上替换一下就转到新版本了.但是,强制flush数据的时候出了问题.目前的应用场景是,遇到顶号登录这种情形,先用bufferevent_write向客户端发 ...
随机推荐
- 类似Flag counter被园子禁用后的备选方案
背景介绍 2019年9月4日,园子发生严重事故,影响范围为整个园子.随着bug的修复,从个人博客无法访问——>公告栏部分功能禁用——>文件无法上传(多个文章中的图片均加载不出来)——> ...
- 数据库高级:SQL-CREATE-TABLE语句
作者:松软科技(www.sysoft.net.cn) 发布时间:2019/3/17 9:34:51 CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表. SQL CRE ...
- Java位运算符&、|、^、>>、<<、~、>>>
如果要搞懂Java中的位运算符,首先要搞懂二进制的运算,之前一篇有介绍详细请看 二进制运算-十进制与二进制的转换 Java中的位运算符有:&(按位与).|(按位或).^(按位异或).>& ...
- 微信小程序中的tabBar设置
我们先来看一份图,这个设置在官方文档中已经写得很清楚了,我只是做一个总结 注:我写注释是为了方便说明,在小程序中的json文件中是不能用注释的 这个tabBar属于全局属性,因此就在全局配置文件app ...
- Spring 梳理-MVC-配置DispatcherServet和ContextLoaderListener
在使用JavaConfig时,AbstractAnnotationConfigDispatcherServletInitializer会自动注册 DispatcherServlet 和 Context ...
- grep 命令使用
grep是Linux中最常用的"文本处理工具"之一,用于在文本中查找指定的字符串. 语法: grep [OPTION]... PATTERN [FILE]... 参数: -i:在搜 ...
- Navicat 设置自增长初始值
设置主键自增初始值
- OKR群:为什么说每个程序员都应该有自己的个人OKR
个人OKR OKR,即Object and Key Result,是IT大厂最近争相推广的目标管理工具,例如腾讯.百度和头条(字节跳动). 其实,OKR并不是仅仅只适用于公司和部门内部,我们个人也可以 ...
- RedHat安装git报错 expected specifier-qualifier-list before ‘z_stream’
年初开学的时候认识到了git,因为当时也没装虚拟机甚至是不知道虚拟机这个东西,所以就下载了Windows下的git.当时跟着廖雪峰Git教程 学了几个命令.安装了虚拟机,也学了linux的基本命令后, ...
- 最清晰的RESTFUL理解
Restful理解 API(Application Programming Interface),顾名思义:是一组编程接口规范,客户端与服务端通过请求响应进行数据通信.REST(Representat ...