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);
|
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)
|
IniFullContext *ini_ctx, const SFDataReadRule def_rule)
|
||||||
{
|
{
|
||||||
char *read_rule;
|
char *read_rule;
|
||||||
|
|
||||||
read_rule = iniGetStrValueEx(ini_ctx->section_name,
|
read_rule = iniGetStrValueEx(ini_ctx->section_name,
|
||||||
"read_rule", ini_ctx->context, true);
|
"read_rule", ini_ctx->context, true);
|
||||||
if (read_rule == NULL || *read_rule == '\0') {
|
if (read_rule == NULL) {
|
||||||
*rule = def_rule;
|
*rule = def_rule;
|
||||||
} else if (strncasecmp(read_rule, "any", 3) == 0) {
|
} else if (strncasecmp(read_rule, "any", 3) == 0) {
|
||||||
*rule = sf_data_read_rule_any_available;
|
*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;
|
*rule = sf_data_read_rule_master_only;
|
||||||
} else {
|
} else {
|
||||||
logError("file: "__FILE__", line: %d, "
|
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);
|
__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;
|
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);
|
IniFullContext *ini_ctx, const SFDataReadRule def_rule);
|
||||||
|
|
||||||
static inline const char *sf_get_read_rule_caption(
|
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) \
|
#define sf_load_read_rule_config(rule, ini_ctx) \
|
||||||
sf_load_read_rule_config_ex(rule, ini_ctx, sf_data_read_rule_master_only)
|
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) \
|
#define SF_NET_RETRY_FINISHED(retry_times, counter, result) \
|
||||||
!((SF_IS_RETRIABLE_ERROR(result) && ((retry_times > 0 && \
|
!((SF_IS_RETRIABLE_ERROR(result) && ((retry_times > 0 && \
|
||||||
counter <= retry_times) || (retry_times < 0))))
|
counter <= retry_times) || (retry_times < 0))))
|
||||||
|
|
|
||||||
|
|
@ -244,4 +244,9 @@ typedef struct sf_synchronize_context {
|
||||||
};
|
};
|
||||||
} SFSynchronizeContext;
|
} SFSynchronizeContext;
|
||||||
|
|
||||||
|
typedef enum sf_election_quorum {
|
||||||
|
sf_election_quorum_any = 1,
|
||||||
|
sf_election_quorum_majority
|
||||||
|
} SFElectionQuorum;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue