1 struct bufferevent *bufferevent_socket_new(struct event_base *base, evutil_socket_t fd, int options); bufferevent_socket_new对已经存在的socket创建bufferevent事件,参数说明: base:对应根节点 fd:文件描述符 options:bufferevent的选项 BEV_OPT_CLOSE_ON_FREE:释放bufferevent自动关闭底层接口 BEV_OPT_THREAD...
bufferevent_socket_new(struct event_base *base, evutil_socket_t fd,int options) {// bufferevent_private 结构体持有 bufferevent 的数据struct bufferevent_private *bufev_p;// bufev == &(bufev_p->bev);// struct bufferevent 中存放的是不同类型的 bufferevent 所共有的部分// struct bufferevent 是...
return bufferevent_async_new(base, fd, options); #endif if ((bufev_p = mm_calloc(1, sizeof(struct bufferevent_private)))== NULL) return NULL; // 初始化 bufferevent_private // 由于 bufferevent 有不同类型,所以这里设计了 bufferevent_ops_socket // 对于不同类型的 bufferevent 有不同的 buffe...
由于bufferevent_socket_new创建的event,本身支持设置timeoout,所以当链接上之后我们就可以设置定时器,定时发送心跳包(可以增加时间戳,记录最后一次发送数据的时间戳,更加高效的控制心跳),(timeout触发之后会取消EV_READ或者EV_WRITE读事件所以需要重启读事件)。 void ClientSockItem::OnConnectOK() { CStringA strFomat...
bev =bufferevent_socket_new(base,-1, BEV_OPT_CLOSE_ON_FREE);if(!bev) {log::error("Could not initializebufferevent_socket_new!");return; } bufferevent_setcb(bev,NULL,NULL, eventcb,this); bufferevent_disable(bev, EV_READ | EV_WRITE); ...
1. bufferevent_socket_new (1)在bufferevent_init_common中调用evbuffer_new()初始化input和output (2)在event_assign中初始化bufferevent中的ev_read和ev_write事件。 (3)在evbuffer_add_cb中给output添加了一个callback bufferevent_socket_outbuf_cb
可以使用bufferevent_socket_new()创建基于套接字的bufferevent。 接口 struct bufferevent *bufferevent_socket_new( struct event_base *base, evutil_socket_t fd, enum bufferevent_options options); base是event_base,options是表示bufferevent选项(BEV_OPT_CLOSE_ON_FREE等)的位掩码,fd是一个可选的表示套接字的...
可以使用bufferevent_socket_new()创建基于套接字的bufferevent。 接口 structbufferevent*bufferevent_socket_new( structevent_base*base, evutil_socket_t fd, enumbufferevent_options options); base是event_base,options是表示bufferevent选项(BEV_OPT_CLOSE_ON_FREE等)的位掩码,fd是一个可选的表示套接字的文件描述...
base @param fd 不能是 pipe,可以设置为-1,在之后通过 bufferevent_setfd or bufferevent_socket_connect().设置 @param options Zero or more BEV_OPT_* flags @return */ struct bufferevent *bufferevent_socket_new(struct event_base *base, evutil_socket_t fd, int options); /*这个函数释放 ...
struct bufferevent *bufferevent_socket_new ( struct event_base *base, evutil_socket_t fd, enum bufferevent_options options); 这里的fd可以不指定,此时fd的参数是-1。如果指定了fd,这个fd必须是已经nonblock的。 int bufferevent_socket_connect (struct bufferevent *bev, struct sockaddr *address, int addr...