Merge pull request #2675 from fengzeroz/main

simulator: close fd
This commit is contained in:
fengzeroz
2026-01-23 14:49:46 +08:00
committed by GitHub
7 changed files with 40 additions and 2 deletions
@@ -305,5 +305,6 @@ int is_ipv6(const char *ip);
bool neu_conn_is_connected(neu_conn_t *conn);
uint16_t neu_conn_udp_act_port(neu_conn_t *conn);
bool conn_tcp_server_is_listen(neu_conn_t *conn);
#endif
+4
View File
@@ -52,6 +52,10 @@ int modbus_tag_to_point(const neu_datatag_t *tag, modbus_point_t *point,
return NEU_ERR_TAG_ADDRESS_FORMAT_INVALID;
}
if (start_address > 65536) {
return NEU_ERR_TAG_ADDRESS_FORMAT_INVALID;
}
if (start_address == 65536 && address_base == 0) {
point->start_address = 65535;
} else if (start_address == 0 && address_base == 1) {
+9 -2
View File
@@ -1712,12 +1712,17 @@ static int get_app_subscriptions_resp(context_t * ctx,
grps[index].driver = strdup(group->driver);
grps[index].group = strdup(group->group);
grps[index].params = group->params ? strdup(group->params) : NULL;
grps[index].static_tags =
group->static_tags ? strdup(group->static_tags) : NULL;
if (NULL == grps[index].driver || NULL == grps[index].group) {
for (int j = 0; j <= index; ++j) {
free(grps[j].driver);
free(grps[j].group);
free(grps[j].params);
if (grps[j].static_tags) {
free(grps[j].static_tags);
}
}
free(grps);
rv = NEU_ERR_EINTERNAL;
@@ -1817,8 +1822,10 @@ static int add_app_subscription(context_t *ctx, neu_json_app_t *app,
strcpy(cmd.app, app->node.name);
strcpy(cmd.driver, grp->driver);
strcpy(cmd.group, grp->group);
cmd.params = grp->params;
grp->params = NULL;
cmd.params = grp->params;
cmd.static_tags = grp->static_tags;
grp->params = NULL;
grp->static_tags = NULL;
if (0 != neu_plugin_op(plugin, header, &cmd)) {
return NEU_ERR_IS_BUSY;
+6
View File
@@ -90,6 +90,7 @@ static void sig_handler(int sig)
for (uint32_t i = 0; i < sizeof(c_events) / sizeof(struct client_event);
i++) {
if (c_events[i].fd > 0) {
close(c_events[i].fd);
neu_event_del_io(events, c_events[i].client);
}
}
@@ -149,6 +150,11 @@ int main(int argc, char *argv[])
events = neu_event_new("modbus_simulator");
conn = neu_conn_new(&param, NULL, connected, disconnected);
while (conn_tcp_server_is_listen(conn) == false) {
neu_msleep(1000);
neu_conn_destory(conn);
conn = neu_conn_new(&param, NULL, connected, disconnected);
}
signal(SIGINT, sig_handler);
signal(SIGTERM, sig_handler);
+5
View File
@@ -732,6 +732,11 @@ static void conn_init_param(neu_conn_t *conn, neu_conn_param_t *param)
}
}
bool conn_tcp_server_is_listen(neu_conn_t *conn)
{
return conn->tcp_server.is_listen;
}
static void conn_tcp_server_listen(neu_conn_t *conn)
{
if (conn->param.type == NEU_CONN_TCP_SERVER &&
+14
View File
@@ -589,6 +589,9 @@ static void fini_app_group(neu_json_app_group_t *grp)
free(grp->driver);
free(grp->group);
free(grp->params);
if (grp->static_tags) {
free(grp->static_tags);
}
}
int neu_json_encode_app(void *node_json, void *param)
@@ -644,6 +647,15 @@ int neu_json_encode_app(void *node_json, void *param)
}
}
if (grp->static_tags && strlen(grp->static_tags) > 0) {
if (0 !=
neu_json_load_key(grp_json, "static_tags", grp->static_tags,
false)) {
json_decref(grp_json);
return -1;
}
}
if (0 != json_array_append_new(groups_json, grp_json)) {
return -1;
}
@@ -715,6 +727,8 @@ int neu_json_decode_app_json(void *node_json, neu_json_app_t *app_p)
groups[i].driver = grp_elems[0].v.val_str;
groups[i].group = grp_elems[1].v.val_str;
neu_json_dump_key(grp_json, "params", &groups[i].params, false);
neu_json_dump_key(grp_json, "static_tags", &groups[i].static_tags,
false);
}
app_p->subscriptions.n_group = n_group;
+1
View File
@@ -101,6 +101,7 @@ typedef struct {
char *driver;
char *group;
char *params;
char *static_tags;
} neu_json_app_group_t;
typedef struct {