/*****************************************************************
函数功能: 创建事件集
*****************************************************************/
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::事件的更多相关文章

  1. Libevent 事件管理和添加事件

    /**   我们先来看一下事件的创建*/struct event * event_new(struct event_base *base, evutil_socket_t fd, short even ...

  2. Libevent 事件循环(2)---事件被加入激活队列

    由Libevent 事件循环(1) 在上文中我们提到了libevent 事件循环event_dispatch 的大致过程,以epoll为例,我们看一下事件被如何加入激活队列. //在epoll_dis ...

  3. Libevent 事件循环(1)

    // 事件的dispatch int event_base_loop(struct event_base *base, int flags) {    //得到采用的事件模型 epoll/epoll/ ...

  4. libevent::事件::定时器2

    #define evtimer_new(b, cb, arg) event_new((b), -1, 0, (cb), (arg)) #include <cstdio> #include ...

  5. libevent::事件::定时器

    #include <cstdio> #include <errno.h> #include <sys/types.h> #include <event.h&g ...

  6. Libevent(2.1.8)中的事件结构和管理

    Libevent(2.1.8)中的事件结构体 这里的libevent版本为 2.1.8 . libevent中事件的结构体struct event,定义在event_struct.h 中, 这里我们简 ...

  7. libevent中的事件机制

    libevent是事件驱动的网络库,事件驱动是他的核心,所以理解事件驱动对于理解整个网络库有很重要的意义.       本着从简入繁,今天分析下单线程最简单的事件触发.通过sample下的event- ...

  8. libevent源码分析:time-test例子

    time-test例子是libevent自带的一个例子,通过libevent提供的定时事件来实现,间隔固定时间打印的功能. /* * gcc -g -o time-test time-test.c - ...

  9. libevent库1.4升级到2.0时无法flush的解决办法

    libevent的接口兼容性做的还算不错,基本上替换一下就转到新版本了.但是,强制flush数据的时候出了问题.目前的应用场景是,遇到顶号登录这种情形,先用bufferevent_write向客户端发 ...

随机推荐

  1. Hola!

    个人资料 我叫Xenny,当然我还有很多名字,Tony.LTY.唐梦寒.soar.tafhack等等,这些都是我的昵称:但是用的最多的还是Xenny. Xenny的来历很扯,Xen是因为从XD中取了个 ...

  2. Disruptor原理探讨

    之前谈到了在我的项目里用到了Disruptor,因为对它了解不足的原因,才会引发之前的问题,因此,今天特意来探讨其原理. 为什么采用Disruptor 先介绍一下我的这个服务.这个服务主要是作为游戏服 ...

  3. 最近学习到的Lambda表达式

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 中秋去了躺上海,在外滩上打了个卡: 紧接着学了一下J ...

  4. net core WebApi——缓存神器Redis

    目录 前言 Redis 使用 RedisUtil 测试 小结 @ 前言 中秋过完不知不觉都已经快两周没动这个工程了,最近业务需要总算开始搞后台云服务了,果断直接net core搞起,在做的中间遇到了不 ...

  5. SpringBoot和Hibernate整合

    1.先使用idea创建maven项目(这个就不详细讲了,很简单的操作) 2.创建完maven项目之后添加springboot依赖,pom.xml文件如下: <?xml version=" ...

  6. 理解Vue.mixin,带你正确的偷懒

    关于Vue.mixin在vue官方文档中是这么解释的: 混入 (mixin) 提供了一种非常灵活的方式,来分发 Vue 组件中的可复用功能.一个混入对象可以包含任意组件选项.当组件使用混入对象时,所有 ...

  7. 第八届蓝桥杯java b组第三题

    标题:承压计算 X星球的高科技实验室中整齐地堆放着某批珍贵金属原料. 每块金属原料的外形.尺寸完全一致,但重量不同.金属材料被严格地堆放成金字塔形. 7                         ...

  8. xampp修改mysql 启动脚本

    打开xmapp,点击mysql对应的config按钮进入my.ini文件,如图所示: 修改mysqld服务的port参数3306为你想要设置的port,如图2所示: 重新启动mysql服务即可用客户端 ...

  9. thymeleaf 将后端绑定数据直接传递js变量

    根据自我需求,thymeleaf可以直接将后端数据传递给js中进行使用,例如: 1.后端接口数据: @Controllerpublic class TestController { @RequestM ...

  10. MySQL数据库从复制及企业配置实践

    在实际生产中,数据的重要性不言而喻: 如果我们的数据库只有一台服务器,那么很容易产生单点故障的问题,比如这台服务器访问压力过大而没有响应或者奔溃,那么服务就不可用了,再比如这台服务器的硬盘坏了,那么整 ...