aboutsummaryrefslogtreecommitdiff
path: root/src/core/pipe.h
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2017-06-28 23:07:28 -0700
committerGarrett D'Amore <garrett@damore.org>2017-06-28 23:07:28 -0700
commitfe3c9705072ac8cafecdf2ea6bca4c26f9464824 (patch)
tree07aaea70cbf8bb6af369d5efede475ed03ffdd63 /src/core/pipe.h
parent10d748fa6444324878a77cc5749c93b75819ced2 (diff)
downloadnng-fe3c9705072ac8cafecdf2ea6bca4c26f9464824.tar.gz
nng-fe3c9705072ac8cafecdf2ea6bca4c26f9464824.tar.bz2
nng-fe3c9705072ac8cafecdf2ea6bca4c26f9464824.zip
Refactor stop again, closing numerous races (thanks valgrind!)
Diffstat (limited to 'src/core/pipe.h')
-rw-r--r--src/core/pipe.h9
1 files changed, 3 insertions, 6 deletions
diff --git a/src/core/pipe.h b/src/core/pipe.h
index 1f911480..80560e0e 100644
--- a/src/core/pipe.h
+++ b/src/core/pipe.h
@@ -29,7 +29,9 @@ struct nni_pipe {
nni_sock * p_sock;
nni_ep * p_ep;
int p_reap;
+ int p_stop;
nni_mtx p_mtx;
+ nni_taskq_ent p_reap_tqe;
};
extern int nni_pipe_sys_init(void);
@@ -54,6 +56,7 @@ extern void nni_pipe_rele(nni_pipe *);
// resources released back to the system. The protocol MUST not reference
// the pipe after this.
extern void nni_pipe_remove(nni_pipe *);
+extern void nni_pipe_stop(nni_pipe *);
// Used only by the socket core - as we don't wish to expose the details
// of the pipe structure outside of pipe.c.
@@ -64,12 +67,6 @@ extern uint16_t nni_pipe_peer(nni_pipe *);
extern int nni_pipe_start(nni_pipe *);
extern int nni_pipe_getopt(nni_pipe *, int, void *, size_t *sizep);
-// nni_pipe_set_proto_data sets the protocol private data. No locking is
-// performed, and this routine should only be called once per pipe at
-// initialization. The third argument is called to destroy the data,
-// at termination.
-extern void nni_pipe_set_proto_data(nni_pipe *, void *, nni_cb);
-
// nni_pipe_get_proto_data gets the protocol private data set with the
// nni_pipe_set_proto_data function. No locking is performed.
extern void *nni_pipe_get_proto_data(nni_pipe *);