int rpc_send(nw_ses *ses, rpc_pkg *pkg) { void *data; uint32_t size; int ret = rpc_pack(pkg, &data, &size); if (ret < 0) return ret; return nw_ses_send(ses, data, size); }
void on_recv_pkg(nw_ses *ses, void *data, size_t size) { char *str = malloc(size + 1); memcpy(str, data, size); str[size] = 0; printf("from: %s recv: %zu: %s", nw_sock_human_addr(&ses->peer_addr), size, str); if (nw_ses_send(ses, data, size) < 0) { printf("nw_ses_send fail\n"); } free(str); }
void on_recv_fd(nw_ses *ses, int fd) { printf("recv fd: %d\n", fd); char buf[10240]; int ret = read(fd, buf, sizeof(buf)); if (ret < 0) { printf("read error: %s\n", strerror(errno)); } else if (nw_ses_send(ses, buf, ret) < 0) { printf("nw_ses_send fail\n"); } close(fd); }