aboutsummaryrefslogtreecommitdiff
path: root/src/core/socket.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/socket.h')
-rw-r--r--src/core/socket.h55
1 files changed, 5 insertions, 50 deletions
diff --git a/src/core/socket.h b/src/core/socket.h
index 9b7ac1f9..9fa6c0fa 100644
--- a/src/core/socket.h
+++ b/src/core/socket.h
@@ -11,54 +11,6 @@
#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.
-struct nni_socket {
- nni_list_node s_node;
- nni_mtx s_mx;
- nni_cv s_cv;
- nni_cv s_close_cv;
-
- uint32_t s_id;
- uint32_t s_flags;
- unsigned s_refcnt; // protected by global lock
- void * s_data; // Protocol private
-
- nni_msgq *s_uwq; // Upper write queue
- nni_msgq *s_urq; // Upper read queue
-
- nni_proto_id s_self_id;
- nni_proto_id s_peer_id;
-
- nni_proto_pipe_ops s_pipe_ops;
- nni_proto_sock_ops s_sock_ops;
-
- // XXX: options
- nni_duration s_linger; // linger time
- nni_duration s_sndtimeo; // send timeout
- nni_duration s_rcvtimeo; // receive timeout
- nni_duration s_reconn; // reconnect time
- nni_duration s_reconnmax; // max reconnect time
- size_t s_rcvmaxsz; // maximum receive size
-
- nni_list s_eps; // active endpoints
- nni_list s_pipes; // active pipes
-
- int s_ep_pend; // EP dial/listen in progress
- int s_closing; // Socket is closing
- int s_closed; // Socket closed, protected by global lock
- int s_besteffort; // Best effort mode delivery
- int s_senderr; // Protocol state machine use
- int s_recverr; // Protocol state machine use
-
- nni_event s_recv_ev; // Event for readability
- nni_event s_send_ev; // Event for sendability
-
- nni_notifyfd s_send_fd;
- nni_notifyfd s_recv_fd;
-};
-
extern int nni_sock_sys_init(void);
extern void nni_sock_sys_fini(void);
@@ -72,8 +24,8 @@ extern uint16_t nni_sock_proto(nni_sock *);
extern uint16_t nni_sock_peer(nni_sock *);
extern int nni_sock_setopt(nni_sock *, int, const void *, size_t);
extern int nni_sock_getopt(nni_sock *, int, void *, size_t *);
-extern int nni_sock_recvmsg(nni_sock *, nni_msg **, nni_time);
-extern int nni_sock_sendmsg(nni_sock *, nni_msg *, nni_time);
+extern int nni_sock_recvmsg(nni_sock *, nni_msg **, int);
+extern int nni_sock_sendmsg(nni_sock *, nni_msg *, int);
extern uint32_t nni_sock_id(nni_sock *);
extern void nni_sock_lock(nni_sock *);
@@ -115,4 +67,7 @@ extern nni_msgq *nni_sock_recvq(nni_sock *);
extern size_t nni_sock_rcvmaxsz(nni_sock *);
extern void nni_sock_reconntimes(nni_sock *, nni_duration *, nni_duration *);
+// nni_sock_flags returns the socket flags, used to indicate whether read
+// and or write are appropriate for the protocol.
+extern uint32_t nni_sock_flags(nni_sock *);
#endif // CORE_SOCKET_H