/*** action for clientQueue[index] */ void handleReadBuf(int index){ struct clientMsg data; int retVal; //printf("readBuf:%s\n",ClientsQueue[index].readBuf); parseClientMsg(ClientsQueue[index].readBuf, &data); if(data.msg == 1){ ////printf("Read msg from client\n"); handleIncomingMsg(data, index); } else{ // client sent a move if(index != clientIndexTurn){ // it is not the client turn ////printf("Client played out of turn"); sendInvalidMoveToPlayer(index); return; } retVal = CheckAndMakeClientMove(data); clientIndexTurn = (clientIndexTurn+1) % (conPlayers); // keep the turn moving only between connected players if(retVal ==-1){ //printf("invalid client move\n"); sendInvalidMoveToPlayer(index); updateEveryoneOnMoveExceptIndex(index); notifyOnTurn(); } else{ //printf("valid client move\n"); updateEveryoneOnMove(index); if(retVal==0) { notifyOnTurn(); } } } // deleting read data from readBuf int i; for (i = 0; i < MSG_SIZE; ++i) { if (ClientsQueue[index].readBuf[i] == '}') { ClientsQueue[index].readBuf[i] = '\0'; if (ClientsQueue[index].readBuf[i+1] == '{') { //printf("in the if\n"); strcpy(ClientsQueue[index].readBuf, ClientsQueue[index].readBuf + i+1); break; } } ClientsQueue[index].readBuf[i] = '\0'; } //strcpy(ClientsQueue[index].readBuf, ClientsQueue[index].readBuf + CLIENT_MSG_SIZE); // const char *ptr = strchr(ClientsQueue[index].readBuf, ')'); // int ind = ptr - ClientsQueue[index].readBuf + 1; // strcpy(ClientsQueue[index].readBuf, ClientsQueue[index].readBuf + ind); }
void handleReadBuf(int index){ struct clientMsg data; int retVal; parseClientMsg(ClientsQueue[index].readBuf, &data); if (data.msg != 0) handleIncomingMsg(data, index); else{ // client sent a move if (index != clientIndexTurn){ // it is not the client turn, if didnt catch on the client side sendInvalidMoveToPlayer(index); return; } retVal = CheckAndMakeClientMove(data); clientIndexTurn = (clientIndexTurn + 1) % (conPlayers); // keep the turn moving only between connected players if (retVal == -1){ sendInvalidMoveToPlayer(index); LastTurnHeap = -1; //updateEveryoneOnMoveExceptIndex(index); notifyOnTurn(); } else if (retVal == 1) notifyOnDisconnectionToAll(index); else notifyOnTurn(); // if (retVal == 0) { // notifyOnTurn(); // } //} } // deleting read data from readBuf int i; for (i = 0; i < MSGTXT_SIZE; ++i) { if (ClientsQueue[index].readBuf[i] == '}') { ClientsQueue[index].readBuf[i] = '\0'; if (ClientsQueue[index].readBuf[i + 1] == '{') { //printf("in the if\n"); strcpy(ClientsQueue[index].readBuf, ClientsQueue[index].readBuf + i + 1); break; } } ClientsQueue[index].readBuf[i] = '\0'; } }