sf_load_context_from_config_ex support max_pkg_size_min_value
parent
78d65ba2c6
commit
7f6ad6dcba
|
|
@ -56,8 +56,9 @@ SFContext g_sf_context = {{'\0'}, NULL, 0, sf_address_family_auto,
|
|||
};
|
||||
|
||||
static int load_network_parameters(IniFullContext *ini_ctx,
|
||||
const char *max_pkg_size_item_nm, const int fixed_buff_size,
|
||||
const int task_buffer_extra_size, SFNetBufferConfig *net_buffer_cfg)
|
||||
const char *max_pkg_size_item_nm, const int max_pkg_size_min_value,
|
||||
const int fixed_buff_size, const int task_buffer_extra_size,
|
||||
SFNetBufferConfig *net_buffer_cfg)
|
||||
{
|
||||
int padding_buff_size;
|
||||
char *pMinBuffSize;
|
||||
|
|
@ -84,7 +85,8 @@ static int load_network_parameters(IniFullContext *ini_ctx,
|
|||
}
|
||||
|
||||
if (fixed_buff_size > 0) {
|
||||
padding_buff_size = fixed_buff_size + task_buffer_extra_size;
|
||||
padding_buff_size = FC_MAX(fixed_buff_size, max_pkg_size_min_value) +
|
||||
task_buffer_extra_size;
|
||||
net_buffer_cfg->min_buff_size = padding_buff_size;
|
||||
net_buffer_cfg->max_buff_size = padding_buff_size;
|
||||
net_buffer_cfg->max_pkg_size = padding_buff_size;
|
||||
|
|
@ -94,6 +96,13 @@ static int load_network_parameters(IniFullContext *ini_ctx,
|
|||
net_buffer_cfg->max_pkg_size = iniGetByteCorrectValueEx(ini_ctx,
|
||||
max_pkg_size_item_nm, SF_DEF_MAX_PACKAGE_SIZE, 1, 8192,
|
||||
SF_MAX_NETWORK_BUFF_SIZE, true);
|
||||
if (net_buffer_cfg->max_pkg_size < max_pkg_size_min_value) {
|
||||
net_buffer_cfg->max_pkg_size = max_pkg_size_min_value;
|
||||
}
|
||||
if (task_buffer_extra_size > 0) {
|
||||
net_buffer_cfg->max_pkg_size += task_buffer_extra_size;
|
||||
}
|
||||
|
||||
pMinBuffSize = iniGetStrValueEx(ini_ctx->section_name,
|
||||
"min_buff_size", ini_ctx->context, true);
|
||||
pMaxBuffSize = iniGetStrValueEx(ini_ctx->section_name,
|
||||
|
|
@ -109,8 +118,16 @@ static int load_network_parameters(IniFullContext *ini_ctx,
|
|||
"max_buff_size", SF_DEF_MAX_BUFF_SIZE, 1, 8192,
|
||||
SF_MAX_NETWORK_BUFF_SIZE, true);
|
||||
|
||||
if (task_buffer_extra_size > 0) {
|
||||
net_buffer_cfg->min_buff_size += task_buffer_extra_size;
|
||||
net_buffer_cfg->max_buff_size += task_buffer_extra_size;
|
||||
}
|
||||
if (net_buffer_cfg->max_buff_size < net_buffer_cfg->max_pkg_size) {
|
||||
net_buffer_cfg->max_buff_size = net_buffer_cfg->max_pkg_size;
|
||||
} else if (net_buffer_cfg->max_pkg_size <
|
||||
net_buffer_cfg->max_buff_size)
|
||||
{
|
||||
net_buffer_cfg->max_pkg_size = net_buffer_cfg->max_buff_size;
|
||||
}
|
||||
if (net_buffer_cfg->max_buff_size < net_buffer_cfg->min_buff_size) {
|
||||
logWarning("file: "__FILE__", line: %d, "
|
||||
|
|
@ -122,14 +139,6 @@ static int load_network_parameters(IniFullContext *ini_ctx,
|
|||
}
|
||||
}
|
||||
|
||||
if (task_buffer_extra_size > 0) {
|
||||
net_buffer_cfg->min_buff_size += task_buffer_extra_size;
|
||||
net_buffer_cfg->max_buff_size += task_buffer_extra_size;
|
||||
if (net_buffer_cfg->max_pkg_size < net_buffer_cfg->max_buff_size) {
|
||||
net_buffer_cfg->max_pkg_size = net_buffer_cfg->max_buff_size;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -284,6 +293,7 @@ int sf_load_global_config_ex(const char *log_filename_prefix,
|
|||
const char *max_pkg_size_item_nm, const int fixed_buff_size,
|
||||
const int task_buffer_extra_size, const bool need_set_run_by)
|
||||
{
|
||||
const int max_pkg_size_min_value = 0;
|
||||
int result;
|
||||
const char *old_section_name;
|
||||
char *pRunByGroup;
|
||||
|
|
@ -299,8 +309,9 @@ int sf_load_global_config_ex(const char *log_filename_prefix,
|
|||
tcp_set_quick_ack(g_sf_global_vars.tcp_quick_ack);
|
||||
if (load_network_params) {
|
||||
if ((result=load_network_parameters(ini_ctx, max_pkg_size_item_nm,
|
||||
fixed_buff_size, task_buffer_extra_size,
|
||||
&g_sf_global_vars.net_buffer_cfg)) != 0)
|
||||
max_pkg_size_min_value, fixed_buff_size,
|
||||
task_buffer_extra_size, &g_sf_global_vars.
|
||||
net_buffer_cfg)) != 0)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
|
@ -768,9 +779,9 @@ int sf_load_context_from_config_ex(SFContext *sf_context,
|
|||
}
|
||||
|
||||
if ((result=load_network_parameters(&config->ini_ctx, config->
|
||||
max_pkg_size_item_name, fixed_buff_size,
|
||||
task_buffer_extra_size, &sf_context->
|
||||
net_buffer_cfg)) != 0)
|
||||
max_pkg_size_item_name, config->max_pkg_size_min_value,
|
||||
fixed_buff_size, task_buffer_extra_size,
|
||||
&sf_context->net_buffer_cfg)) != 0)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ typedef struct sf_context_ini_config {
|
|||
int default_inner_port;
|
||||
int default_outer_port;
|
||||
int default_work_threads;
|
||||
int max_pkg_size_min_value;
|
||||
FCCommunicationType comm_type;
|
||||
const char *max_pkg_size_item_name;
|
||||
} SFContextIniConfig;
|
||||
|
|
@ -172,9 +173,9 @@ extern SFContext g_sf_context;
|
|||
#define SF_FCHOWN_TO_RUNBY_RETURN_ON_ERROR(fd, path) \
|
||||
SF_FCHOWN_RETURN_ON_ERROR(fd, path, geteuid(), getegid())
|
||||
|
||||
#define SF_SET_CONTEXT_INI_CONFIG_EX(config, the_comm_type, filename, \
|
||||
pIniContext, section_name, def_inner_port, def_outer_port, \
|
||||
def_work_threads, max_pkg_size_item_nm) \
|
||||
#define SF_SET_CONTEXT_INI_CONFIG_EX(config, the_comm_type, filename, \
|
||||
pIniContext, section_name, def_inner_port, def_outer_port, \
|
||||
def_work_threads, max_pkg_size_item_nm, max_pkg_size_min_val) \
|
||||
do { \
|
||||
FAST_INI_SET_FULL_CTX_EX(config.ini_ctx, filename, \
|
||||
section_name, pIniContext); \
|
||||
|
|
@ -183,6 +184,7 @@ extern SFContext g_sf_context;
|
|||
config.default_outer_port = def_outer_port; \
|
||||
config.default_work_threads = def_work_threads; \
|
||||
config.max_pkg_size_item_name = max_pkg_size_item_nm; \
|
||||
config.max_pkg_size_min_value = max_pkg_size_min_val; \
|
||||
} while (0)
|
||||
|
||||
#define SF_SET_CONTEXT_INI_CONFIG(config, the_comm_type, \
|
||||
|
|
@ -190,7 +192,7 @@ extern SFContext g_sf_context;
|
|||
def_outer_port, def_work_threads) \
|
||||
SF_SET_CONTEXT_INI_CONFIG_EX(config, the_comm_type, filename, \
|
||||
pIniContext, section_name, def_inner_port, def_outer_port, \
|
||||
def_work_threads, "max_pkg_size")
|
||||
def_work_threads, "max_pkg_size", 0)
|
||||
|
||||
int sf_load_global_config_ex(const char *log_filename_prefix,
|
||||
IniFullContext *ini_ctx, const bool load_network_params,
|
||||
|
|
|
|||
|
|
@ -170,7 +170,10 @@ static inline struct fast_task_info *sf_alloc_init_task_ex(
|
|||
return task;
|
||||
}
|
||||
|
||||
#define sf_hold_task(task) __sync_add_and_fetch(&task->reffer_count, 1)
|
||||
#define sf_hold_task_ex(task, inc_count) __sync_add_and_fetch( \
|
||||
&task->reffer_count, inc_count)
|
||||
#define sf_hold_task(task) sf_hold_task_ex(task, 1)
|
||||
|
||||
#define sf_alloc_init_task(handler, fd) sf_alloc_init_task_ex(handler, fd, 1)
|
||||
|
||||
static inline void sf_release_task(struct fast_task_info *task)
|
||||
|
|
|
|||
Loading…
Reference in New Issue