Пример #1
0
GitOid Server::recvOid()
{
    static unsigned char oid_raw[GIT_OID_RAWSZ];
    recvFromClient(oid_raw, GIT_OID_RAWSZ);
    GitOid oid;
    oid.setOidRaw(oid_raw);

    return oid;
}
Пример #2
0
std::vector<int> Server::recvLongVector()
{
    uint32_t count = recvLong();

    uint32_t *arr = new uint32_t[(size_t)count];
    recvFromClient(arr, count * 4);

    std::vector<int> res;
    for (size_t i = 0; i < count; ++i) {
        res.push_back((int)ntohl(arr[i]));
    }
    delete [] arr;

    return res;
}
Пример #3
0
void do_read(int epollfd,int fd,char *buf)
{
    int nread;
    int size;
    nread = read(fd,&size,4);
    if (nread == -1)
    {
        perror("read error:");
        close(fd);
        delete_event(epollfd,fd,EPOLLIN);
    }
    else if (nread == 0)
    {
        fprintf(stderr,"client close.\n");
        close(fd);
        delete_event(epollfd,fd,EPOLLIN);
    }
    else
    {
        recvFromClient(fd,size);
        //修改描述符对应的事件,由读改为写
        modify_event(epollfd,fd,EPOLLOUT);
    }
}
Пример #4
0
uint32_t Server::recvLong()
{
    uint32_t res;
    recvFromClient(&res, 4);
    return ntohl(res);
}