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 に渡すにはどうすればよいですか? ここで、グローバル変数の負担と醜さを負担する必要がありますか?