| 7898 | } ScanKeyCBData; |
| 7899 | |
| 7900 | static void moduleScanKeyCallback(void *privdata, const dictEntry *de) { |
| 7901 | ScanKeyCBData *data = (ScanKeyCBData*)privdata; |
| 7902 | sds key = (sds)dictGetKey(de); |
| 7903 | robj *o = data->key->value; |
| 7904 | robj *field = createStringObject(key, sdslen(key)); |
| 7905 | robj *value = NULL; |
| 7906 | if (o->type == OBJ_SET) { |
| 7907 | value = NULL; |
| 7908 | } else if (o->type == OBJ_HASH) { |
| 7909 | sds val = (sds)dictGetVal(de); |
| 7910 | value = createStringObject(val, sdslen(val)); |
| 7911 | } else if (o->type == OBJ_ZSET) { |
| 7912 | double *val = (double*)dictGetVal(de); |
| 7913 | value = createStringObjectFromLongDouble(*val, 0); |
| 7914 | } |
| 7915 | |
| 7916 | data->fn(data->key, field, value, data->user_data); |
| 7917 | decrRefCount(field); |
| 7918 | if (value) decrRefCount(value); |
| 7919 | } |
| 7920 | |
| 7921 | /* Scan api that allows a module to scan the elements in a hash, set or sorted set key |
| 7922 | * |
nothing calls this directly
no test coverage detected