Sono intrappolato in una situazione di discussione passando in libev.Libev, Come passare argomenti ai callback rilevanti
Di solito, libev riceve i pacchetti in una funzione come * * receive_callback, va bene, ma in pratica, abbiamo bisogno di inviare un parente * * write_callback a che fare con lavori specifici in base al pacchetto ricevuto. Per esempio:
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:
// .......
}
la mia domanda è, se la write_callbackX
deve anche leggere il contenuto specifico nel recv_buff, come possiamo passare l'argomento recv_buff al callbackX? Dobbiamo sopportare il peso e la bruttezza delle variabili globali qui?
Questa è la risposta corretta, se vuoi puoi scriverla come una vera risposta e accettarla, rende più facile per le altre persone trovare le informazioni. – dnaq
Almeno sei tornato indietro e hai continuato a fare ricerche piuttosto che aspettare una risposta :) Sono contento che l'hai risolto. –
Suggerisco di scrivere la soluzione come risposta (e quindi accettarla) invece di modificarla nella domanda – Shahbaz