connection manager support exclude server_id for server side
parent
90e144920a
commit
7c6673f78a
|
|
@ -557,6 +557,7 @@ int sf_connection_manager_init_ex(SFConnectionManager *cm,
|
||||||
cm->alive_detect.bg_thread_enabled = bg_thread_enabled;
|
cm->alive_detect.bg_thread_enabled = bg_thread_enabled;
|
||||||
cm->max_servers_per_group = 0;
|
cm->max_servers_per_group = 0;
|
||||||
cm->extra = NULL;
|
cm->extra = NULL;
|
||||||
|
cm->exclude_server_id = 0;
|
||||||
|
|
||||||
cm->ops.get_connection = get_connection;
|
cm->ops.get_connection = get_connection;
|
||||||
cm->ops.get_server_connection = get_server_connection;
|
cm->ops.get_server_connection = get_server_connection;
|
||||||
|
|
@ -789,6 +790,10 @@ static int get_group_servers_by_all(SFConnectionManager *cm,
|
||||||
|
|
||||||
end = group->all.servers + group->all.count;
|
end = group->all.servers + group->all.count;
|
||||||
for (server=group->all.servers; server<end; server++) {
|
for (server=group->all.servers; server<end; server++) {
|
||||||
|
if (server->id == cm->exclude_server_id) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ((conn=make_connection(cm, server->addr_array,
|
if ((conn=make_connection(cm, server->addr_array,
|
||||||
&result)) == NULL)
|
&result)) == NULL)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -103,8 +103,9 @@ typedef struct sf_cm_operations {
|
||||||
} SFCMOperations;
|
} SFCMOperations;
|
||||||
|
|
||||||
typedef struct sf_connection_manager {
|
typedef struct sf_connection_manager {
|
||||||
short server_group_index;
|
int exclude_server_id; //for server side
|
||||||
short max_servers_per_group;
|
uint16_t max_servers_per_group;
|
||||||
|
uint8_t server_group_index;
|
||||||
struct {
|
struct {
|
||||||
bool bg_thread_enabled;
|
bool bg_thread_enabled;
|
||||||
struct common_blocked_queue queue;
|
struct common_blocked_queue queue;
|
||||||
|
|
@ -141,6 +142,12 @@ static inline int sf_connection_manager_init(SFConnectionManager *cm,
|
||||||
connect_done_callback, args, NULL, bg_thread_enabled);
|
connect_done_callback, args, NULL, bg_thread_enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void sf_connection_manager_set_exclude_server_id(
|
||||||
|
SFConnectionManager *cm, const int exclude_server_id)
|
||||||
|
{
|
||||||
|
cm->exclude_server_id = exclude_server_id;
|
||||||
|
}
|
||||||
|
|
||||||
int sf_connection_manager_add(SFConnectionManager *cm, const int group_id,
|
int sf_connection_manager_add(SFConnectionManager *cm, const int group_id,
|
||||||
FCServerInfo **servers, const int count);
|
FCServerInfo **servers, const int count);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue