Make default persist adapter load adapter setting

This commit is contained in:
eeff
2022-01-13 16:20:40 +08:00
committed by Parker Liu
parent e1cd0906db
commit adcdda70e6
2 changed files with 56 additions and 2 deletions
+33 -2
View File
@@ -235,6 +235,30 @@ static int persister_singleton_load_plugins(neu_adapter_t *adapter)
return rv;
}
static int persister_singleton_load_setting(neu_adapter_t *adapter,
const char * adapter_name,
neu_node_id_t node_id)
{
neu_persister_t *persister = persister_singleton_get();
const char * setting = NULL;
int rv =
neu_persister_load_adapter_setting(persister, adapter_name, &setting);
if (0 != rv) {
log_error("%s ignore fail load setting of adapter: %s", adapter->name,
adapter_name);
return 0; // ignore this error, may be no setting ever set
}
rv = neu_manager_adapter_set_setting(adapter->manager, node_id, setting);
const char *ok_or_err = (0 == rv) ? "success" : "fail";
log_info("%s %s set setting of %s %s", adapter->name, ok_or_err,
adapter_name, setting);
free((char *) setting);
return rv;
}
static int persister_singleton_load_data(neu_adapter_t *adapter)
{
vector_t * adapter_infos = NULL;
@@ -262,7 +286,8 @@ static int persister_singleton_load_data(neu_adapter_t *adapter)
.plugin_name = adapter_info->plugin_name,
};
rv = neu_manager_add_node(adapter->manager, &add_node_cmd, NULL);
neu_node_id_t node_id = 0;
rv = neu_manager_add_node(adapter->manager, &add_node_cmd, &node_id);
const char *ok_or_err = (0 == rv) ? "success" : "fail";
log_info("%s load adapter %s type:%d, name:%s plugin:%s", adapter->name,
ok_or_err, adapter_info->type, adapter_info->name,
@@ -270,7 +295,13 @@ static int persister_singleton_load_data(neu_adapter_t *adapter)
if (0 != rv) {
goto error_add_adapters;
}
// TODO: node setting
rv = persister_singleton_load_setting(adapter, adapter_info->name,
node_id);
if (0 != rv) {
goto error_add_adapters;
}
// TODO: start node according to state
}
+23
View File
@@ -742,6 +742,29 @@ int neu_persister_store_adapter_setting(neu_persister_t *persister,
return rv;
}
int neu_persister_load_adapter_setting(neu_persister_t * persister,
const char * adapter_name,
const char **const setting)
{
char path[PATH_MAX_SIZE] = { 0 };
int n = persister_adapter_dir(path, sizeof(path), persister, adapter_name);
if (sizeof(path) == n) {
log_error("persister path too long: %s", path);
return -1;
}
n = path_cat(path, n, sizeof(path), "settings.json");
if (sizeof(path) == n) {
log_error("persister path too long: %s", path);
return -1;
}
int rv = read_file_string(path, (char **) setting);
return rv;
}
int neu_persister_delete_adapter_setting(neu_persister_t *persister,
const char * adapter_name)
{