博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
libevent安装及API
阅读量:5833 次
发布时间:2019-06-18

本文共 2415 字,大约阅读时间需要 8 分钟。

hot3.png

安装:

    ls -al /usr/lib | grep libevent  查看是否已安装——>下载libevent-1.4.13-stable.tar.gz解压——>cd libevent目录——>./configure -prefix=/usr ——>make——>make install——>再次查询

    libevent会被安装到/usr/lib下(如果在其他目录下eg:/usr/local/lib/ 需要建立软连接到/usr/lib eg:ln -s /usr/local/bin...  /usr/lib...)

卸载:

    rpm -e libevent-1.4.13.......

常用函数接口:

A:evbuffer:
     //动态分配一个struct evbuffer结构,需要调用evbuffer_free释放内存
    struct evbuffer* evbuffer_new(void)

   //从 buf 中读出“以 \r, \n, \r\n, \n\r 结尾”的一行,返回的 char * 需要外部负责释放   

     char * evbuffer_readline(struct evbuffer *buffer) 

    //往 buf 中放数据

    int evbuffer_add(struct evbuffer *buf, const void *data, size_t datlen)

    //从 buf 中读取数据

    int evbuffer_remove(struct evbuffer *buf, void *data, size_t datlen)

    //丢弃 buf 中 n 个数据

    void  evbuffer_drain(struct evbuffer *buf, size_t len)

    //从 fd 读数据到 buf 中

    int  evbuffer_read(struct evbuffer *buf, int fd, int howmuch) 

    //将 buf 的数据写到 fd 中   

    int evbuffer_write(struct evbuffer *buffer, int fd)

    //释放buffer所占用的内存    

    void evbuffer_free(struct evbuffer *buffer)

    //移动数据从一个evbuffer到另一个evbuffer\

    int evbuffer_add_buffer(struct evbuffer *outbuf, struct evbuffer *inbuf)

    //添加一个格式化的字符串到evbuffer尾部

    int evbuffer_add_printf(struct evbuffer *buf, const char *fmt, ...)

    //添加一个va_list格式的字符串到evbuffer尾部

    int evbuffer_add_vprintf(struct evbuffer *buf, const char *fmt, va_list ap)

    //查找缓冲区中是否存在指定的字符串what

    u_char *evbuffer_find(struct evbuffer *buffer, const u_char *what, size_t len)

    //设置回调函数

    void evbuffer_setcb(struct evbuffer *buffer, void (*cb)(struct evbuffer *, size_t, size_t, void *),
                               void *cbarg)

B event

    //初始化一个event_base 反应堆实例   
    struct event_base *event_init(void)

    //初始化事件event,注册回调函数和关注事件:ev-event对象;fd-event绑定的句柄;event-关注的事件类型(ev_read|ev_write|ev_signal|ev_timeout);cb-回调函数(有三个参数由even_base传入);arg-传给cb的参数

    void event_set(struct event *ev, int fd, short event, void (*cb)(int, short, void *), void *arg)

    //把一个定时器事件压入到其对应的反应堆实例

    int event_add(struct event *ev, struct timeval *tv)

    //从反应堆实例删除事件ev

    int event_del(struct event *ev)

    //进入event  loop 主循环,调用回调处理请求.仅仅出错时才返回

    int event_dispatch(void)

    // reactor:当底层的select/poll/epoll  探测到有事件的时候,event_loop 是逐个处理所有的事件,

    int event_loop(int flags)

    //判断ev的event事件是否正在处理

    int event_pending(struct event *ev, short event, struct timeval *tv)

    //定义的一个宏,判断ev是否被初始化

    int event_initialized(struct event *ev)

    //事件优先级初始化,必须在第一个event_dispatch前被调用

    int event_priority_init(int npriorities)

    //显示设置ev优先级

    int event_priority_set(struct event *ev, int priority)

转载于:https://my.oschina.net/Jesuslovesyou/blog/270097

你可能感兴趣的文章
NYOJ311 完全背包
查看>>
shp格式数据发布服务:postGIS + postgresql + geoserver
查看>>
101. Symmetric Tree - Easy
查看>>
codevs——2822 爱在心中
查看>>
标准C++中的string类的用法总结
查看>>
生成随机图片验证码
查看>>
Python基础班---第一部分(基础)---Python基础知识---认识Python
查看>>
利用JCom调用MS Office或者Acrobat API转换文档为PDF(转)
查看>>
JAVA MAC 配置
查看>>
假如时光倒流,我会这么学习Java
查看>>
input标签实现让光标不出现!
查看>>
解决跨域问题(配置文件)
查看>>
Android学习笔记:Android向服务器发送请求时的中文乱码问题
查看>>
UVALive5583 UVA562 Dividing coins
查看>>
CCF201409-3 字符串匹配(解法二)(100分)
查看>>
I00037 亏数(Deficient number)
查看>>
温州医保 药店购药流程
查看>>
主引导记录MBR
查看>>
Spring : JPA的单独使用
查看>>
MySQL中的完整性约束
查看>>