示例#1
0
文件: util.c 项目: jamesyan84/zbase
static __inline__ void recvChunkedBody( int sockfd, PZ_BUF zBuf, FILE* file)
{
    /* chunk format: chunk-size(hex) CRLF chunk-data CRLF */
    int i, chunk_len;

    do
    {
        i = zBuf->length;

        if (recvNextLine( sockfd, zBuf)<0) break;
        

        //add by emman on 2007-3-14
        //if ( zBuf->length == i) break;
        //end add
        zBuf->length = i;
        chunk_len = strtol(zBuf->buf + zBuf->length, 0, 16);

        //add by emman on 2007-3-14
        //if ( chunk_len == 0 ) break;
        //end add

        recvChunk( zBuf, sockfd, chunk_len+2);	/* + trailing CRLF */
        zBuf->length -= 2;
        zBuf->buf[zBuf->length] = '\0';

        fwrite( zBuf->buf, 1, zBuf->length, file);
        zBuf->length = 0;
    }
    while(chunk_len);
}
示例#2
0
文件: usbuser.c 项目: Neon22/pixy
void USB_Recv(uint8_t *data, uint32_t len)
{
    if ((uint32_t)data&0x03)
        return;

    g_recvData = data;
    g_recvLen = len;
    g_recvOffset = 0;
    g_recvComplete = 0;

    recvChunk();
}
示例#3
0
文件: usbuser.c 项目: Neon22/pixy
void USB_EndPoint2 (uint32_t event) {

    switch (event) {
    case USB_EVT_OUT_NAK:
        //bulkOutNak();
        break;
    case USB_EVT_OUT:
        recvChunk();
        break;
    case USB_EVT_IN:  // this gets called upon completion
        sendChunk();
        break;
    }
}