]> git.meshlink.io Git - meshlink/blobdiff - src/meshlink_internal.h
Add meshlink_channel_aio_receive().
[meshlink] / src / meshlink_internal.h
index 4056df316ed0ed27cd1fb391e08ee836ddc998da..68de758af73063d5b006c4d3fbc4d3b76458445a 100644 (file)
@@ -159,6 +159,9 @@ struct meshlink_handle {
 
        // Thread management
        pthread_t thread;
+       pthread_cond_t cond;
+       pthread_mutex_t discovery_mutex;
+       pthread_cond_t discovery_cond;
        bool threadstarted;
        bool discovery_threadstarted;
 
@@ -202,12 +205,24 @@ struct meshlink_submesh {
        void *priv;
 };
 
+/// An AIO buffer.
+typedef struct meshlink_aio_buffer {
+       const void *data;
+       size_t len;
+       size_t done;
+       meshlink_aio_cb_t cb;
+       void *priv;
+       struct meshlink_aio_buffer *next;
+} meshlink_aio_buffer_t;
+
 /// A channel.
 struct meshlink_channel {
        struct node_t *node;
        void *priv;
 
        struct utcp_connection *c;
+       meshlink_aio_buffer_t *aio_send;
+       meshlink_aio_buffer_t *aio_receive;
        meshlink_channel_receive_cb_t receive_cb;
        meshlink_channel_poll_cb_t poll_cb;
 };