include: merge uv_udp_send and uv_udp_send6
Merge uv_udp_send6() into uv_udp_send(). uv_udp_send() now takes a const struct sockaddr*.
This commit is contained in:
parent
bcee403ed2
commit
08c6ddeefb
24
include/uv.h
24
include/uv.h
@ -995,31 +995,9 @@ UV_EXTERN int uv_udp_send(uv_udp_send_t* req,
|
||||
uv_udp_t* handle,
|
||||
const uv_buf_t bufs[],
|
||||
unsigned int nbufs,
|
||||
const struct sockaddr_in* addr,
|
||||
const struct sockaddr* addr,
|
||||
uv_udp_send_cb send_cb);
|
||||
|
||||
/*
|
||||
* Send data. If the socket has not previously been bound with `uv_udp_bind6`,
|
||||
* it is bound to ::0 (the "all interfaces" address) and a random port number.
|
||||
*
|
||||
* Arguments:
|
||||
* req UDP request handle. Need not be initialized.
|
||||
* handle UDP handle. Should have been initialized with `uv_udp_init`.
|
||||
* bufs List of buffers to send.
|
||||
* nbufs Number of buffers in `bufs`.
|
||||
* addr Address of the remote peer. See `uv_ip6_addr`.
|
||||
* send_cb Callback to invoke when the data has been sent out.
|
||||
*
|
||||
* Returns:
|
||||
* 0 on success, or an error code < 0 on failure.
|
||||
*/
|
||||
UV_EXTERN int uv_udp_send6(uv_udp_send_t* req,
|
||||
uv_udp_t* handle,
|
||||
const uv_buf_t bufs[],
|
||||
unsigned int nbufs,
|
||||
const struct sockaddr_in6* addr,
|
||||
uv_udp_send_cb send_cb);
|
||||
|
||||
/*
|
||||
* Receive data. If the socket has not previously been bound with `uv_udp_bind`
|
||||
* or `uv_udp_bind6`, it is bound to 0.0.0.0 (the "all interfaces" address)
|
||||
|
||||
@ -251,37 +251,21 @@ int uv_udp_send(uv_udp_send_t* req,
|
||||
uv_udp_t* handle,
|
||||
const uv_buf_t bufs[],
|
||||
unsigned int nbufs,
|
||||
const struct sockaddr_in* addr,
|
||||
const struct sockaddr* addr,
|
||||
uv_udp_send_cb send_cb) {
|
||||
if (handle->type == UV_UDP && addr->sin_family == AF_INET) {
|
||||
return uv__udp_send(req,
|
||||
handle,
|
||||
bufs,
|
||||
nbufs,
|
||||
(const struct sockaddr*) addr,
|
||||
sizeof(*addr),
|
||||
send_cb);
|
||||
}
|
||||
return UV_EINVAL;
|
||||
}
|
||||
unsigned int addrlen;
|
||||
|
||||
if (handle->type != UV_UDP)
|
||||
return UV_EINVAL;
|
||||
|
||||
int uv_udp_send6(uv_udp_send_t* req,
|
||||
uv_udp_t* handle,
|
||||
const uv_buf_t bufs[],
|
||||
unsigned int nbufs,
|
||||
const struct sockaddr_in6* addr,
|
||||
uv_udp_send_cb send_cb) {
|
||||
if (handle->type == UV_UDP && addr->sin6_family == AF_INET6) {
|
||||
return uv__udp_send(req,
|
||||
handle,
|
||||
bufs,
|
||||
nbufs,
|
||||
(const struct sockaddr*) addr,
|
||||
sizeof(*addr),
|
||||
send_cb);
|
||||
}
|
||||
return UV_EINVAL;
|
||||
if (addr->sa_family == AF_INET)
|
||||
addrlen = sizeof(struct sockaddr_in);
|
||||
else if (addr->sa_family == AF_INET6)
|
||||
addrlen = sizeof(struct sockaddr_in6);
|
||||
else
|
||||
return UV_EINVAL;
|
||||
|
||||
return uv__udp_send(req, handle, bufs, nbufs, addr, addrlen, send_cb);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -100,7 +100,7 @@ send:
|
||||
&s->udp_handle,
|
||||
bufs,
|
||||
ARRAY_SIZE(bufs),
|
||||
&s->addr,
|
||||
(const struct sockaddr*) &s->addr,
|
||||
send_cb));
|
||||
send_cb_called++;
|
||||
}
|
||||
@ -195,7 +195,7 @@ static int pummel(unsigned int n_senders,
|
||||
&s->udp_handle,
|
||||
bufs,
|
||||
ARRAY_SIZE(bufs),
|
||||
&s->addr,
|
||||
(const struct sockaddr*) &s->addr,
|
||||
send_cb));
|
||||
}
|
||||
|
||||
|
||||
@ -195,7 +195,6 @@ static void on_recv(uv_udp_t* handle,
|
||||
unsigned flags) {
|
||||
uv_udp_send_t* req;
|
||||
uv_buf_t sndbuf;
|
||||
int r;
|
||||
|
||||
ASSERT(nread > 0);
|
||||
ASSERT(addr->sa_family == AF_INET);
|
||||
@ -204,13 +203,7 @@ static void on_recv(uv_udp_t* handle,
|
||||
ASSERT(req != NULL);
|
||||
|
||||
sndbuf = *rcvbuf;
|
||||
r = uv_udp_send(req,
|
||||
handle,
|
||||
&sndbuf,
|
||||
1,
|
||||
(const struct sockaddr_in*) addr,
|
||||
on_send);
|
||||
ASSERT(r == 0);
|
||||
ASSERT(0 == uv_udp_send(req, handle, &sndbuf, 1, addr, on_send));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -313,7 +313,12 @@ static void udp_sender(void) {
|
||||
buf = uv_buf_init("PING", 4);
|
||||
ASSERT(0 == uv_ip4_addr("127.0.0.1", server_port, &server_addr));
|
||||
|
||||
r = uv_udp_send(&send_req, &udp, &buf, 1, &server_addr, udp_send);
|
||||
r = uv_udp_send(&send_req,
|
||||
&udp,
|
||||
&buf,
|
||||
1,
|
||||
(const struct sockaddr*) &server_addr,
|
||||
udp_send);
|
||||
ASSERT(!r);
|
||||
}
|
||||
|
||||
|
||||
@ -326,7 +326,12 @@ TEST_IMPL(udp_ref3) {
|
||||
|
||||
ASSERT(0 == uv_ip4_addr("127.0.0.1", TEST_PORT, &addr));
|
||||
uv_udp_init(uv_default_loop(), &h);
|
||||
uv_udp_send(&req, &h, &buf, 1, &addr, (uv_udp_send_cb)req_cb);
|
||||
uv_udp_send(&req,
|
||||
&h,
|
||||
&buf,
|
||||
1,
|
||||
(const struct sockaddr*) &addr,
|
||||
(uv_udp_send_cb) req_cb);
|
||||
uv_unref((uv_handle_t*)&h);
|
||||
uv_run(uv_default_loop(), UV_RUN_DEFAULT);
|
||||
ASSERT(req_cb_called == 1);
|
||||
|
||||
@ -70,7 +70,12 @@ TEST_IMPL(udp_dgram_too_big) {
|
||||
buf = uv_buf_init(dgram, sizeof dgram);
|
||||
ASSERT(0 == uv_ip4_addr("127.0.0.1", TEST_PORT, &addr));
|
||||
|
||||
r = uv_udp_send(&req_, &handle_, &buf, 1, &addr, send_cb);
|
||||
r = uv_udp_send(&req_,
|
||||
&handle_,
|
||||
&buf,
|
||||
1,
|
||||
(const struct sockaddr*) &addr,
|
||||
send_cb);
|
||||
ASSERT(r == 0);
|
||||
|
||||
ASSERT(close_cb_called == 0);
|
||||
|
||||
@ -120,7 +120,12 @@ static void do_test(uv_udp_recv_cb recv_cb, int bind_flags) {
|
||||
buf = uv_buf_init("PING", 4);
|
||||
ASSERT(0 == uv_ip4_addr("127.0.0.1", TEST_PORT, &addr));
|
||||
|
||||
r = uv_udp_send(&req_, &client, &buf, 1, &addr, send_cb);
|
||||
r = uv_udp_send(&req_,
|
||||
&client,
|
||||
&buf,
|
||||
1,
|
||||
(const struct sockaddr*) &addr,
|
||||
send_cb);
|
||||
ASSERT(r == 0);
|
||||
|
||||
r = uv_timer_init(uv_default_loop(), &timeout);
|
||||
|
||||
@ -124,7 +124,12 @@ TEST_IMPL(udp_multicast_join) {
|
||||
buf = uv_buf_init("PING", 4);
|
||||
|
||||
/* server sends "PING" */
|
||||
r = uv_udp_send(&req, &server, &buf, 1, &addr, sv_send_cb);
|
||||
r = uv_udp_send(&req,
|
||||
&server,
|
||||
&buf,
|
||||
1,
|
||||
(const struct sockaddr*) &addr,
|
||||
sv_send_cb);
|
||||
ASSERT(r == 0);
|
||||
|
||||
ASSERT(close_cb_called == 0);
|
||||
|
||||
@ -72,7 +72,12 @@ TEST_IMPL(udp_multicast_ttl) {
|
||||
/* server sends "PING" */
|
||||
buf = uv_buf_init("PING", 4);
|
||||
ASSERT(0 == uv_ip4_addr("239.255.0.1", TEST_PORT, &addr));
|
||||
r = uv_udp_send(&req, &server, &buf, 1, &addr, sv_send_cb);
|
||||
r = uv_udp_send(&req,
|
||||
&server,
|
||||
&buf,
|
||||
1,
|
||||
(const struct sockaddr*) &addr,
|
||||
sv_send_cb);
|
||||
ASSERT(r == 0);
|
||||
|
||||
ASSERT(close_cb_called == 0);
|
||||
|
||||
@ -146,7 +146,12 @@ TEST_IMPL(udp_open) {
|
||||
r = uv_udp_recv_start(&client, alloc_cb, recv_cb);
|
||||
ASSERT(r == 0);
|
||||
|
||||
r = uv_udp_send(&send_req, &client, &buf, 1, &addr, send_cb);
|
||||
r = uv_udp_send(&send_req,
|
||||
&client,
|
||||
&buf,
|
||||
1,
|
||||
(const struct sockaddr*) &addr,
|
||||
send_cb);
|
||||
ASSERT(r == 0);
|
||||
|
||||
uv_run(uv_default_loop(), UV_RUN_DEFAULT);
|
||||
|
||||
@ -152,12 +152,7 @@ static void sv_recv_cb(uv_udp_t* handle,
|
||||
ASSERT(req != NULL);
|
||||
|
||||
sndbuf = uv_buf_init("PONG", 4);
|
||||
r = uv_udp_send(req,
|
||||
handle,
|
||||
&sndbuf,
|
||||
1,
|
||||
(const struct sockaddr_in*) addr,
|
||||
sv_send_cb);
|
||||
r = uv_udp_send(req, handle, &sndbuf, 1, addr, sv_send_cb);
|
||||
ASSERT(r == 0);
|
||||
|
||||
sv_recv_cb_called++;
|
||||
@ -189,7 +184,12 @@ TEST_IMPL(udp_send_and_recv) {
|
||||
/* client sends "PING", expects "PONG" */
|
||||
buf = uv_buf_init("PING", 4);
|
||||
|
||||
r = uv_udp_send(&req, &client, &buf, 1, &addr, cl_send_cb);
|
||||
r = uv_udp_send(&req,
|
||||
&client,
|
||||
&buf,
|
||||
1,
|
||||
(const struct sockaddr*) &addr,
|
||||
cl_send_cb);
|
||||
ASSERT(r == 0);
|
||||
|
||||
ASSERT(close_cb_called == 0);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user