安装:
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)