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->max_servers_per_group = 0;
|
||||
cm->extra = NULL;
|
||||
cm->exclude_server_id = 0;
|
||||
|
||||
cm->ops.get_connection = get_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;
|
||||
for (server=group->all.servers; server<end; server++) {
|
||||
if (server->id == cm->exclude_server_id) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((conn=make_connection(cm, server->addr_array,
|
||||
&result)) == NULL)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -103,8 +103,9 @@ typedef struct sf_cm_operations {
|
|||
} SFCMOperations;
|
||||
|
||||
typedef struct sf_connection_manager {
|
||||
short server_group_index;
|
||||
short max_servers_per_group;
|
||||
int exclude_server_id; //for server side
|
||||
uint16_t max_servers_per_group;
|
||||
uint8_t server_group_index;
|
||||
struct {
|
||||
bool bg_thread_enabled;
|
||||
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);
|
||||
}
|
||||
|
||||
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,
|
||||
FCServerInfo **servers, const int count);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue