rendered paste bodyextern 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;i<len;i++)
buf[i]=fgs_cur_host->receivedData[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;
}