From 25f4ef74acb73340bd7cba7a7d45ab7191232283 Mon Sep 17 00:00:00 2001 From: Toni Uhlig Date: Wed, 2 Nov 2022 00:01:57 +0100 Subject: Improved examples. Signed-off-by: Toni Uhlig --- examples/c-analysed/c-analysed.c | 78 +++++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 37 deletions(-) (limited to 'examples/c-analysed') diff --git a/examples/c-analysed/c-analysed.c b/examples/c-analysed/c-analysed.c index 0fabd223a..5e6e14fa8 100644 --- a/examples/c-analysed/c-analysed.c +++ b/examples/c-analysed/c-analysed.c @@ -523,13 +523,47 @@ static int parse_options(int argc, char ** argv) return 0; } -int main(int argc, char ** argv) +static int mainloop(void) { - signal(SIGUSR1, sighandler); - signal(SIGINT, sighandler); - signal(SIGTERM, sighandler); - signal(SIGPIPE, sighandler); + enum nDPIsrvd_read_return read_ret = READ_OK; + + while (main_thread_shutdown == 0) + { + read_ret = nDPIsrvd_read(sock); + if (errno == EINTR) + { + continue; + } + if (read_ret == READ_TIMEOUT) + { + printf("No data received during the last %llu second(s).\n", + (long long unsigned int)sock->read_timeout.tv_sec); + continue; + } + if (read_ret != READ_OK) + { + printf("Could not read from socket: %s\n", nDPIsrvd_enum_to_string(read_ret)); + break; + } + + enum nDPIsrvd_parse_return parse_ret = nDPIsrvd_parse_all(sock); + if (parse_ret != PARSE_NEED_MORE_DATA) + { + printf("Could not parse json string: %s\n", nDPIsrvd_enum_to_string(parse_ret)); + break; + } + } + + if (main_thread_shutdown == 0 && read_ret != READ_OK) + { + return 1; + } + return 0; +} + +int main(int argc, char ** argv) +{ sock = nDPIsrvd_socket_init(0, 0, 0, 0, simple_json_callback, NULL, NULL); if (sock == NULL) { @@ -581,41 +615,11 @@ int main(int argc, char ** argv) return 1; } - enum nDPIsrvd_read_return read_ret = READ_OK; - while (main_thread_shutdown == 0) - { - read_ret = nDPIsrvd_read(sock); - if (errno == EINTR) - { - continue; - } - if (read_ret == READ_TIMEOUT) - { - printf("No data received during the last %llu second(s).\n", - (long long unsigned int)sock->read_timeout.tv_sec); - continue; - } - if (read_ret != READ_OK) - { - break; - } - - enum nDPIsrvd_parse_return parse_ret = nDPIsrvd_parse_all(sock); - if (parse_ret != PARSE_NEED_MORE_DATA) - { - printf("Could not parse json string: %s\n", nDPIsrvd_enum_to_string(parse_ret)); - break; - } - } - - if (main_thread_shutdown == 0 && read_ret != READ_OK) - { - printf("Parse read %s\n", nDPIsrvd_enum_to_string(read_ret)); - } + int retval = mainloop(); nDPIsrvd_socket_free(&sock); daemonize_shutdown(pidfile); closelog(); - return read_ret; + return retval; } -- cgit v1.2.3