MCPcopy Create free account
hub / github.com/F-Stack/f-stack / scanCallback

Function scanCallback

app/redis-6.2.6/src/db.c:778–805  ·  view source on GitHub ↗

This callback is used by scanGenericCommand in order to collect elements * returned by the dictionary iterator into a list. */

Source from the content-addressed store, hash-verified

776/* This callback is used by scanGenericCommand in order to collect elements
777 * returned by the dictionary iterator into a list. */
778void scanCallback(void *privdata, const dictEntry *de) {
779 void **pd = (void**) privdata;
780 list *keys = pd[0];
781 robj *o = pd[1];
782 robj *key, *val = NULL;
783
784 if (o == NULL) {
785 sds sdskey = dictGetKey(de);
786 key = createStringObject(sdskey, sdslen(sdskey));
787 } else if (o->type == OBJ_SET) {
788 sds keysds = dictGetKey(de);
789 key = createStringObject(keysds,sdslen(keysds));
790 } else if (o->type == OBJ_HASH) {
791 sds sdskey = dictGetKey(de);
792 sds sdsval = dictGetVal(de);
793 key = createStringObject(sdskey,sdslen(sdskey));
794 val = createStringObject(sdsval,sdslen(sdsval));
795 } else if (o->type == OBJ_ZSET) {
796 sds sdskey = dictGetKey(de);
797 key = createStringObject(sdskey,sdslen(sdskey));
798 val = createStringObjectFromLongDouble(*(double*)dictGetVal(de),0);
799 } else {
800 serverPanic("Type not handled in SCAN callback.");
801 }
802
803 listAddNodeTail(keys, key);
804 if (val) listAddNodeTail(keys, val);
805}
806
807/* Try to parse a SCAN cursor stored at object 'o':
808 * if the cursor is valid, store it as unsigned integer into *cursor and

Callers

nothing calls this directly

Calls 4

sdslenFunction · 0.85
listAddNodeTailFunction · 0.85
createStringObjectFunction · 0.70

Tested by

no test coverage detected