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向客户端发 ...
随机推荐
- [LeetCode] 由 “中缀表达式 --> 后缀表达式" 所想
如何利用栈解决问题. Ref: 如何在程序中将中缀表达式转换为后缀表达式? 本文的引申:如何手写语法分析器 实现调度场算法 “9+(3-1)*3+10/2” --> “9 3 1-3*+ 10 ...
- Loadrunner录制步骤及说明
做好业务准备,如环境配置.服务启动等 打开Virtual User Generator界面---->New---->选择协议,录制网页时一般选择Web(HTTP/HTML) Start R ...
- Django&,Flask&pyrthon原生sql语句 基本操作
Django框架 ,Flask框架 ORM 以及pyrthon原生sql语句操作数据库 WHAT IS ORM? ORM( Object Relational Mapping) 对象关系映射 , 即通 ...
- Java查找统计文中字母,单词
package io; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; imp ...
- 记一次java-selenium自动抢红包最简单案例1
案例网址:http://xinyue.qq.com/act/pc/xyjf/a20170907envelopes/index.htm?ADTAG=AD_gw.home.pt.2_dyghb.20170 ...
- <<构建之法第三版>>读书遇到的5个问题
1.书中第4章4.5节所说的结对编程让我感觉有一点困惑,书中书写的是结对编程,说实话我是第一次接触这个词汇,我能感到这种方式的新特之处,但是对比我现实的编程经历,我很难想象在一般的企业开发中这样的行为 ...
- Python爬虫(二):Requests库
所谓爬虫就是模拟客户端发送网络请求,获取网络响应,并按照一定的规则解析获取的数据并保存的程序.要说 Python 的爬虫必然绕不过 Requests 库. 1 简介 对于 Requests 库,官方文 ...
- POJ 2431——Expedition(贪心,优先队列)
链接:http://poj.org/problem?id=2431 题解 #include<iostream> #include<algorithm> #include< ...
- element取表格对应id数据
<el-button size="mini" type="danger" @click="editor(scope.row)"> ...
- Spring Boot 2.X(三):使用 Spring MVC + MyBatis + Thymeleaf 开发 web 应用
前言 Spring MVC 是构建在 Servlet API 上的原生框架,并从一开始就包含在 Spring 框架中.本文主要通过简述 Spring MVC 的架构及分析,并用 Spring Boot ...