add func sf_load_read_rule_config

connection_manager
YuQing 2020-09-10 20:48:01 +08:00
parent ae72705785
commit b02dae19be
2 changed files with 47 additions and 3 deletions

View File

@ -78,3 +78,24 @@ void sf_net_retry_config_to_string(SFNetRetryConfig *net_retry_cfg,
net_retry_cfg->network_retry_times, net_retry_cfg->network_retry_times,
net_retry_cfg->network_retry_interval_ms); net_retry_cfg->network_retry_interval_ms);
} }
void sf_load_read_rule_config(SFDataReadRule *rule, IniFullContext *ini_ctx)
{
char *read_rule;
read_rule = iniGetStrValue(ini_ctx->section_name,
"read_rule", ini_ctx->context);
if (read_rule == NULL || *read_rule == '\0') {
*rule = sf_data_read_rule_any_available;
} else if (strncasecmp(read_rule, "any", 3)) {
*rule = sf_data_read_rule_any_available;
} else if (strncasecmp(read_rule, "slave", 5)) {
*rule = sf_data_read_rule_slave_first;
} else if (strncasecmp(read_rule, "master", 6)) {
*rule = sf_data_read_rule_master_only;
} else {
logError("file: "__FILE__", line: %d, "
"config file: %s, unkown read_rule: %s, set to any",
__LINE__, ini_ctx->filename, read_rule);
*rule = sf_data_read_rule_any_available;
}
}

View File

@ -1,7 +1,7 @@
//sf_global.h //sf_configs.h
#ifndef _SF_GLOBAL_H #ifndef _SF_CONFIGS_H
#define _SF_GLOBAL_H #define _SF_CONFIGS_H
#include "fastcommon/common_define.h" #include "fastcommon/common_define.h"
#include "fastcommon/ini_file_reader.h" #include "fastcommon/ini_file_reader.h"
@ -22,6 +22,12 @@ typedef struct sf_net_retry_config {
int network_retry_interval_ms; int network_retry_interval_ms;
} SFNetRetryConfig; } SFNetRetryConfig;
typedef enum sf_data_read_rule {
sf_data_read_rule_any_available,
sf_data_read_rule_slave_first,
sf_data_read_rule_master_only,
} SFDataReadRule;
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
@ -32,6 +38,23 @@ int sf_load_net_retry_config(SFNetRetryConfig *net_retry_cfg,
void sf_net_retry_config_to_string(SFNetRetryConfig *net_retry_cfg, void sf_net_retry_config_to_string(SFNetRetryConfig *net_retry_cfg,
char *output, const int size); char *output, const int size);
void sf_load_read_rule_config(SFDataReadRule *rule, IniFullContext *ini_ctx);
static inline const char *sf_get_read_rule_caption(
const SFDataReadRule read_rule)
{
switch (read_rule) {
case sf_data_read_rule_any_available:
return "any available";
case sf_data_read_rule_slave_first:
return "slave first";
case sf_data_read_rule_master_only:
return "master only";
default:
return "unknown";
}
}
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif