add function sf_load_quorum_config
parent
b4aaf69962
commit
de943f684a
|
|
@ -94,13 +94,14 @@ void sf_net_retry_config_to_string(SFNetRetryConfig *net_retry_cfg,
|
|||
net_retry_cfg->network.interval_ms);
|
||||
}
|
||||
|
||||
void sf_load_read_rule_config_ex(SFDataReadRule *rule,
|
||||
int sf_load_read_rule_config_ex(SFDataReadRule *rule,
|
||||
IniFullContext *ini_ctx, const SFDataReadRule def_rule)
|
||||
{
|
||||
char *read_rule;
|
||||
|
||||
read_rule = iniGetStrValueEx(ini_ctx->section_name,
|
||||
"read_rule", ini_ctx->context, true);
|
||||
if (read_rule == NULL || *read_rule == '\0') {
|
||||
if (read_rule == NULL) {
|
||||
*rule = def_rule;
|
||||
} else if (strncasecmp(read_rule, "any", 3) == 0) {
|
||||
*rule = sf_data_read_rule_any_available;
|
||||
|
|
@ -110,8 +111,33 @@ void sf_load_read_rule_config_ex(SFDataReadRule *rule,
|
|||
*rule = sf_data_read_rule_master_only;
|
||||
} else {
|
||||
logError("file: "__FILE__", line: %d, "
|
||||
"config file: %s, unkown read_rule: %s, set to any",
|
||||
"config file: %s, unkown read_rule: %s",
|
||||
__LINE__, ini_ctx->filename, read_rule);
|
||||
*rule = sf_data_read_rule_any_available;
|
||||
return EINVAL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sf_load_quorum_config_ex(SFElectionQuorum *quorum,
|
||||
IniFullContext *ini_ctx, const SFElectionQuorum def_quorum)
|
||||
{
|
||||
char *str;
|
||||
|
||||
str = iniGetStrValue(ini_ctx->section_name,
|
||||
"quorum", ini_ctx->context);
|
||||
if (str == NULL) {
|
||||
*quorum = def_quorum;
|
||||
} else if (strncasecmp(str, "any", 3) == 0) {
|
||||
*quorum = sf_election_quorum_any;
|
||||
} else if (strncasecmp(str, "majority", 8) == 0) {
|
||||
*quorum = sf_election_quorum_majority;
|
||||
} else {
|
||||
logError("file: "__FILE__", line: %d, "
|
||||
"config file: %s, unkown quorum: %s",
|
||||
__LINE__, ini_ctx->filename, str);
|
||||
return EINVAL;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ static inline int sf_calc_next_retry_interval(SFNetRetryIntervalContext *ctx)
|
|||
return ctx->interval_ms;
|
||||
}
|
||||
|
||||
void sf_load_read_rule_config_ex(SFDataReadRule *rule,
|
||||
int sf_load_read_rule_config_ex(SFDataReadRule *rule,
|
||||
IniFullContext *ini_ctx, const SFDataReadRule def_rule);
|
||||
|
||||
static inline const char *sf_get_read_rule_caption(
|
||||
|
|
@ -85,9 +85,28 @@ static inline const char *sf_get_read_rule_caption(
|
|||
}
|
||||
}
|
||||
|
||||
int sf_load_quorum_config_ex(SFElectionQuorum *quorum,
|
||||
IniFullContext *ini_ctx, const SFElectionQuorum def_quorum);
|
||||
|
||||
static inline const char *sf_get_quorum_caption(
|
||||
const SFElectionQuorum quorum)
|
||||
{
|
||||
switch (quorum) {
|
||||
case sf_election_quorum_any:
|
||||
return "any";
|
||||
case sf_election_quorum_majority:
|
||||
return "majority";
|
||||
default:
|
||||
return "unknown";
|
||||
}
|
||||
}
|
||||
|
||||
#define sf_load_read_rule_config(rule, ini_ctx) \
|
||||
sf_load_read_rule_config_ex(rule, ini_ctx, sf_data_read_rule_master_only)
|
||||
|
||||
#define sf_load_quorum_config(quorum, ini_ctx) \
|
||||
sf_load_quorum_config_ex(quorum, ini_ctx, sf_election_quorum_majority)
|
||||
|
||||
#define SF_NET_RETRY_FINISHED(retry_times, counter, result) \
|
||||
!((SF_IS_RETRIABLE_ERROR(result) && ((retry_times > 0 && \
|
||||
counter <= retry_times) || (retry_times < 0))))
|
||||
|
|
|
|||
|
|
@ -244,4 +244,9 @@ typedef struct sf_synchronize_context {
|
|||
};
|
||||
} SFSynchronizeContext;
|
||||
|
||||
typedef enum sf_election_quorum {
|
||||
sf_election_quorum_any = 1,
|
||||
sf_election_quorum_majority
|
||||
} SFElectionQuorum;
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in New Issue