Jestem uwięziony w sytuacji kłótni przechodzącej w libev.Libev, Jak przekazywać argumenty do odpowiednich wywołań zwrotnych
Zazwyczaj libev odbiera pakiety w zależności jak * receive_callback *, to jest OK, ale w praktyce, musimy wysyłką względną * write_callback * do czynienia z konkretnych zadań zgodnie z odebranym pakiecie. Na przykład:
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:
// .......
}
Moje pytanie brzmi, czy write_callbackX
ma również do zapoznania się z konkretną zawartość w recv_buff, w jaki sposób możemy przekazać argument recv_buff do callbackX? Czy musimy tutaj ponosić ciężar i brzydotę globalnych zmiennych?
To jest poprawna odpowiedź, jeśli chcesz, możesz zapisać ją jako prawdziwą odpowiedź i zaakceptować ją, ułatwia innym osobom znalezienie informacji. – dnaq
Przynajmniej wróciłeś i prowadziłeś badania, zamiast czekać na odpowiedź :) Cieszę się, że to rozwiązałeś. –
Proponuję napisać twoje rozwiązanie jako odpowiedź (a następnie zaakceptować) zamiast edytować je w pytaniu – Shahbaz