#include "netgame.h" #include "utils.h" int initNetGame(netGame_t *ng, id_t lemCount) { memset(ng,0,sizeof(netGame_t)); eventListInit(&(ng->elist)); ng->lemCount=lemCount; ng->local.lems = calloc(lemCount,sizeof(stateLem_t)); if (ng->local.lems==NULL) { logp(LOG_ERROR, "initNetGame(), calloc()"); return 3; } ng->net.lems = calloc(lemCount,sizeof(stateLem_t)); if (ng->net.lems==NULL) { logp(LOG_ERROR, "initNetGame(), calloc()"); return 4; } return 0; } void freeNetGame(netGame_t *ng) { eventListFree(&(ng->elist)); free(ng->local.lems); free(ng->net.lems); } // Serialize en envoi une trame d'évènement sur le réseau int sendEvent(TCPsocket sockDest, const event_t *e) { int msgLen, result; char *buf; msgLen=eventSerializedSize(); buf=malloc(msgLen); if ( buf==NULL ) { logp(LOG_ERROR, "sendEvent(), malloc()"); return 1; } eventSerialize(e, buf); result=SDLNet_TCP_Send(sockDest,buf,msgLen); free(buf); if(resultsockClient,buf,bufLen); // Appel bloquant if(result<=0) { logs(LOG_ERROR, "receiveEvent(), SDLNet_TCP_Recv() error"); free(buf); return 2; } // Désérialisation de l'évènement result=eventUnserialize(e,buf); if ( result!=0 ) { logs(LOG_WARN, "receiveEvent(), eventUnserialize() error"); free(buf); return 4; } free(buf); return 0; }