mirror of
https://github.com/emqx/neuron.git
synced 2026-10-27 04:19:50 +08:00
Merge pull request #819 from eeff/eeff/dev
feat(restful): return average round trip time in node state api
This commit is contained in:
@@ -395,6 +395,7 @@ typedef struct neu_req_get_node_state {
|
||||
|
||||
typedef struct neu_resp_get_node_state {
|
||||
neu_node_state_t state;
|
||||
uint16_t avg_rtt; // average round trip time in milliseconds
|
||||
} neu_resp_get_node_state_t;
|
||||
|
||||
typedef struct neu_req_get_nodes_state {
|
||||
@@ -403,6 +404,7 @@ typedef struct neu_req_get_nodes_state {
|
||||
typedef struct {
|
||||
char node[NEU_NODE_NAME_LEN];
|
||||
neu_node_state_t state;
|
||||
uint16_t avg_rtt; // average round trip time in milliseconds
|
||||
} neu_nodes_state_t;
|
||||
|
||||
inline static UT_icd neu_nodes_state_t_icd()
|
||||
|
||||
@@ -302,6 +302,7 @@ void handle_get_node_state_resp(nng_aio *aio, neu_resp_get_node_state_t *state)
|
||||
|
||||
res.link = state->state.link;
|
||||
res.running = state->state.running;
|
||||
res.avg_rtt = state->avg_rtt;
|
||||
|
||||
neu_json_encode_by_fn(&res, neu_json_encode_get_node_state_resp, &result);
|
||||
|
||||
@@ -325,6 +326,7 @@ void handle_get_nodes_state_resp(nng_aio * aio,
|
||||
states_res.nodes[index].name = state->node;
|
||||
states_res.nodes[index].running = state->state.running;
|
||||
states_res.nodes[index].link = state->state.link;
|
||||
states_res.nodes[index].avg_rtt = state->avg_rtt;
|
||||
}
|
||||
|
||||
neu_json_encode_by_fn(&states_res, neu_json_encode_get_nodes_state_resp,
|
||||
|
||||
@@ -419,6 +419,7 @@ static int adapter_loop(enum neu_event_io_type type, int fd, void *usr_data)
|
||||
neu_resp_get_node_state_t resp = { 0 };
|
||||
|
||||
resp.state = neu_adapter_get_state(adapter);
|
||||
resp.avg_rtt = adapter->stat.avg_rtt;
|
||||
header->type = NEU_RESP_GET_NODE_STATE;
|
||||
neu_msg_exchange(header);
|
||||
reply(adapter, header, &resp);
|
||||
|
||||
@@ -303,6 +303,7 @@ UT_array *neu_node_manager_get_state(neu_node_manager_t *mgr)
|
||||
state.state.running = el->adapter->state;
|
||||
state.state.link =
|
||||
neu_plugin_to_plugin_common(el->adapter->plugin)->link_state;
|
||||
state.avg_rtt = el->adapter->stat.avg_rtt;
|
||||
|
||||
utarray_push_back(states, &state);
|
||||
}
|
||||
|
||||
@@ -166,6 +166,11 @@ int neu_json_encode_get_node_state_resp(void *json_object, void *param)
|
||||
.name = "link",
|
||||
.t = NEU_JSON_INT,
|
||||
.v.val_int = resp->link,
|
||||
},
|
||||
{
|
||||
.name = "average_rtt",
|
||||
.t = NEU_JSON_INT,
|
||||
.v.val_int = resp->avg_rtt,
|
||||
} };
|
||||
ret = neu_json_encode_field(json_object, resp_elems,
|
||||
NEU_JSON_ELEM_SIZE(resp_elems));
|
||||
@@ -198,6 +203,11 @@ int neu_json_encode_get_nodes_state_resp(void *json_object, void *param)
|
||||
.t = NEU_JSON_INT,
|
||||
.v.val_int = p_node->link,
|
||||
},
|
||||
{
|
||||
.name = "average_rtt",
|
||||
.t = NEU_JSON_INT,
|
||||
.v.val_int = p_node->avg_rtt,
|
||||
},
|
||||
};
|
||||
node_array = neu_json_encode_array(node_array, node_elems,
|
||||
NEU_JSON_ELEM_SIZE(node_elems));
|
||||
|
||||
@@ -56,6 +56,7 @@ int neu_json_encode_get_node_stat_resp(void *json_object, void *param);
|
||||
typedef struct {
|
||||
int64_t running;
|
||||
int64_t link;
|
||||
int64_t avg_rtt;
|
||||
} neu_json_get_node_state_resp_t;
|
||||
|
||||
int neu_json_encode_get_node_state_resp(void *json_object, void *param);
|
||||
@@ -64,6 +65,7 @@ typedef struct {
|
||||
char * name;
|
||||
int64_t running;
|
||||
int64_t link;
|
||||
int64_t avg_rtt;
|
||||
} neu_json_get_nodes_state_t;
|
||||
|
||||
typedef struct {
|
||||
|
||||
Reference in New Issue
Block a user