From b92672e20420683e73bfc017956ac6ef2b6b793b Mon Sep 17 00:00:00 2001 From: Garrett D'Amore Date: Thu, 22 Dec 2016 01:05:43 -0800 Subject: Logic for socket shutdown, cleanup, and draining figured out. There's work to do still, but I've left clear indications of the design in comments. Some ugly mysteries are now solved. --- src/core/socket.h | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) (limited to 'src/core/socket.h') diff --git a/src/core/socket.h b/src/core/socket.h index da531836..366e9958 100644 --- a/src/core/socket.h +++ b/src/core/socket.h @@ -10,42 +10,37 @@ #ifndef CORE_SOCKET_H #define CORE_SOCKET_H -/* - * NB: This structure is supplied here for use by the CORE. Use of this library - * OUSIDE of the core is STRICTLY VERBOTEN. NO DIRECT ACCESS BY PROTOCOLS OR - * TRANSPORTS. - */ +// NB: This structure is supplied here for use by the CORE. Use of this library +// OUSIDE of the core is STRICTLY VERBOTEN. NO DIRECT ACCESS BY PROTOCOLS OR +// TRANSPORTS. struct nng_socket { nni_mutex_t s_mx; + nni_cond_t s_cv; - nni_msgqueue_t s_uwq; /* Upper write queue. */ - nni_msgqueue_t s_urq; /* Upper read queue. */ + nni_msgqueue_t s_uwq; // Upper write queue + nni_msgqueue_t s_urq; // Upper read queue struct nni_protocol s_ops; - void * s_data; /* Protocol private. */ + void * s_data; // Protocol private - /* options */ + /* XXX: options */ nni_list_t s_eps; nni_list_t s_pipes; - int s_besteffort; /* Best effort mode delivery. */ - int s_senderr; /* Protocol state machine use. */ + int s_closing; // Socket is closing + int s_besteffort; // Best effort mode delivery + int s_senderr; // Protocol state machine use }; -/* - * Internally used socket API. Again, this stuff is not part of our public - * API. - */ - extern int nni_socket_create(nni_socket_t *, uint16_t); extern int nni_socket_close(nni_socket_t); extern int nni_socket_add_pipe(nni_socket_t, nni_pipe_t); -extern void nni_socket_remove_pipe(nni_socket_t, nni_pipe_t); -extern uint16_t nni_socket_protocol(nni_socket_t); +extern void nni_socket_rem_pipe(nni_socket_t, nni_pipe_t); +extern uint16_t nni_socket_proto(nni_socket_t); extern int nni_socket_setopt(nni_socket_t, int, const void *, size_t); extern int nni_socket_getopt(nni_socket_t, int, void *, size_t *); -#endif /* CORE_SOCKET_H */ +#endif // CORE_SOCKET_H -- cgit v1.2.3-70-g09d2