diff --git a/daemon/call.c b/daemon/call.c index b9bb9efa5..502e893a6 100644 --- a/daemon/call.c +++ b/daemon/call.c @@ -1176,3 +1176,23 @@ void call_restore(struct callmaster *m, char *uuid, redisReply **hash, GList *st kernelize(cs); } } + + + + + +static void calls_dump_iterator(void *key, void *val, void *ptr) { + struct call *c = val; + + redis_update(c); +} + +void calls_dump_redis(struct callmaster *m) { + if (!m->redis) + return; + + mylog(LOG_DEBUG, "Start dumping all call data to Redis...\n"); + redis_wipe(m); + g_hash_table_foreach(m->callhash, calls_dump_iterator, NULL); + mylog(LOG_DEBUG, "Finished dumping all call data to Redis\n"); +} diff --git a/daemon/call.h b/daemon/call.h index 03a8d11fb..2a7fa1b58 100644 --- a/daemon/call.h +++ b/daemon/call.h @@ -105,6 +105,7 @@ char *call_delete_udp(const char **, struct callmaster *); void calls_status(struct callmaster *, struct control_stream *); void call_restore(struct callmaster *, char *, redisReply **, GList *); +void calls_dump_redis(struct callmaster *); diff --git a/daemon/redis.c b/daemon/redis.c index ffe92c431..0d0ec304b 100644 --- a/daemon/redis.c +++ b/daemon/redis.c @@ -29,8 +29,8 @@ To fill the redis DB with expiring test data: echo "hmset $b callid $(uuid)@test created $(date +%s)" c=$(uuid) echo "rpush $b-streams $c" - echo "hmset $c:0 ip $(($RANDOM % 253 + 1)).$(($RANDOM % 253 + 1)).$(($RANDOM % 253 + 1)).$(($RANDOM % 253 + 1)) port $(($RANDOM % 10000 + 1024)) localport $(($RANDOM % 10000 + 1024)) kernel 1 filled 1 confirmed 1 tag $(uuid)" - echo "hmset $c:1 ip $(($RANDOM % 253 + 1)).$(($RANDOM % 253 + 1)).$(($RANDOM % 253 + 1)).$(($RANDOM % 253 + 1)) port $(($RANDOM % 10000 + 1024)) localport $(($RANDOM % 10000 + 1024)) kernel 1 filled 1 confirmed 1 tag $(uuid)" + echo "hmset $c:0 ip $(($RANDOM % 253 + 1)).$(($RANDOM % 253 + 1)).$(($RANDOM % 253 + 1)).$(($RANDOM % 253 + 1)) port $((($RANDOM % 10000) * 2 + 1024)) localport $((($RANDOM % 10000) * 2 + 1024)) kernel 1 filled 1 confirmed 1 tag $(uuid)" + echo "hmset $c:1 ip $(($RANDOM % 253 + 1)).$(($RANDOM % 253 + 1)).$(($RANDOM % 253 + 1)).$(($RANDOM % 253 + 1)) port $((($RANDOM % 10000) * 2 + 1024)) localport $((($RANDOM % 10000) * 2 + 1024)) kernel 1 filled 1 confirmed 1 tag $(uuid)" echo "expire $b $expire" echo "expire $b-streams $expire" echo "expire $c:0 $expire" @@ -370,3 +370,16 @@ void redis_update(struct call *c) { void redis_delete(struct call *c) { redis_delete_uuid(c->redis_uuid, c->callmaster); } + + + + + +void redis_wipe(struct callmaster *m) { + struct redis *r = m->redis; + + if (!r) + return; + + redisCommandNR(r->ctx, "DEL calls"); +} diff --git a/daemon/redis.h b/daemon/redis.h index 2baa78627..377a57eb0 100644 --- a/daemon/redis.h +++ b/daemon/redis.h @@ -30,6 +30,7 @@ struct redis *redis_new(u_int32_t, u_int16_t, int); int redis_restore(struct callmaster *); void redis_update(struct call *); void redis_delete(struct call *); +void redis_wipe(struct callmaster *);