All pastes #85414 Raw Edit

ENET/FreeGS

public c v1 · immutable
·published 2006-07-11 22:33 UTC
rendered paste body
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_cur_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;}