]> git.meshlink.io Git - meshlink/blobdiff - src/meshlink_internal.h
Keep private members out of the "public" meshlink structs.
[meshlink] / src / meshlink_internal.h
index f7f0ba789b7164cd66e8afef1a542d4a27df02aa..3099d7e2e67a2d52e8e0fd1500af5af84d19575a 100644 (file)
@@ -63,10 +63,11 @@ typedef struct outpacketqueue {
 /// A handle for an instance of MeshLink.
 struct meshlink_handle {
        char *name;
-       char *appname;
-       dclass_t dclass;
        void *priv;
 
+       char *appname;
+       dev_class_t devclass;
+
        char *confbase;
 
        meshlink_receive_cb_t receive_cb;
@@ -74,10 +75,12 @@ struct meshlink_handle {
        meshlink_log_cb_t log_cb;
        meshlink_log_level_t log_level;
 
+       meshlink_channel_accept_cb_t channel_accept_cb;
+
        pthread_t thread;
        bool threadstarted;
        pthread_mutex_t outpacketqueue_mutex;
-       pthread_mutex_t nodes_mutex;
+       pthread_mutex_t mesh_mutex;
        event_loop_t loop;
        listen_socket_t listen_socket[MAXSOCKETS];
        int listen_sockets;
@@ -148,6 +151,13 @@ struct meshlink_node {
        void *priv;
 };
 
+/// A channel.
+struct meshlink_channel {
+       struct utcp_connection *c;
+       struct node_t *node;
+       meshlink_channel_receive_cb_t receive_cb;
+};
+
 /// Header for data packets routed between nodes
 typedef struct meshlink_packethdr {
        uint8_t destination[16];
@@ -158,17 +168,13 @@ extern void meshlink_send_from_queue(event_loop_t* el,meshlink_handle_t *mesh);
 extern meshlink_log_level_t global_log_level;
 extern meshlink_log_cb_t global_log_cb;
 
-extern int cweight_from_dclass(dclass_t dclass);
-extern int max_ccount_from_dclass(dclass_t dclass);
-extern bool dclass_ccounts_satisfied(dclass_t dclass, splay_tree_t* counts, int total_count);
-
+/// Device class traits
 typedef struct {
-       dclass_t dclass;
-       int ccount;
-} dclass_ccount_t;
+       unsigned int min_connects;
+       unsigned int max_connects;
+       int edge_weight;
+} dev_class_traits_t;
 
-extern int dclass_ccount_compare(const void *a, const void *b);
-extern dclass_ccount_t* dclass_ccount_alloc();
-extern void dclass_ccount_delete(void *c);
+extern dev_class_traits_t dev_class_traits[];
 
 #endif // MESHLINK_INTERNAL_H