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