Feature: export dns_message_transaction_index_get and local stat
This commit is contained in:
@@ -13,6 +13,7 @@ extern "C"
|
||||
|
||||
#include "cJSON.h"
|
||||
#include "dns_decoder.h"
|
||||
#include "toml/toml.h"
|
||||
|
||||
#include "stellar/stellar.h"
|
||||
#include "stellar/session.h"
|
||||
@@ -22,11 +23,14 @@ extern "C"
|
||||
}
|
||||
#endif
|
||||
|
||||
#define DNS_DECODER_TEST_TOML_PATH "./etc/dns/dns_decoder.toml"
|
||||
|
||||
struct dns_decoder_test_plugin_env
|
||||
{
|
||||
int plugin_id;
|
||||
int topic_id;
|
||||
int result_index;
|
||||
int commit_result_enable;
|
||||
};
|
||||
|
||||
extern "C" int commit_test_result_json(cJSON *node, const char *name);
|
||||
@@ -327,7 +331,14 @@ void dns_decoder_test_message_cb(struct session *ss, int topic_id, const void *m
|
||||
dns_real_result_write_file(real_result_str);
|
||||
free(real_result_str);
|
||||
|
||||
commit_test_result_json(real_result, result_name);
|
||||
if(plugin_env->commit_result_enable==1)
|
||||
{
|
||||
commit_test_result_json(real_result, result_name);
|
||||
}
|
||||
else
|
||||
{
|
||||
cJSON_Delete(real_result);
|
||||
}
|
||||
}
|
||||
|
||||
void *dns_decoder_test_per_session_context_new(struct session *sess, void *plugin_env)
|
||||
@@ -340,10 +351,81 @@ void dns_decoder_test_per_session_context_free(struct session *sess, void *sessi
|
||||
|
||||
}
|
||||
|
||||
|
||||
int32_t dns_decoder_test_config_load(const char *cfg_path, struct dns_decoder_test_plugin_env *plugin_env)
|
||||
{
|
||||
FILE *fp=fopen(cfg_path, "r");
|
||||
if (NULL==fp)
|
||||
{
|
||||
fprintf(stderr, "[%s:%d] Can't open config file: %s", __FUNCTION__, __LINE__, cfg_path);
|
||||
return -1;
|
||||
}
|
||||
|
||||
int32_t ret=0;
|
||||
char errbuf[256]={0};
|
||||
|
||||
toml_table_t *root=toml_parse_file(fp, errbuf, sizeof(errbuf));
|
||||
fclose(fp);
|
||||
|
||||
toml_table_t *decoder_tbl=toml_table_in(root, "decoder");
|
||||
if(NULL==decoder_tbl)
|
||||
{
|
||||
fprintf(stderr, "[%s:%d] config file: %s has no key: [decoder]", __FUNCTION__, __LINE__, cfg_path);
|
||||
toml_free(root);
|
||||
return -1;
|
||||
}
|
||||
|
||||
toml_table_t *dns_tbl=toml_table_in(decoder_tbl, "dns");
|
||||
if(NULL==dns_tbl)
|
||||
{
|
||||
fprintf(stderr, "[%s:%d] config file: %s has no key: [decoder.dns]", __FUNCTION__, __LINE__, cfg_path);
|
||||
toml_free(root);
|
||||
return -1;
|
||||
}
|
||||
|
||||
toml_table_t *test_tbl=toml_table_in(dns_tbl, "test");
|
||||
if(NULL==test_tbl)
|
||||
{
|
||||
fprintf(stderr, "[%s:%d] config file: %s has no key: [decoder.dns.test]", __FUNCTION__, __LINE__, cfg_path);
|
||||
toml_free(root);
|
||||
return -1;
|
||||
}
|
||||
|
||||
toml_datum_t commit_result_enable_val=toml_string_in(test_tbl, "commit_result_enable");
|
||||
if(commit_result_enable_val.ok==0)
|
||||
{
|
||||
plugin_env->commit_result_enable=0;
|
||||
fprintf(stderr, "[%s:%d] config file: %s has no key: [decoder.dns.test.commit_result_enable]", __FUNCTION__, __LINE__, cfg_path);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(memcmp("no", commit_result_enable_val.u.s, strlen("no"))==0)
|
||||
{
|
||||
plugin_env->commit_result_enable=0;
|
||||
}
|
||||
else if(memcmp("yes", commit_result_enable_val.u.s, strlen("yes"))==0)
|
||||
{
|
||||
plugin_env->commit_result_enable=1;
|
||||
}
|
||||
else
|
||||
{
|
||||
plugin_env->commit_result_enable=1;
|
||||
fprintf(stderr, "[%s:%d] config file: %s key: [decoder.dns.test.commit_result_enable] value is not yes or no", __FUNCTION__, __LINE__, cfg_path);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
toml_free(root);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
extern "C" void *dns_decoder_test_init(struct stellar *st)
|
||||
{
|
||||
struct dns_decoder_test_plugin_env *plugin_env=(struct dns_decoder_test_plugin_env *)calloc(1, sizeof(struct dns_decoder_test_plugin_env));
|
||||
|
||||
plugin_env->result_index=1;
|
||||
dns_decoder_test_config_load(DNS_DECODER_TEST_TOML_PATH, plugin_env);
|
||||
|
||||
plugin_env->plugin_id=stellar_session_plugin_register(st, dns_decoder_test_per_session_context_new, dns_decoder_test_per_session_context_free, plugin_env);
|
||||
if(plugin_env->plugin_id<0)
|
||||
|
||||
Reference in New Issue
Block a user