]> git.meshlink.io Git - meshlink/blobdiff - src/utcp.h
Add a callback that notifies when the MeshLink thread starts and stops.
[meshlink] / src / utcp.h
index c051ff1ff460ea977573a001d78ff0ef7c16e73c..5de9364b2ca447197ec0906c28eaaf454f5f11fd 100644 (file)
@@ -53,8 +53,9 @@ struct utcp_connection;
 
 #define UTCP_TCP 3
 #define UTCP_UDP 0
+#define UTCP_CHANGEABLE_FLAGS 0x18U
 
-typedef bool (*utcp_pre_accept_t)(struct utcp *utcp, uint16_t port);
+typedef bool (*utcp_listen_t)(struct utcp *utcp, uint16_t port);
 typedef void (*utcp_accept_t)(struct utcp_connection *utcp_connection, uint16_t port);
 typedef void (*utcp_retransmit_t)(struct utcp_connection *connection);
 
@@ -63,7 +64,7 @@ typedef ssize_t (*utcp_recv_t)(struct utcp_connection *connection, const void *d
 
 typedef void (*utcp_poll_t)(struct utcp_connection *connection, size_t len);
 
-struct utcp *utcp_init(utcp_accept_t accept, utcp_pre_accept_t pre_accept, utcp_send_t send, void *priv);
+struct utcp *utcp_init(utcp_accept_t accept, utcp_listen_t listen, utcp_send_t send, void *priv);
 void utcp_exit(struct utcp *utcp);
 
 struct utcp_connection *utcp_connect_ex(struct utcp *utcp, uint16_t port, utcp_recv_t recv, void *priv, uint32_t flags);
@@ -77,9 +78,9 @@ int utcp_shutdown(struct utcp_connection *connection, int how);
 struct timespec utcp_timeout(struct utcp *utcp);
 void utcp_set_recv_cb(struct utcp_connection *connection, utcp_recv_t recv);
 void utcp_set_poll_cb(struct utcp_connection *connection, utcp_poll_t poll);
-void utcp_set_accept_cb(struct utcp *utcp, utcp_accept_t accept, utcp_pre_accept_t pre_accept);
+void utcp_set_accept_cb(struct utcp *utcp, utcp_accept_t accept, utcp_listen_t listen);
 bool utcp_is_active(struct utcp *utcp);
-void utcp_abort_all_connections(struct utcp *utcp);
+void utcp_reset_all_connections(struct utcp *utcp);
 
 // Global socket options
 
@@ -98,11 +99,11 @@ void utcp_set_retransmit_cb(struct utcp *utcp, utcp_retransmit_t retransmit);
 // Per-socket options
 
 size_t utcp_get_sndbuf(struct utcp_connection *connection);
-void utcp_set_sndbuf(struct utcp_connection *connection, size_t size);
+void utcp_set_sndbuf(struct utcp_connection *connection, void *buf, size_t size);
 size_t utcp_get_sndbuf_free(struct utcp_connection *connection);
 
 size_t utcp_get_rcvbuf(struct utcp_connection *connection);
-void utcp_set_rcvbuf(struct utcp_connection *connection, size_t size);
+void utcp_set_rcvbuf(struct utcp_connection *connection, void *buf, size_t size);
 size_t utcp_get_rcvbuf_free(struct utcp_connection *connection);
 
 size_t utcp_get_sendq(struct utcp_connection *connection);
@@ -118,6 +119,8 @@ size_t utcp_get_outq(struct utcp_connection *connection);
 
 void utcp_expect_data(struct utcp_connection *connection, bool expect);
 
+void utcp_set_flags(struct utcp_connection *connection, uint32_t flags);
+
 // Completely global options
 
 void utcp_set_clock_granularity(long granularity);