Libevent库笔记(四)常用函数接口

1.Libevent相关函数说明

1.1.evconnlistener_new_bind

函数功能:分配一个监听器对象,监听给定地址上的TCP连接 
	函数原型:
	EVENT2_EXPORT_SYMBOL
	struct evconnlistener *evconnlistener_new_bind(struct event_base *base,
	    evconnlistener_cb cb, void *ptr, unsigned flags, int backlog,
	    const struct sockaddr *sa, int socklen);
	参数说明:
	   @param base 关联的libevent框架上下文.
	   @param cb 当新连接到来时,进行回调的函数.如果函数为NULL,监听器按被禁用运行,知道函数被设置为非NULL.
	   @param ptr 提供给回调函数的参数指针,(一般传递base,以便监听回调中使用)
	   @param flags 任意LEV_OPT_*的标识,一般服务器设置
LEV_OPT_REUSEABLE:端口复用
LEV_OPT_CLOSE_ON_FREE:释放资源的时候自动关闭
	   @param backlog 类似于listen函数的backlog参数,设置为-1则使用默认设置.
	   @param addr 监听器监听地址.
	   @param socklen 监听器监听地址的字节长度.
备注:这个函数相当于完成系统调用socket()bind()listen(),并设置accept回调函数

1.2.evconnlistener_cb监听回调函数原型

函数功能:当监听器监听到一个新连接的时候进行回调(应该是socket的accept成功返回有效的socket描述符后,进行回调,其中fd对应accept返回的文件描述符值).
函数原型:
typedef void (*evconnlistener_cb)(struct evconnlistener *listener, evutil_socket_t fd,
    struct sockaddr *sa, int socklen, void *user_data);
参数说明:
   @param listener 事件监听器
   @param fd 新的文件描述符,相当于服务器创建的与客户端通信的socket描述符
   @param addr 客户端地址
   @param socklen 客户端地址字节数
   @param user_arg  evconnlistener_new()中传入的自定义参数

1.3.event_new

函数功能:在被添加到上下文对象前.创建指定一个事件
函数原型:struct event *
event_new(struct event_base *base, evutil_socket_t fd, short events, void (*cb)(evutil_socket_t, short, void *), void *arg)
返回:
	返回一个事件,其能后续被event_add() and event_del()添加和删除操作. 如果发生错误,返回NULL。
描述:
	如果事件包含 EV_READ, EV_WRITE, or EV_READ|EV_WRITE其中的一种,那么fd是文件描述符或socket描述符 如果事件包含EV_SIGNAL,那么fd是一个信号数值 如果事件不包含以上任意一种标识,那么事件只能被超时或则手动调用event_active()进行触发,这种情况下fd需设置为-1.

  EV_PERSIST标识使event_add() 持续的,直到 event_del()被调用。否则只触发一次结束。通常EV_READ | EV_PERSIST, EV_WRITE | EV_PERSIST,
  EV_ET标识兼容EV_READ和EV_WRITE, 它告诉libevent框架使用边沿触发事件
  EV_TIMEOUT标识在此没有效果

  相同的fds可以进行多种事件的监听,但是需要相同的触发模式。

 当事件被激活时, 事件循环会调用回调函数,回调函数会传入3个参数. 
	第一个为fd.  
	第二个参数为触发事件的位域  EV_READ, EV_WRITE, or EV_SIGNAL.  EV_TIMEOUT 标识指示超时事件
    EV_ET指示边沿事件触发.
	第三个参数自定义的回调函数参数指针 
参数描述:
  @param base 事件附加到的libevent框架上下文
  @param fd 被监控的文件描述符或则信号 
  @param events 需要被监控的事件,通过位定义:  EV_READ, EV_WRITE,EV_SIGNAL, EV_PERSIST, EV_ET.
  @param callback 事件发生时,需要调用的函数,即回调函数
  @param callback_arg 调用回调函数时,传入的自定义参数
 
  相关联的其他函数为:event_free(), event_add(), event_del(), event_assign()

1.4.event_add

函数功能:在需等待事件集中添加一个事件.
函数原型:
EVENT2_EXPORT_SYMBOL
int event_add(struct event *ev, const struct timeval *timeout);
函数描述:
	当event_assign()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值