示例#1
0
文件: conn.c 项目: susemm/ckcpuv
/*@ckcpuv*/
int conn_init(conn_t * thiz, kcpuv_conv_t conv, const struct sockaddr* addr, uv_udp_t* handle) {
	thiz->_conv = conv;
	thiz->_addr = *addr;
	thiz->_udp = handle;

	int r = -1;
	thiz->_kcp = ikcp_create(conv, (void*)thiz);
	CHK_COND(thiz->_kcp);

	thiz->_kcp->output = on_kcp_output;

	r = ikcp_nodelay(thiz->_kcp, 1, 10, 2, 1);
	PROC_ERR(r);

	return 0;
Exit0:
	return -1;
}
示例#2
0
int Conn::init(kcpuv_conv_t conv, const sockaddr* addr, uv_udp_t* handle) {
	_conv = conv;
	_addr = *addr;
	_udp = handle;

	int r = -1;
	_kcp = ikcp_create(conv, (void*)this);
	CHK_COND(_kcp);

	_kcp->output = on_kcp_output;

	r = ikcp_nodelay(_kcp, 1, 10, 2, 1);
	PROC_ERR(r);

	return 0;
Exit0:
	return -1;
}
示例#3
0
int Conn::send_udp(const char* buf, uint32_t len) {
	int r = -1;
	send_req_s* req = new send_req_s;
	CHK_COND(req);

	req->buf.base = new char[len];
	req->buf.len = len;

	memcpy(req->buf.base, buf, len);

	r = uv_udp_send((uv_udp_send_t*)req, _udp, &req->buf, 1, &_addr, on_send_done);
	if (r < 0) {
		SAFE_DELETE_ARRAY(req->buf.base);
		SAFE_DELETE(req);
		return -1;
	}

	return 0;
Exit0:
	return r;
}
示例#4
0
文件: conn.c 项目: susemm/ckcpuv
/*@ckcpuv*/
int conn_send_udp(conn_t * thiz, const char* buf, uint32_t len)
{
	int r = -1;
	send_req_t * req = malloc(sizeof(send_req_t));
	CHK_COND(req);

	req->buf.base = malloc(sizeof(char) * len);
	req->buf.len = len;

	memcpy(req->buf.base, buf, len);

	r = uv_udp_send((uv_udp_send_t*)req, thiz->_udp, &req->buf, 1, &thiz->_addr, on_send_done);
	if (r < 0) {
		free(req->buf.base); /* TODO: ensure free */
		free(req); /* TODO: ensure free ? */
		return -1;
	}

	return 0;
Exit0:
	return r;
}