extern ENetHost *fgs_cur_host; fgs_error_t write_client(fgs_baton_t baton, char *buf, int len) { ENetBuffer buffer; buffer.data=buf; buffer.dataLength=len; enet_socket_send(fgs_cur_host->socket, &(fgs_cur_host->receivedAddress), &buffer,1); return FGS_OK; } fgs_error_t read_client(fgs_baton_t baton, char *buf, int len, fgs_bool_t dequeue) { printf("read_client(%d, %p, %d, %d)\n", baton, buf, len, dequeue); if(fgs_cur_host->receivedDataLength==0 || (fgs_cur_host->receivedData[0]=='\n' && fgs_cur_host->receivedData[1]=='\0' && fgs_cur_host->receivedData[2]=='\n' && fgs_cu r_host->receivedDataLength==3)) { int receivedLength=0; int nok=0; while(receivedLength==0 && nok<2) { nok++; usleep(100*1000); //Need to wait a bit ENetBuffer buffer; buffer.data = fgs_cur_host -> receivedData; buffer.dataLength = sizeof (fgs_cur_host->receivedData); receivedLength = enet_socket_receive (fgs_cur_host->socket, & fgs_cur_host->receivedAddress, & buffer, 1); if (receivedLength < 0) return FGS_ERR_SOCKET_ERROR; fgs_cur_host -> receivedDataLength = receivedLength; } } if(len > fgs_cur_host->receivedDataLength) { printf("len > fgs_cur_host->receivedDataLength\n"); return FGS_ERR_SOCKET_ERROR; } memset(buf, 0, len+1); int i; for(i=0;ireceivedData[i]; if(dequeue) { fgs_cur_host->receivedDataLength-=len; memmove(fgs_cur_host->receivedData, fgs_cur_host->receivedData+len, fgs_cur_host->receivedDataLength); } return FGS_OK; }