udphole

Basic UDP wormhole proxy
git clone git://git.finwo.net/app/udphole
Log | Files | Refs | README | LICENSE

node.h (1312B)


      1 #ifndef UDPHOLE_CLUSTER_NODE_H
      2 #define UDPHOLE_CLUSTER_NODE_H
      3 
      4 #include <stdint.h>
      5 
      6 #include "common/resp.h"
      7 #include "common/scheduler.h"
      8 
      9 typedef struct cluster_node {
     10   char *name;
     11   char *address;
     12   char *host;
     13   int   port;
     14   char *unix_path;
     15   char *username;
     16   char *password;
     17   int   weight;
     18 
     19   int     fd;
     20   int     available;
     21   int64_t last_ping;
     22   int64_t last_check;
     23 } cluster_node_t;
     24 
     25 typedef struct {
     26   cluster_node_t **nodes;
     27   size_t           nodes_count;
     28 } cluster_nodes_t;
     29 
     30 int cluster_node_init(cluster_node_t *node, const char *name, const char *address, const char *username,
     31                       const char *password);
     32 
     33 void cluster_node_free(cluster_node_t *node);
     34 
     35 int cluster_node_connect(cluster_node_t *node);
     36 
     37 void cluster_node_disconnect(cluster_node_t *node);
     38 
     39 int cluster_node_send_command(cluster_node_t *node, const char *cmd, resp_object **out_response);
     40 
     41 int cluster_node_healthcheck_pt(int64_t timestamp, struct pt_task *task);
     42 
     43 cluster_nodes_t *cluster_nodes_create(void);
     44 
     45 void cluster_nodes_free(cluster_nodes_t *cnodes);
     46 
     47 int cluster_nodes_add(cluster_nodes_t *cnodes, cluster_node_t *node);
     48 
     49 cluster_node_t *cluster_nodes_get(cluster_nodes_t *cnodes, const char *name);
     50 
     51 cluster_node_t **cluster_nodes_get_available(cluster_nodes_t *cnodes, size_t *out_count);
     52 
     53 #endif