diff options
| author | fumingwei <[email protected]> | 2023-03-24 22:05:09 +0800 |
|---|---|---|
| committer | fumingwei <[email protected]> | 2023-03-27 20:16:55 +0800 |
| commit | 45a6ce34addd9187d7123c03d3badd5fa6d30589 (patch) | |
| tree | 35401d8a6cab312eeb20075895802ebd6436a746 /src/fieldstat.cpp | |
| parent | e09e7f397145613f1776622a2219047b9066f3a5 (diff) | |
feature:重写line protocol output代码
Diffstat (limited to 'src/fieldstat.cpp')
| -rw-r--r-- | src/fieldstat.cpp | 51 |
1 files changed, 41 insertions, 10 deletions
diff --git a/src/fieldstat.cpp b/src/fieldstat.cpp index 65a0c15..582efaa 100644 --- a/src/fieldstat.cpp +++ b/src/fieldstat.cpp @@ -350,20 +350,19 @@ int fieldstat_set_local_output(struct fieldstat_instance *instance, const char * int fieldstat_set_line_protocol_server(struct fieldstat_instance *instance, const char *ip, unsigned short port) { - if(instance->running == 1) + int ret = 0; + if(instance == NULL || instance->running == 1) { return -1; } + ret = enable_line_protocol_output(&instance->line_protocol_output, ip, port); - if(1 != inet_pton(AF_INET, ip, (void *)&(instance->line_protocol_server_ip))) + if(ret == 0) { - return -1; + instance->line_protocol_output_enable = 1; } - instance->line_protocol_socket = startup_udp(); - instance->line_protocol_server_port = port; - instance->line_protocol_output_enable = 1; - return 0; + return ret; } int fieldstat_set_statsd_server(struct fieldstat_instance *instance, const char *ip, unsigned short port) @@ -578,10 +577,10 @@ void fieldstat_instance_free(struct fieldstat_instance *instance) instance->local_output_enable = 0; } - if(instance->line_protocol_socket != -1) + if(instance->line_protocol_output_enable == 1) { - close(instance->line_protocol_socket); - instance->line_protocol_socket = -1; + disable_line_protocol_output(&instance->line_protocol_output); + instance->line_protocol_output_enable = 0; } for(i = 0; i < instance->metric_cnt; i++) @@ -1017,3 +1016,35 @@ int fieldstat_register_summary(struct fieldstat_instance *instance, const char * bins, lowest_trackable_value, highest_trackable_value, significant_figures, output_window); } + +int enable_line_protocol_output(struct line_protocol_output *line_protocol_output, const char *ip, unsigned short port) +{ + if(line_protocol_output == NULL) + { + return -1; + } + + if(1 != inet_pton(AF_INET, ip, (void *)&(line_protocol_output->server_ip))) + { + return -1; + } + line_protocol_output->server_port = port; + line_protocol_output->send_socket = startup_udp(); + + return 0; +} + +void disable_line_protocol_output(struct line_protocol_output *line_protocol_output) +{ + if(line_protocol_output == NULL) + { + return; + } + + if(line_protocol_output->send_socket != -1) + { + close(line_protocol_output->send_socket); + line_protocol_output->send_socket = -1; + } + return; +} |
