diff options
author | Christian Hergert <chris@dronelabs.com> | 2012-02-08 03:07:48 -0800 |
---|---|---|
committer | Matt Stancliff <matt@genges.com> | 2015-01-05 16:39:30 -0500 |
commit | 0c9ff5bb030fd07706c39b3d4f28cef618dd8794 (patch) | |
tree | 1e4d4e48292511bffa7ee546e071044f6f852a72 /examples | |
parent | e30c96ebdec4e8612f4102f9cd99d36488c66e5c (diff) |
Add GLib 2.0 adapter
[Cleaned up Makefile and header includes. Didn't change crazy
coding style because it's the convention for GLib systems.]
Closes #83
Closes #71
Diffstat (limited to 'examples')
-rw-r--r-- | examples/example-glib.c | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/examples/example-glib.c b/examples/example-glib.c new file mode 100644 index 0000000..d6e10f8 --- /dev/null +++ b/examples/example-glib.c @@ -0,0 +1,73 @@ +#include <stdlib.h> + +#include <hiredis.h> +#include <async.h> +#include <adapters/glib.h> + +static GMainLoop *mainloop; + +static void +connect_cb (const redisAsyncContext *ac G_GNUC_UNUSED, + int status) +{ + if (status != REDIS_OK) { + g_printerr("Failed to connect: %s\n", ac->errstr); + g_main_loop_quit(mainloop); + } else { + g_printerr("Connected...\n"); + } +} + +static void +disconnect_cb (const redisAsyncContext *ac G_GNUC_UNUSED, + int status) +{ + if (status != REDIS_OK) { + g_error("Failed to disconnect: %s", ac->errstr); + } else { + g_printerr("Disconnected...\n"); + g_main_loop_quit(mainloop); + } +} + +static void +command_cb(redisAsyncContext *ac, + gpointer r, + gpointer user_data G_GNUC_UNUSED) +{ + redisReply *reply = r; + + if (reply) { + g_print("REPLY: %s\n", reply->str); + } + + redisAsyncDisconnect(ac); +} + +gint +main (gint argc G_GNUC_UNUSED, + gchar *argv[] G_GNUC_UNUSED) +{ + redisAsyncContext *ac; + GMainContext *context = NULL; + GSource *source; + + ac = redisAsyncConnect("127.0.0.1", 6379); + if (ac->err) { + g_printerr("%s\n", ac->errstr); + exit(EXIT_FAILURE); + } + + source = redis_source_new(ac); + mainloop = g_main_loop_new(context, FALSE); + g_source_attach(source, context); + + redisAsyncSetConnectCallback(ac, connect_cb); + redisAsyncSetDisconnectCallback(ac, disconnect_cb); + redisAsyncCommand(ac, command_cb, NULL, "SET key 1234"); + redisAsyncCommand(ac, command_cb, NULL, "GET key"); + + g_main_loop_run(mainloop); + + return EXIT_SUCCESS; +} |