Update adapter persistence json with adapter id

This commit is contained in:
eeff
2022-03-28 17:14:24 +08:00
parent ec42c50b4b
commit d4b9220d78
5 changed files with 42 additions and 37 deletions
+6
View File
@@ -2,18 +2,21 @@
"node_req": {
"nodes": [
{
"id": 1,
"state": 1,
"type": 1,
"name": "sample-driver-adapter",
"plugin_name": "sample-drv-plugin"
},
{
"id": 2,
"state": 2,
"type": 5,
"name": "sample-app-adapter",
"plugin_name": "sample-app-plugin"
},
{
"id": 3,
"state": 3,
"type": 3,
"name": "mqtt-adapter",
@@ -24,18 +27,21 @@
"node_resp": {
"nodes": [
{
"id": 1,
"state": 1,
"type": 1,
"name": "sample-driver-adapter",
"plugin_name": "sample-drv-plugin"
},
{
"id": 2,
"state": 2,
"type": 5,
"name": "sample-app-adapter",
"plugin_name": "sample-app-plugin"
},
{
"id": 3,
"state": 3,
"type": 3,
"name": "mqtt-adapter",
+19 -25
View File
@@ -1,6 +1,6 @@
/**
* NEURON IIoT System for Industry 4.0
* Copyright (C) 2020-2021 EMQ Technologies Co., Ltd All rights reserved.
* Copyright (C) 2020-2022 EMQ Technologies Co., Ltd All rights reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -56,6 +56,11 @@ int neu_json_encode_node_resp(void *json_object, void *param)
.name = "name",
.t = NEU_JSON_STR,
.v.val_str = p_node->name,
},
{
.name = "id",
.t = NEU_JSON_INT,
.v.val_int = p_node->id,
} };
node_array = neu_json_encode_array(node_array, node_elems,
NEU_JSON_ELEM_SIZE(node_elems));
@@ -75,21 +80,11 @@ int neu_json_encode_node_resp(void *json_object, void *param)
int neu_json_decode_node_req(char *buf, neu_json_node_req_t **result)
{
int ret = 0;
void * json_obj = NULL;
neu_json_node_req_t *req = calloc(1, sizeof(neu_json_node_req_t));
if (req == NULL) {
return -1;
}
int ret = 0;
neu_json_node_req_t *req = calloc(1, sizeof(neu_json_node_req_t));
json_obj = neu_json_decode_new(buf);
req->n_node = neu_json_decode_array_size_by_json(json_obj, "nodes");
if (req->n_node < 0) {
goto decode_fail;
}
req->nodes = calloc(req->n_node, sizeof(neu_json_node_req_node_t));
req->n_node = neu_json_decode_array_size(buf, "nodes");
req->nodes = calloc(req->n_node, sizeof(neu_json_node_req_node_t));
neu_json_node_req_node_t *p_node = req->nodes;
for (int i = 0; i < req->n_node; i++) {
neu_json_elem_t node_elems[] = { {
@@ -107,9 +102,13 @@ int neu_json_decode_node_req(char *buf, neu_json_node_req_t **result)
{
.name = "name",
.t = NEU_JSON_STR,
},
{
.name = "id",
.t = NEU_JSON_INT,
} };
ret = neu_json_decode_array_by_json(
json_obj, "nodes", i, NEU_JSON_ELEM_SIZE(node_elems), node_elems);
ret = neu_json_decode_array(buf, "nodes", i,
NEU_JSON_ELEM_SIZE(node_elems), node_elems);
if (ret != 0) {
goto decode_fail;
}
@@ -118,11 +117,12 @@ int neu_json_decode_node_req(char *buf, neu_json_node_req_t **result)
p_node->state = node_elems[1].v.val_int;
p_node->plugin_name = node_elems[2].v.val_str;
p_node->name = node_elems[3].v.val_str;
p_node->id = node_elems[4].v.val_int;
p_node++;
}
*result = req;
goto decode_exit;
return ret;
decode_fail:
if (req->nodes != NULL) {
@@ -131,13 +131,7 @@ decode_fail:
if (req != NULL) {
free(req);
}
ret = -1;
decode_exit:
if (json_obj != NULL) {
neu_json_decode_free(json_obj);
}
return ret;
return -1;
}
void neu_json_decode_node_req_free(neu_json_node_req_t *req)
+3 -1
View File
@@ -1,6 +1,6 @@
/**
* NEURON IIoT System for Industry 4.0
* Copyright (C) 2020-2021 EMQ Technologies Co., Ltd All rights reserved.
* Copyright (C) 2020-2022 EMQ Technologies Co., Ltd All rights reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -32,6 +32,7 @@ extern "C" {
#endif
typedef struct {
int64_t id;
char * name;
int64_t type;
char * plugin_name;
@@ -46,6 +47,7 @@ typedef struct {
int neu_json_encode_node_resp(void *json_object, void *param);
typedef struct {
int64_t id;
char * name;
int64_t type;
char * plugin_name;
+11 -8
View File
@@ -13,13 +13,13 @@ TEST(JsonAdapter, AdapterPersistenceDecode)
{
char *buf =
(char *) "{\"nodes\": "
"[{\"type\":1, \"state\": 1, \"name\": "
"[{\"id\":1, \"type\":1, \"state\": 1, \"name\": "
"\"sample-driver-adapter\", \"plugin_name\": "
"\"sample-drv-plugin\"}, "
"{\"type\":5, \"state\": 2, \"name\": "
"{\"id\":2, \"type\":5, \"state\": 2, \"name\": "
"\"sample-app-adapter\", \"plugin_name\": "
"\"sample-app-plugin\"}, "
"{\"type\": 3, \"state\": 3, \"name\": "
"{\"id\":3, \"type\": 3, \"state\": 3, \"name\": "
"\"mqtt-adapter\", \"plugin_name\": \"mqtt-plugin\"}]}";
neu_json_node_req_t *req = NULL;
@@ -160,11 +160,11 @@ TEST(JsonAdapterTest, AdapterPersistenceEncode)
{
char *buf =
(char *) "{\"nodes\": [{\"type\": 1, \"state\": 1, \"plugin_name\": "
"\"sample-drv-plugin\", \"name\": \"sample-driver-adapter\"}, "
"{\"type\": 5, \"state\": 2, \"plugin_name\": "
"\"sample-app-plugin\", \"name\": \"sample-app-adapter\"}, "
"{\"type\": 3, \"state\": 3, \"plugin_name\": "
"\"mqtt-plugin\", \"name\": \"mqtt-adapter\"}]}";
"\"sample-drv-plugin\", \"name\": \"sample-driver-adapter\", "
"\"id\": 1}, {\"type\": 5, \"state\": 2, \"plugin_name\": "
"\"sample-app-plugin\", \"name\": \"sample-app-adapter\", "
"\"id\": 2}, {\"type\": 3, \"state\": 3, \"plugin_name\": "
"\"mqtt-plugin\", \"name\": \"mqtt-adapter\", \"id\": 3}]}";
char *buf2 = (char *) "{\"nodes\": []}";
char *result = NULL;
@@ -179,16 +179,19 @@ TEST(JsonAdapterTest, AdapterPersistenceEncode)
resp.nodes = (neu_json_node_resp_node_t *) calloc(
3, sizeof(neu_json_node_resp_node_t));
resp.nodes[0].id = 1;
resp.nodes[0].state = 1;
resp.nodes[0].type = 1;
resp.nodes[0].name = strdup((char *) "sample-driver-adapter");
resp.nodes[0].plugin_name = strdup((char *) "sample-drv-plugin");
resp.nodes[1].id = 2;
resp.nodes[1].state = 2;
resp.nodes[1].type = 5;
resp.nodes[1].name = strdup((char *) "sample-app-adapter");
resp.nodes[1].plugin_name = strdup((char *) "sample-app-plugin");
resp.nodes[2].id = 3;
resp.nodes[2].state = 3;
resp.nodes[2].type = 3;
resp.nodes[2].name = strdup((char *) "mqtt-adapter");
+3 -3
View File
@@ -10,11 +10,11 @@ TEST(PersistenceAdapterTest, Adapter)
const char *adapters_fname = neu_persister_get_adapters_fname(persister);
const char *plugins_fname = neu_persister_get_plugins_fname(persister);
neu_json_node_req_node_t node1 = { (char *) "sample-driver-adapter", 1,
neu_json_node_req_node_t node1 = { 1, (char *) "sample-driver-adapter", 1,
(char *) "sample-drv-plugin", 1 };
neu_json_node_req_node_t node2 = { (char *) "sample-app-adapter", 5,
neu_json_node_req_node_t node2 = { 2, (char *) "sample-app-adapter", 5,
(char *) "sample-app-plugin", 2 };
neu_json_node_req_node_t node3 = { (char *) "mqtt-adapter", 3,
neu_json_node_req_node_t node3 = { 3, (char *) "mqtt-adapter", 3,
(char *) "mqtt-plugin", 3 };
neu_json_node_req_t *req =