All pastes #85413 Raw Edit

Stuff

public text v1 · immutable
·published 2006-07-11 22:32 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_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;
}