我陷入了在 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:
// .......
}
我的问题是,如果write_callbackX
还必须读取recv_buff 中的具体内容,我们如何将recv_buff 参数传递给callbackX?我们必须在这里承担全局变量的包袱和丑陋吗?