我陷入了在libev中传递争论的局面.
通常,libev在类似*receive_callback*的函数中接收包,这没关系,但实际上,我们需要根据收到的包调度相对*write_callback*来处理特定的作业.例如:
S_RECV_MSG* pstRecvMsg = (S_RECV_MSG*) recv_buff;
switch(pstRecvMsg->wMsgType) {
case 1:
ev_io_init(w, write_callback1, w->fd, EV_WRITE);
break;
case 2:
ev_io_init(w, write_callback2, w->fd, EV_WRITE);
break;
case 3:
// .......
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果write_callbackX还必须读取recv_buff中的具体内容,我们如何将recv_buff参数传递给callbackX?我们必须承担全球变量的负担和丑陋吗?