Estoy atrapado en una situación de discusión pasando en libev.Libev, Cómo pasar argumentos a las devoluciones de llamada relevantes
Por lo general, libev recibe paquetes en una función como * * receive_callback, eso está bien, pero en la práctica, tenemos que enviar a un pariente * * write_callback para hacer frente a los trabajos específicos de acuerdo con el paquete recibido. Por ejemplo:
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:
// .......
}
Mi pregunta es, si el write_callbackX
también tiene que leer el contenido específico en el recv_buff, ¿cómo podemos pasar el argumento recv_buff a la callbackX? ¿Debemos soportar la carga y la fealdad de las variables globales aquí?
Esa es la respuesta correcta, si lo desea puede escribirlo como una respuesta real y aceptarlo, hace que sea más fácil para otras personas encontrar la información. – dnaq
Al menos volviste y seguiste investigando en lugar de esperar por una respuesta :) Me alegro de que lo hayas resuelto. –
Sugiero que escriba su solución como respuesta (y luego la acepte) en lugar de editarla en la pregunta – Shahbaz