aboutsummaryrefslogtreecommitdiff
path: root/src/platform
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2020-12-19 10:21:54 -0800
committerGarrett D'Amore <garrett@damore.org>2020-12-19 12:50:05 -0800
commitd12e169c1e733b255d146847ed57037b74681285 (patch)
treee4a59142a6cf097dfdda8620635f173f53db9e7a /src/platform
parent2033988343bce413763d3e9664e3e8372da48591 (diff)
downloadnng-d12e169c1e733b255d146847ed57037b74681285.tar.gz
nng-d12e169c1e733b255d146847ed57037b74681285.tar.bz2
nng-d12e169c1e733b255d146847ed57037b74681285.zip
fixes #1372 nni_reap could be smaller
Diffstat (limited to 'src/platform')
-rw-r--r--src/platform/posix/posix_ipc.h2
-rw-r--r--src/platform/posix/posix_ipcconn.c6
-rw-r--r--src/platform/posix/posix_tcp.h2
-rw-r--r--src/platform/posix/posix_tcpconn.c10
-rw-r--r--src/platform/windows/win_ipcconn.c13
-rw-r--r--src/platform/windows/win_tcpdial.c11
-rw-r--r--src/platform/windows/win_tcplisten.c11
7 files changed, 40 insertions, 15 deletions
diff --git a/src/platform/posix/posix_ipc.h b/src/platform/posix/posix_ipc.h
index 2c2c9af7..4ef5fa80 100644
--- a/src/platform/posix/posix_ipc.h
+++ b/src/platform/posix/posix_ipc.h
@@ -30,7 +30,7 @@ struct nni_ipc_conn {
nni_aio * dial_aio;
nni_ipc_dialer *dialer;
nng_sockaddr sa;
- nni_reap_item reap;
+ nni_reap_node reap;
};
struct nni_ipc_dialer {
diff --git a/src/platform/posix/posix_ipcconn.c b/src/platform/posix/posix_ipcconn.c
index 825ecd4b..04eddd5f 100644
--- a/src/platform/posix/posix_ipcconn.c
+++ b/src/platform/posix/posix_ipcconn.c
@@ -493,11 +493,15 @@ ipc_reap(void *arg)
NNI_FREE_STRUCT(c);
}
+static nni_reap_list ipc_reap_list = {
+ .rl_offset = offsetof(ipc_conn, reap),
+ .rl_func = ipc_reap,
+};
static void
ipc_free(void *arg)
{
ipc_conn *c = arg;
- nni_reap(&c->reap, ipc_reap, c);
+ nni_reap(&ipc_reap_list, c);
}
static const nni_option ipc_options[] = {
diff --git a/src/platform/posix/posix_tcp.h b/src/platform/posix/posix_tcp.h
index 87312dff..a8d1308e 100644
--- a/src/platform/posix/posix_tcp.h
+++ b/src/platform/posix/posix_tcp.h
@@ -25,7 +25,7 @@ struct nni_tcp_conn {
nni_mtx mtx;
nni_aio * dial_aio;
nni_tcp_dialer *dialer;
- nni_reap_item reap;
+ nni_reap_node reap;
};
struct nni_tcp_dialer {
diff --git a/src/platform/posix/posix_tcpconn.c b/src/platform/posix/posix_tcpconn.c
index 9684fe27..2494b05e 100644
--- a/src/platform/posix/posix_tcpconn.c
+++ b/src/platform/posix/posix_tcpconn.c
@@ -217,11 +217,15 @@ tcp_fini(void *arg)
NNI_FREE_STRUCT(c);
}
+static nni_reap_list tcp_reap_list = {
+ .rl_offset = offsetof(nni_tcp_conn, reap),
+ .rl_func = tcp_fini,
+};
static void
tcp_free(void *arg)
{
nni_tcp_conn *c = arg;
- nni_reap(&c->reap, tcp_fini, arg);
+ nni_reap(&tcp_reap_list, c);
}
static void
@@ -336,7 +340,7 @@ tcp_get_peername(void *arg, void *buf, size_t *szp, nni_type t)
nni_tcp_conn * c = arg;
struct sockaddr_storage ss;
socklen_t len = sizeof(ss);
- int fd = nni_posix_pfd_fd(c->pfd);
+ int fd = nni_posix_pfd_fd(c->pfd);
int rv;
nng_sockaddr sa;
@@ -355,7 +359,7 @@ tcp_get_sockname(void *arg, void *buf, size_t *szp, nni_type t)
nni_tcp_conn * c = arg;
struct sockaddr_storage ss;
socklen_t len = sizeof(ss);
- int fd = nni_posix_pfd_fd(c->pfd);
+ int fd = nni_posix_pfd_fd(c->pfd);
int rv;
nng_sockaddr sa;
diff --git a/src/platform/windows/win_ipcconn.c b/src/platform/windows/win_ipcconn.c
index b8dc62d3..135a961e 100644
--- a/src/platform/windows/win_ipcconn.c
+++ b/src/platform/windows/win_ipcconn.c
@@ -34,7 +34,7 @@ typedef struct ipc_conn {
bool closed;
nni_mtx mtx;
nni_cv cv;
- nni_reap_item reap;
+ nni_reap_node reap;
} ipc_conn;
static void
@@ -309,8 +309,10 @@ ipc_close(void *arg)
}
static void
-ipc_conn_reap(ipc_conn *c)
+ipc_conn_reap(void *arg)
{
+ ipc_conn *c = arg;
+
nni_mtx_lock(&c->mtx);
while ((!nni_list_empty(&c->recv_aios)) ||
(!nni_list_empty(&c->send_aios))) {
@@ -330,13 +332,18 @@ ipc_conn_reap(ipc_conn *c)
NNI_FREE_STRUCT(c);
}
+static nni_reap_list ipc_reap_list = {
+ .rl_offset = offsetof(ipc_conn, reap),
+ .rl_func = ipc_conn_reap,
+};
+
static void
ipc_free(void *arg)
{
ipc_conn *c = arg;
ipc_close(c);
- nni_reap(&c->reap, (nni_cb) ipc_conn_reap, CONN(c));
+ nni_reap(&ipc_reap_list, c);
}
static int
diff --git a/src/platform/windows/win_tcpdial.c b/src/platform/windows/win_tcpdial.c
index 12ebdca6..3353d380 100644
--- a/src/platform/windows/win_tcpdial.c
+++ b/src/platform/windows/win_tcpdial.c
@@ -25,7 +25,7 @@ struct nni_tcp_dialer {
SOCKADDR_STORAGE src; // source address
size_t srclen;
nni_mtx mtx;
- nni_reap_item reap;
+ nni_reap_node reap;
};
int
@@ -88,6 +88,11 @@ nni_tcp_dialer_close(nni_tcp_dialer *d)
nni_mtx_unlock(&d->mtx);
}
+static nni_reap_list tcp_dialer_reap_list = {
+ .rl_offset = offsetof(nni_tcp_dialer, reap),
+ .rl_func = (nni_cb) nni_tcp_dialer_fini,
+};
+
void
nni_tcp_dialer_fini(nni_tcp_dialer *d)
{
@@ -95,7 +100,7 @@ nni_tcp_dialer_fini(nni_tcp_dialer *d)
nni_mtx_lock(&d->mtx);
if (!nni_list_empty(&d->aios)) {
nni_mtx_unlock(&d->mtx);
- nni_reap(&d->reap, (nni_cb) nni_tcp_dialer_fini, d);
+ nni_reap(&tcp_dialer_reap_list, nni_tcp_dialer_fini);
return;
}
nni_mtx_unlock(&d->mtx);
@@ -164,7 +169,7 @@ tcp_dial_cb(nni_win_io *io, int rv, size_t cnt)
(void) setsockopt(
c->s, IPPROTO_TCP, TCP_NODELAY, (char *) &nd, sizeof(nd));
- len = sizeof (SOCKADDR_STORAGE);
+ len = sizeof(SOCKADDR_STORAGE);
(void) getsockname(c->s, (SOCKADDR *) &c->sockname, &len);
nni_aio_set_output(aio, 0, c);
diff --git a/src/platform/windows/win_tcplisten.c b/src/platform/windows/win_tcplisten.c
index 9c5fec3c..1e87fd31 100644
--- a/src/platform/windows/win_tcplisten.c
+++ b/src/platform/windows/win_tcplisten.c
@@ -28,7 +28,7 @@ struct nni_tcp_listener {
LPFN_GETACCEPTEXSOCKADDRS getacceptexsockaddrs;
SOCKADDR_STORAGE ss;
nni_mtx mtx;
- nni_reap_item reap;
+ nni_reap_node reap;
};
// tcp_listener_funcs looks up function pointers we need for advanced accept
@@ -184,6 +184,11 @@ nni_tcp_listener_close(nni_tcp_listener *l)
nni_mtx_unlock(&l->mtx);
}
+static nni_reap_list tcp_listener_reap_list = {
+ .rl_offset = offsetof(nni_tcp_listener, reap),
+ .rl_func = (nni_cb) nni_tcp_listener_fini,
+};
+
void
nni_tcp_listener_fini(nni_tcp_listener *l)
{
@@ -191,7 +196,7 @@ nni_tcp_listener_fini(nni_tcp_listener *l)
nni_mtx_lock(&l->mtx);
if (!nni_list_empty(&l->aios)) {
nni_mtx_unlock(&l->mtx);
- nni_reap(&l->reap, (nni_cb) nni_tcp_listener_fini, l);
+ nni_reap(&tcp_listener_reap_list, l);
return;
}
nni_mtx_unlock(&l->mtx);
@@ -302,7 +307,7 @@ nni_tcp_listener_accept(nni_tcp_listener *l, nni_aio *aio)
return;
}
- // Windows requires us to explicity create the socket before
+ // Windows requires us to explicitly create the socket before
// calling accept on it.
if ((s = socket(l->ss.ss_family, SOCK_STREAM, 0)) == INVALID_SOCKET) {
rv = nni_win_error(GetLastError());