#include <stdio.h>
#include <hiredis.h>
#include <async.h>
#include <adapters/macosx.h>
void
getCallback(redisAsyncContext *c,
void
*r,
void
*privdata) {
redisReply *reply = r;
if
(reply == NULL)
return
;
printf
(
"argv[%s]: %s\n"
, (
char
*)privdata, reply->str);
redisAsyncDisconnect(c);
}
void
connectCallback(
const
redisAsyncContext *c,
int
status) {
if
(status != REDIS_OK) {
printf
(
"Error: %s\n"
, c->errstr);
return
;
}
printf
(
"Connected...\n"
);
}
void
disconnectCallback(
const
redisAsyncContext *c,
int
status) {
if
(status != REDIS_OK) {
printf
(
"Error: %s\n"
, c->errstr);
return
;
}
CFRunLoopStop(CFRunLoopGetCurrent());
printf
(
"Disconnected...\n"
);
}
int
main (
int
argc,
char
**argv) {
signal
(SIGPIPE, SIG_IGN);
CFRunLoopRef loop = CFRunLoopGetCurrent();
if
( !loop ) {
printf
(
"Error: Cannot get current run loop\n"
);
return
1;
}
redisAsyncContext *c = redisAsyncConnect(
"127.0.0.1"
, 6379);
if
(c->err) {
printf
(
"Error: %s\n"
, c->errstr);
return
1;
}
redisMacOSAttach(c, loop);
redisAsyncSetConnectCallback(c,connectCallback);
redisAsyncSetDisconnectCallback(c,disconnectCallback);
redisAsyncCommand(c, NULL, NULL,
"SET key %b"
, argv[argc-1],
strlen
(argv[argc-1]));
redisAsyncCommand(c, getCallback, (
char
*)
"end-1"
,
"GET key"
);
CFRunLoopRun();
return
0;
}