示例#1
0
文件: main.c 项目: xueguoliang/xs
int main(int argc, char** argv)
{
    xs_init();

    char* p = xs_malloc(100);

    xs_fini();
    return 0;
}
示例#2
0
文件: xs_aio.c 项目: fy920926/xs
void __xs_aio_recv_data(xs_ev_sock_t* sev)
{
    xs_aio_t* aio = sev->arg;
    int ret;

    xs_logd("recv data sev->fd=%d, aio->iolen=%d, aio->buflen=%d", sev->fd, aio->iolen, aio->buflen);

    /* recv head */
    if(aio->iolen < 4)
    {
        char* p = (char*)&aio->buflen;
        ret = read(sev->fd, p+aio->iolen, 4-aio->iolen);

        if(ret > 0)
        {
            aio->iolen += ret;
            if(aio->iolen < 4)
            {
                xs_ev_add(sev->ev);
                return;
            }
            else if(aio->iolen == 4)
            {
                aio->buflen = ntohl(aio->buflen);
                xs_logd("recv head buffer length = %d", aio->buflen);
                aio->buf = xs_malloc(aio->buflen + 1);
                aio->buf[aio->buflen] = 0;
            }
        }
        else if (ret < 0 && errno == EAGAIN)
        {
            xs_logd("add to ev poll");
            xs_ev_add(sev->ev);
            return ;
        }
        else
        {
            xs_logd("here ret=%d", ret);
            aio->ret = ret;
            aio->func(aio);
            return;
        }
    }

    ret = read(sev->fd, aio->buf + (aio->iolen - 4),
            aio->buflen - (aio->iolen - 4));
    if(ret > 0)
    {
        aio->iolen += ret;
        if(aio->iolen == aio->buflen + 4)
        {
            aio->result = XS_AIO_DONE;
            aio->ret = ret;
            xs_logd("************************callback ok fd=%d, aio->buf=%s, aio->buflen=%d", aio->fd, aio->buf, aio->buflen);
            aio->func(aio);
        }
        else
        {
            xs_logd("here");
            xs_ev_add(sev->ev);
        }
    }
    else if(ret < 0 && errno == EAGAIN)
    {
        xs_logd("here");
        xs_ev_add(sev->ev);
    }
    else
    {
        xs_logd("here ret=%d", ret);
        aio->ret = ret;
        aio->func(aio);
    }
}