Пример #1
0
struct rpc *rpc_create(const char *host, uint16_t port)
{
    int ret;
    char str_ip[INET_ADDRSTRLEN];
    struct skt_connection *sc;
    struct rpc *r = CALLOC(1, struct rpc);
    if (!r) {
        loge("malloc failed!\n");
        return NULL;
    }
    sc = skt_tcp_connect(host, port);
    if (sc == NULL) {
        loge("connect failed!\n");
        return NULL;
    }
    r->fd = sc->fd;

    if (-1 == skt_set_noblk(sc->fd, 0)) {
        loge("block skt_recv failed!\n");
    }
    ret = rpc_recv(r, r->packet.header.uuid_src, MAX_UUID_LEN);
    if (ret != MAX_UUID_LEN) {
        loge("rpc_recv failed: ret = %d\n", ret);
    }
//    if (-1 == skt_set_noblk(sc->fd, 1)) {
//        loge("no-block skt_recv failed!\n");
//    }
    skt_addr_ntop(str_ip, sc->local.ip);
    logi("local addr = %s:%d, uuid_src = %s\n", str_ip, sc->local.port, r->packet.header.uuid_src);
    skt_addr_ntop(str_ip, sc->remote.ip);
    //logd("remote ip = %s, port = %d\n", str_ip, sc->remote.port);
    r->evbase = gevent_base_create();

    return r;
}
Пример #2
0
int skt_send_sync_recv(int fd, const void *sbuf, size_t slen, void *rbuf, size_t rlen, int timeout)
{
    skt_send(fd, sbuf, slen);
    skt_set_noblk(fd, 0);
    skt_recv(fd, rbuf, rlen);

    return 0;
}