libevent安装及API

安装:

    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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值