summaryrefslogtreecommitdiff
path: root/include/MESA/wiredLB.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/MESA/wiredLB.h')
-rw-r--r--include/MESA/wiredLB.h70
1 files changed, 70 insertions, 0 deletions
diff --git a/include/MESA/wiredLB.h b/include/MESA/wiredLB.h
new file mode 100644
index 0000000..21daa20
--- /dev/null
+++ b/include/MESA/wiredLB.h
@@ -0,0 +1,70 @@
+
+/*
+*****************Wired Load Balancer********
+* Load balance form producer to the consumer.
+* Cooperate with consul, which is a service discovery infrastructure.
+* See document for detail instructions.
+* Author: [email protected], MESA
+* All right reserved by www.mesalab.cn 2018~2021
+*********************************************************
+*/
+
+#ifndef H_WIRED_LOAD_BALANCER_H_INCLUDE
+#define H_WIRED_LOAD_BALANCER_H_INCLUDE
+#include <stddef.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define WLB_CONSUMER 0
+#define WLB_PRODUCER 1
+#define WLB_MAX_TAG_SIZE 1024
+#define ADDRSRLEN_MAX 46
+
+enum WLB_OPTION
+{
+ WLB_OPT_ENABLE_OVERRIDE=0, // VALUE is an int, 1 for enable, 0 for disable. DEFAULT: 0.
+ WLB_OPT_HEALTH_CHECK_PORT, // VALUE is a unsigned short, SIZE=sizeof(unsigned short). DEFAULT:52100.
+ WLB_OPT_HEALTH_CHECK_INTERVAL, // VALUE is a unsigned short, SIZE=sizeof(unsigned short). DEFAULT:10 seconds.
+ WLB_CONS_OPT_DATA_PORT, // VALUE is an unsigned short, SIZE=sizeof(unsigned short). DEFAULT: 0.
+ WLB_CONS_OPT_PRIMARY_ADDR, // VALUE is a const char*, MUST end with '\0', SIZE= strlen(string+'\0')+1. DEFAULT: use consul agent listen address.
+ WLB_CONS_OPT_SECONDARY_ADDR, // VALUE is a const char*, MUST end with '\0', SIZE= strlen(string+'\0')+1. DEFAULT: no default.
+ WLB_CONS_OPT_CAPACITY, // VALUE is an int that range from 1 to 100, SIZE=sizeof(int). DEFAULT: 32.
+ WLB_CONS_OPT_COST, // VALUE is an int that range from 1 to 100, SIZE=sizeof(int). DEFAULT: 32.
+ WLB_CONS_OPT_USER_TAG, // VALUE is a const char*, MUST end with '\0', SIZE= strlen(string+'\0')+1. DEFAULT: "null". Size must Not exceed WLB_MAX_TAG_SIZE.
+ WLB_PROD_OPT_OVERRIDE_PRIMARY_IP, // VALUE is a const char*, MUST end with '\0', SIZE= strlen(string+'\0')+1. DEFAULT: "null", format: "10.2.0.1-250;123.57.35.100-250;"
+ WLB_PROD_OPT_OVERRIDE_SECONDARY_IP, // VALUE is a const char*, MUST end with '\0', SIZE= strlen(string+'\0')+1. DEFAULT: "null", same format as WLB_PROD_OPT_OVERRIDE_PRIMARY_IP.
+ WLB_PROD_OPT_OVERRIDE_DATAPORT, // VALUE is an unsigned short, SIZE=sizeof(unsigned short). DEFAULT: 0.
+ WLB_PROD_OPT_OVERRIDE_USER_TAG, // Same requirement as WLB_CONS_OPT_USER_TAG.
+ WLB_PROD_OPT_DATACENTER // VALUE is a const char*, MUST end with '\0', SIZE= strlen(string+'\0')+1. DEFAULT: "null",list consumer of specific datacenter, case sensitive, format: "mesa-wired-bj"
+};
+typedef void* WLB_handle_t;
+
+struct WLB_consumer_t
+{
+ char ip_addr[ADDRSRLEN_MAX];
+ unsigned short data_port;
+ char user_tag[WLB_MAX_TAG_SIZE];
+};
+// Lookup is THREAD SAFE.
+int wiredLB_lookup(WLB_handle_t handle, const void* key, int len, struct WLB_consumer_t* consumer);
+
+int wiredLB_list(WLB_handle_t handle,size_t n_cons, struct WLB_consumer_t* cons_array);
+
+
+//Report is THREAD SAFE, NULL is allowed for runtime_info.
+void wiredLB_report(WLB_handle_t handle,long proc_bytes, long proc_count, const char* runtime_info);
+
+//[IN] topic, MADATORY, use utf-8 for non English character.
+//[IN] group_name, OPTIONALl, could be NULL, use utf-8 for non English character.
+//[IN] role, WLB_COSUMER or WLB_PRODUCER
+WLB_handle_t wiredLB_create(const char* topic, const char* group_name, int role);
+int wiredLB_set_opt(WLB_handle_t handle, enum WLB_OPTION opt, const void* value, size_t size);
+int wiredLB_init(WLB_handle_t handle);
+void wiredLB_destroy(WLB_handle_t handle);
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif
+