From 6290cab750566bbb65449122e767484649aee2d7 Mon Sep 17 00:00:00 2001 From: Philipp Moritz Date: Wed, 12 Oct 2016 00:23:40 -0700 Subject: [PATCH 1/4] fix compiler warning for linux --- event_loop.c | 4 ++-- event_loop.h | 21 ++++++++++++--------- logging.c | 2 +- test/db_tests.c | 4 ++-- test/redis_tests.c | 4 ++-- test/task_tests.c | 2 +- 6 files changed, 20 insertions(+), 17 deletions(-) diff --git a/event_loop.c b/event_loop.c index 6928705e7..7e7835445 100644 --- a/event_loop.c +++ b/event_loop.c @@ -48,8 +48,8 @@ int64_t event_loop_add_timer(event_loop *loop, return aeCreateTimeEvent(loop, milliseconds, handler, context, NULL); } -void event_loop_remove_timer(event_loop *loop, int64_t id) { - int err = aeDeleteTimeEvent(loop, id); +void event_loop_remove_timer(event_loop *loop, timer_id timer_id) { + int err = aeDeleteTimeEvent(loop, timer_id); CHECK(err == AE_OK); /* timer id found? */ } diff --git a/event_loop.h b/event_loop.h index bb6afdb93..10762ee89 100644 --- a/event_loop.h +++ b/event_loop.h @@ -4,6 +4,8 @@ #include #include "ae/ae.h" +typedef long long timer_id; + typedef aeEventLoop event_loop; /* File descriptor is readable. */ @@ -12,6 +14,9 @@ typedef aeEventLoop event_loop; /* File descriptor is writable. */ #define EVENT_LOOP_WRITE AE_WRITABLE +/* Constant specifying that the timer is done and it will be removed. */ +#define EVENT_LOOP_TIMER_DONE AE_NOMORE + /* Signature of the handler that will be called when there is a new event * on the file descriptor that this handler has been registered for. The * context is the one that was passed into add_file by the user. The @@ -24,10 +29,12 @@ typedef void (*event_loop_file_handler)(event_loop *loop, /* This handler will be called when a timer times out. The id of the timer * as well as the context that was specified when registering this handler - * are passed as arguments. */ -typedef int64_t (*event_loop_timer_handler)(event_loop *loop, - int64_t id, - void *context); + * are passed as arguments. The return is the number of milliseconds the + * timer shall be reset to or EVENT_LOOP_TIMER_DONE if the timer shall + * not triggered again. */ +typedef int (*event_loop_timer_handler)(event_loop *loop, + timer_id timer_id, + void *context); /* Create and return a new event loop. */ event_loop *event_loop_create(); @@ -58,12 +65,8 @@ int64_t event_loop_add_timer(event_loop *loop, event_loop_timer_handler handler, void *context); -/* Reset the timer timeout to a given number of milliseconds. - * NOTE: This is not implemented yet. */ -void event_loop_reset_timer(event_loop *loop, int64_t id, int64_t milliseconds); - /* Remove a registered time event handler from the event loop. */ -void event_loop_remove_timer(event_loop *loop, int64_t id); +void event_loop_remove_timer(event_loop *loop, timer_id timer_id); /* Run the event loop. */ void event_loop_run(event_loop *loop); diff --git a/logging.c b/logging.c index 1a8e96820..301ed4b11 100644 --- a/logging.c +++ b/logging.c @@ -12,7 +12,7 @@ static const char *log_fmt = struct ray_logger_impl { /* String that identifies this client type. */ - char *client_type; + const char *client_type; /* Suppress all log messages below this level. */ int log_level; /* Whether or not we have a direct connection to Redis. */ diff --git a/test/db_tests.c b/test/db_tests.c index 6eb592e45..95e986e33 100644 --- a/test/db_tests.c +++ b/test/db_tests.c @@ -38,9 +38,9 @@ void test_callback(object_id object_id, free(manager_vector); } -int64_t timeout_handler(event_loop *loop, int64_t id, void *context) { +int timeout_handler(event_loop *loop, timer_id timer_id, void *context) { event_loop_stop(loop); - return -1; + return EVENT_LOOP_TIMER_DONE; } TEST object_table_lookup_test(void) { diff --git a/test/redis_tests.c b/test/redis_tests.c index 2277174c0..0a50c7d1b 100644 --- a/test/redis_tests.c +++ b/test/redis_tests.c @@ -86,9 +86,9 @@ void redis_accept_callback(event_loop *loop, context); } -int64_t timeout_handler(event_loop *loop, int64_t id, void *context) { +int timeout_handler(event_loop *loop, timer_id timer_id, void *context) { event_loop_stop(loop); - return -1; + return EVENT_LOOP_TIMER_DONE; } TEST async_redis_socket_test(void) { diff --git a/test/task_tests.c b/test/task_tests.c index f72a0e2c2..759e9c8b7 100644 --- a/test/task_tests.c +++ b/test/task_tests.c @@ -49,7 +49,7 @@ TEST send_task(void) { *task_return(task, 1) = globally_unique_id(); int fd[2]; socketpair(AF_UNIX, SOCK_STREAM, 0, fd); - write_message(fd[0], SUBMIT_TASK, task_size(task), task); + write_message(fd[0], SUBMIT_TASK, task_size(task), (uint8_t*) task); int64_t type; int64_t length; uint8_t *message; From 50fb53fd915618070795de3a1e47757a74178dfb Mon Sep 17 00:00:00 2001 From: Philipp Moritz Date: Wed, 12 Oct 2016 00:56:04 -0700 Subject: [PATCH 2/4] fix compiler warnings on macOS --- Makefile | 2 +- logging.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index dae76e87b..9a0f75e06 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ CC = gcc -CFLAGS = -g -Wall --std=c99 -D_XOPEN_SOURCE=500 -D_POSIX_C_SOURCE=200809L -fPIC -I. -Ithirdparty -Ithirdparty/ae +CFLAGS = -g -Wall --std=c99 -D_XOPEN_SOURCE=500 -D_POSIX_C_SOURCE=200809L -fPIC -I. -Ithirdparty -Ithirdparty/ae -Wno-typedef-redefinition BUILD = build all: hiredis $(BUILD)/libcommon.a diff --git a/logging.c b/logging.c index 301ed4b11..09cad7856 100644 --- a/logging.c +++ b/logging.c @@ -1,5 +1,7 @@ #include "logging.h" +#include +#include #include #include @@ -52,13 +54,13 @@ void ray_log(ray_logger *logger, UT_string *timestamp; utstring_new(timestamp); gettimeofday(&tv, NULL); - utstring_printf(timestamp, "%ld.%ld", tv.tv_sec, tv.tv_usec); + utstring_printf(timestamp, "%ld.%ld", tv.tv_sec, (long) tv.tv_usec); UT_string *origin_id; utstring_new(origin_id); if (logger->is_direct) { db_handle *db = (db_handle *) logger->conn; - utstring_printf(origin_id, "%ld:%s", db->client_id, ""); + utstring_printf(origin_id, "%" PRId64 ":%s", db->client_id, ""); redisAsyncCommand(db->context, NULL, NULL, log_fmt, utstring_body(timestamp), logger->client_type, utstring_body(origin_id), log_levels[log_level], From 832888d4736da0133d91b6e1cacb1ebfef77c6e9 Mon Sep 17 00:00:00 2001 From: Philipp Moritz Date: Wed, 12 Oct 2016 00:59:22 -0700 Subject: [PATCH 3/4] fix formating --- event_loop.h | 2 +- test/task_tests.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/event_loop.h b/event_loop.h index 10762ee89..7f0659ba7 100644 --- a/event_loop.h +++ b/event_loop.h @@ -31,7 +31,7 @@ typedef void (*event_loop_file_handler)(event_loop *loop, * as well as the context that was specified when registering this handler * are passed as arguments. The return is the number of milliseconds the * timer shall be reset to or EVENT_LOOP_TIMER_DONE if the timer shall - * not triggered again. */ + * not be triggered again. */ typedef int (*event_loop_timer_handler)(event_loop *loop, timer_id timer_id, void *context); diff --git a/test/task_tests.c b/test/task_tests.c index 759e9c8b7..77f43bbf0 100644 --- a/test/task_tests.c +++ b/test/task_tests.c @@ -19,10 +19,10 @@ TEST task_test(void) { unique_id arg1 = globally_unique_id(); ASSERT(task_args_add_ref(task, arg1) == 0); - ASSERT(task_args_add_val(task, (uint8_t*) "hello", 5) == 1); + ASSERT(task_args_add_val(task, (uint8_t *) "hello", 5) == 1); unique_id arg2 = globally_unique_id(); ASSERT(task_args_add_ref(task, arg2) == 2); - ASSERT(task_args_add_val(task, (uint8_t*) "world", 5) == 3); + ASSERT(task_args_add_val(task, (uint8_t *) "world", 5) == 3); unique_id ret0 = globally_unique_id(); unique_id ret1 = globally_unique_id(); @@ -30,10 +30,10 @@ TEST task_test(void) { memcpy(task_return(task, 1), &ret1, sizeof(ret1)); ASSERT(memcmp(task_arg_id(task, 0), &arg1, sizeof(arg1)) == 0); - ASSERT(memcmp(task_arg_val(task, 1), (uint8_t*) "hello", + ASSERT(memcmp(task_arg_val(task, 1), (uint8_t *) "hello", task_arg_length(task, 1)) == 0); ASSERT(memcmp(task_arg_id(task, 2), &arg2, sizeof(arg2)) == 0); - ASSERT(memcmp(task_arg_val(task, 3), (uint8_t*) "world", + ASSERT(memcmp(task_arg_val(task, 3), (uint8_t *) "world", task_arg_length(task, 3)) == 0); ASSERT(memcmp(task_return(task, 0), &ret0, sizeof(unique_id)) == 0); @@ -49,7 +49,7 @@ TEST send_task(void) { *task_return(task, 1) = globally_unique_id(); int fd[2]; socketpair(AF_UNIX, SOCK_STREAM, 0, fd); - write_message(fd[0], SUBMIT_TASK, task_size(task), (uint8_t*) task); + write_message(fd[0], SUBMIT_TASK, task_size(task), (uint8_t *) task); int64_t type; int64_t length; uint8_t *message; From 182985015cb751fde6cb61e236afaf496d5939aa Mon Sep 17 00:00:00 2001 From: Philipp Moritz Date: Wed, 12 Oct 2016 13:20:57 -0700 Subject: [PATCH 4/4] Make warnings errors --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 9a0f75e06..6982b7945 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ CC = gcc -CFLAGS = -g -Wall --std=c99 -D_XOPEN_SOURCE=500 -D_POSIX_C_SOURCE=200809L -fPIC -I. -Ithirdparty -Ithirdparty/ae -Wno-typedef-redefinition +CFLAGS = -g -Wall --std=c99 -D_XOPEN_SOURCE=500 -D_POSIX_C_SOURCE=200809L -fPIC -I. -Ithirdparty -Ithirdparty/ae -Wno-typedef-redefinition -Werror BUILD = build all: hiredis $(BUILD)/libcommon.a