libevent中bufferevent.c中的部分函数使用


//bufferevent的初始化与释放
int bufferevent_init_common(struct bufferevent_private *bufev_private,struct event_base *base,const struct bufferevent_ops *ops,enum bufferevent_options options)
{
    //bufferevent的基本初始化,在创建bufferevent时被其它函数调用,一般不会由程序员主动调用 
}
void bufferevent_setcb(struct bufferevent *bufev,bufferevent_data_cb readcb, bufferevent_data_cb writecb,bufferevent_event_cb eventcb, void *cbarg)
{
    //设置bufferevent的三个回调函数
}
void bufferevent_free(struct bufferevent *bufev)
{
    //释放bufferevent
}

//读写缓冲区,与水位有关
void bufferevent_suspend_read(struct bufferevent *bufev, bufferevent_suspend_flags what)
{
    //延迟读取
}
void bufferevent_unsuspend_read(struct bufferevent *bufev, bufferevent_suspend_flags what)
{
    //立即读取
}
void bufferevent_suspend_write(struct bufferevent *bufev, bufferevent_suspend_flags what)
{
    //延迟写入
}
void bufferevent_unsuspend_write(struct bufferevent *bufev, bufferevent_suspend_flags what)
{
    //立即写入
}
static void bufferevent_inbuf_wm_cb(struct evbuffer *buf,const struct evbuffer_cb_info *cbinfo,void *arg)
{
    //设置缓冲区水位后,将此函数设为输入缓冲区的回调函数,监听输入缓冲区的变化情况
}
void bufferevent_setwatermark(struct bufferevent *bufev, short events,size_t lowmark, size_t highmark)
{
    //设置缓冲区的水位
}

//调用延迟回调函数
static void bufferevent_run_deferred_callbacks_locked(struct deferred_cb *_, void *arg);
static void bufferevent_run_deferred_callbacks_unlocked(struct deferred_cb *_, void *arg);

struct evbuffer *bufferevent_get_input(struct bufferevent *bufev)
{
    return bufev->input;
}
struct evbuffer *bufferevent_get_output(struct bufferevent *bufev)
{
    return bufev->output;
}
struct event_base *bufferevent_get_base(struct bufferevent *bufev)
{
    return bufev->ev_base;
}

int bufferevent_write(struct bufferevent *bufev, const void *data, size_t size)
{
    //将数据写入output缓冲区
}
int bufferevent_write_buffer(struct bufferevent *bufev, struct evbuffer *buf)
{
    //将一个缓冲区写入bufferevent的output缓冲区
}
size_t bufferevent_read(struct bufferevent *bufev, void *data, size_t size)
{
    //从bufferevent的input缓冲区中读取size大小的数据到data中
}
int bufferevent_read_buffer(struct bufferevent *bufev, struct evbuffer *buf)
{
    //将input缓冲区读取到buf中
}

int bufferevent_enable(struct bufferevent *bufev, short event)
{
    //将事件加入到监听列表中
}
int bufferevent_disable(struct bufferevent *bufev, short event)
{
    //将事件从监听列表中移除
}

int bufferevent_set_timeouts(struct bufferevent *bufev, const struct timeval *tv_read,const struct timeval *tv_write)
{
    //设置读、写事件的超时时间
}
void bufferevent_settimeout(struct bufferevent *bufev,int timeout_read, int timeout_write)
{
    //设置读、写事件的超时时间
}

int bufferevent_decref(struct bufferevent *bufev)
{
    //将bufferevent的引用计数减1
}
void bufferevent_incref(struct bufferevent *bufev)
{
    //将bufferevent的引用计数加1
}
int bufferevent_setfd(struct bufferevent *bev, evutil_socket_t fd)
{
    //将bufferevent的描述符置为fd
}
evutil_socket_t bufferevent_getfd(struct bufferevent *bev)
{
    //获取bufferevent的描述符fd
}
static void bufferevent_generic_read_timeout_cb(evutil_socket_t fd, short event, void *ctx)
{
    //通用读事件超时回调函数
}
static void bufferevent_generic_write_timeout_cb(evutil_socket_t fd, short event, void *ctx)
{
    //写事件超时时回调函数
}

void bufferevent_lock(struct bufferevent *bev)
{
    _bufferevent_incref_and_lock(bev);
}
void bufferevent_unlock(struct bufferevent *bev)
{
    _bufferevent_decref_and_unlock(bev);
}

//内部函数,被其它函数调用

//调用读、写、错误回调函数
void _bufferevent_run_readcb(struct bufferevent *bufev);
void _bufferevent_run_writecb(struct bufferevent *bufev);
void _bufferevent_run_eventcb(struct bufferevent *bufev, short what);

//加减bufferevent的引用计数
void _bufferevent_incref_and_lock(struct bufferevent *bufev);
int _bufferevent_decref_and_unlock(struct bufferevent *bufev);

void _bufferevent_init_generic_timeout_cbs(struct bufferevent *bev)
{
    //设置bufferevent的读、写事件的超时回调函数
}
int _bufferevent_del_generic_timeout_cbs(struct bufferevent *bev)
{
    //删除超时事件
}
int _bufferevent_generic_adj_timeouts(struct bufferevent *bev)
{
    //调整bufferevent读、写事件的超时时间
}
int _bufferevent_add_event(struct event *ev, const struct timeval *tv)
{
    //将事件加入到监听列表
}

你可能感兴趣的:(libevent中bufferevent.c中的部分函数使用)