aboutsummaryrefslogtreecommitdiff
path: root/src/platform/windows/win_ipcconn.c
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/windows/win_ipcconn.c
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/windows/win_ipcconn.c')
-rw-r--r--src/platform/windows/win_ipcconn.c13
1 files changed, 10 insertions, 3 deletions
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