Lines Matching refs:o
40 robj *o = zmalloc(sizeof(*o)); in createObject() local
41 o->type = type; in createObject()
42 o->encoding = OBJ_ENCODING_RAW; in createObject()
43 o->ptr = ptr; in createObject()
44 o->refcount = 1; in createObject()
47 o->lru = LRU_CLOCK(); in createObject()
48 return o; in createObject()
61 robj *o = zmalloc(sizeof(robj)+sizeof(struct sdshdr8)+len+1); in createEmbeddedStringObject() local
62 struct sdshdr8 *sh = (void*)(o+1); in createEmbeddedStringObject()
64 o->type = OBJ_STRING; in createEmbeddedStringObject()
65 o->encoding = OBJ_ENCODING_EMBSTR; in createEmbeddedStringObject()
66 o->ptr = sh+1; in createEmbeddedStringObject()
67 o->refcount = 1; in createEmbeddedStringObject()
68 o->lru = LRU_CLOCK(); in createEmbeddedStringObject()
79 return o; in createEmbeddedStringObject()
97 robj *o; in createStringObjectFromLongLong() local
100 o = shared.integers[value]; in createStringObjectFromLongLong()
103 o = createObject(OBJ_STRING, NULL); in createStringObjectFromLongLong()
104 o->encoding = OBJ_ENCODING_INT; in createStringObjectFromLongLong()
105 o->ptr = (void*)((long)value); in createStringObjectFromLongLong()
107 o = createObject(OBJ_STRING,sdsfromlonglong(value)); in createStringObjectFromLongLong()
110 return o; in createStringObjectFromLongLong()
163 robj *dupStringObject(robj *o) { in dupStringObject() argument
166 serverAssert(o->type == OBJ_STRING); in dupStringObject()
168 switch(o->encoding) { in dupStringObject()
170 return createRawStringObject(o->ptr,sdslen(o->ptr)); in dupStringObject()
172 return createEmbeddedStringObject(o->ptr,sdslen(o->ptr)); in dupStringObject()
176 d->ptr = o->ptr; in dupStringObject()
186 robj *o = createObject(OBJ_LIST,l); in createQuicklistObject() local
187 o->encoding = OBJ_ENCODING_QUICKLIST; in createQuicklistObject()
188 return o; in createQuicklistObject()
193 robj *o = createObject(OBJ_LIST,zl); in createZiplistObject() local
194 o->encoding = OBJ_ENCODING_ZIPLIST; in createZiplistObject()
195 return o; in createZiplistObject()
200 robj *o = createObject(OBJ_SET,d); in createSetObject() local
201 o->encoding = OBJ_ENCODING_HT; in createSetObject()
202 return o; in createSetObject()
207 robj *o = createObject(OBJ_SET,is); in createIntsetObject() local
208 o->encoding = OBJ_ENCODING_INTSET; in createIntsetObject()
209 return o; in createIntsetObject()
214 robj *o = createObject(OBJ_HASH, zl); in createHashObject() local
215 o->encoding = OBJ_ENCODING_ZIPLIST; in createHashObject()
216 return o; in createHashObject()
221 robj *o; in createZsetObject() local
225 o = createObject(OBJ_ZSET,zs); in createZsetObject()
226 o->encoding = OBJ_ENCODING_SKIPLIST; in createZsetObject()
227 return o; in createZsetObject()
232 robj *o = createObject(OBJ_ZSET,zl); in createZsetZiplistObject() local
233 o->encoding = OBJ_ENCODING_ZIPLIST; in createZsetZiplistObject()
234 return o; in createZsetZiplistObject()
237 void freeStringObject(robj *o) { in freeStringObject() argument
238 if (o->encoding == OBJ_ENCODING_RAW) { in freeStringObject()
239 sdsfree(o->ptr); in freeStringObject()
243 void freeListObject(robj *o) { in freeListObject() argument
244 switch (o->encoding) { in freeListObject()
246 quicklistRelease(o->ptr); in freeListObject()
253 void freeSetObject(robj *o) { in freeSetObject() argument
254 switch (o->encoding) { in freeSetObject()
256 dictRelease((dict*) o->ptr); in freeSetObject()
259 zfree(o->ptr); in freeSetObject()
266 void freeZsetObject(robj *o) { in freeZsetObject() argument
268 switch (o->encoding) { in freeZsetObject()
270 zs = o->ptr; in freeZsetObject()
276 zfree(o->ptr); in freeZsetObject()
283 void freeHashObject(robj *o) { in freeHashObject() argument
284 switch (o->encoding) { in freeHashObject()
286 dictRelease((dict*) o->ptr); in freeHashObject()
289 zfree(o->ptr); in freeHashObject()
297 void incrRefCount(robj *o) { in incrRefCount() argument
298 o->refcount++; in incrRefCount()
301 void decrRefCount(robj *o) { in decrRefCount() argument
302 if (o->refcount <= 0) serverPanic("decrRefCount against refcount <= 0"); in decrRefCount()
303 if (o->refcount == 1) { in decrRefCount()
304 switch(o->type) { in decrRefCount()
305 case OBJ_STRING: freeStringObject(o); break; in decrRefCount()
306 case OBJ_LIST: freeListObject(o); break; in decrRefCount()
307 case OBJ_SET: freeSetObject(o); break; in decrRefCount()
308 case OBJ_ZSET: freeZsetObject(o); break; in decrRefCount()
309 case OBJ_HASH: freeHashObject(o); break; in decrRefCount()
312 zfree(o); in decrRefCount()
314 o->refcount--; in decrRefCount()
321 void decrRefCountVoid(void *o) { in decrRefCountVoid() argument
322 decrRefCount(o); in decrRefCountVoid()
342 int checkType(client *c, robj *o, int type) { in checkType() argument
343 if (o->type != type) { in checkType()
350 int isObjectRepresentableAsLongLong(robj *o, long long *llval) { in isObjectRepresentableAsLongLong() argument
351 serverAssertWithInfo(NULL,o,o->type == OBJ_STRING); in isObjectRepresentableAsLongLong()
352 if (o->encoding == OBJ_ENCODING_INT) { in isObjectRepresentableAsLongLong()
353 if (llval) *llval = (long) o->ptr; in isObjectRepresentableAsLongLong()
356 return string2ll(o->ptr,sdslen(o->ptr),llval) ? C_OK : C_ERR; in isObjectRepresentableAsLongLong()
361 robj *tryObjectEncoding(robj *o) { in tryObjectEncoding() argument
363 sds s = o->ptr; in tryObjectEncoding()
370 serverAssertWithInfo(NULL,o,o->type == OBJ_STRING); in tryObjectEncoding()
375 if (!sdsEncodedObject(o)) return o; in tryObjectEncoding()
380 if (o->refcount > 1) return o; in tryObjectEncoding()
397 decrRefCount(o); in tryObjectEncoding()
401 if (o->encoding == OBJ_ENCODING_RAW) sdsfree(o->ptr); in tryObjectEncoding()
402 o->encoding = OBJ_ENCODING_INT; in tryObjectEncoding()
403 o->ptr = (void*) value; in tryObjectEncoding()
404 return o; in tryObjectEncoding()
415 if (o->encoding == OBJ_ENCODING_EMBSTR) return o; in tryObjectEncoding()
417 decrRefCount(o); in tryObjectEncoding()
430 if (o->encoding == OBJ_ENCODING_RAW && in tryObjectEncoding()
433 o->ptr = sdsRemoveFreeSpace(o->ptr); in tryObjectEncoding()
437 return o; in tryObjectEncoding()
442 robj *getDecodedObject(robj *o) { in getDecodedObject() argument
445 if (sdsEncodedObject(o)) { in getDecodedObject()
446 incrRefCount(o); in getDecodedObject()
447 return o; in getDecodedObject()
449 if (o->type == OBJ_STRING && o->encoding == OBJ_ENCODING_INT) { in getDecodedObject()
452 ll2string(buf,32,(long)o->ptr); in getDecodedObject()
528 size_t stringObjectLen(robj *o) { in stringObjectLen() argument
529 serverAssertWithInfo(NULL,o,o->type == OBJ_STRING); in stringObjectLen()
530 if (sdsEncodedObject(o)) { in stringObjectLen()
531 return sdslen(o->ptr); in stringObjectLen()
533 return sdigits10((long)o->ptr); in stringObjectLen()
537 int getDoubleFromObject(robj *o, double *target) { in getDoubleFromObject() argument
541 if (o == NULL) { in getDoubleFromObject()
544 serverAssertWithInfo(NULL,o,o->type == OBJ_STRING); in getDoubleFromObject()
545 if (sdsEncodedObject(o)) { in getDoubleFromObject()
547 value = strtod(o->ptr, &eptr); in getDoubleFromObject()
548 if (isspace(((char*)o->ptr)[0]) || in getDoubleFromObject()
555 } else if (o->encoding == OBJ_ENCODING_INT) { in getDoubleFromObject()
556 value = (long)o->ptr; in getDoubleFromObject()
565 int getDoubleFromObjectOrReply(client *c, robj *o, double *target, const char *msg) { in getDoubleFromObjectOrReply() argument
567 if (getDoubleFromObject(o, &value) != C_OK) { in getDoubleFromObjectOrReply()
579 int getLongDoubleFromObject(robj *o, long double *target) { in getLongDoubleFromObject() argument
583 if (o == NULL) { in getLongDoubleFromObject()
586 serverAssertWithInfo(NULL,o,o->type == OBJ_STRING); in getLongDoubleFromObject()
587 if (sdsEncodedObject(o)) { in getLongDoubleFromObject()
589 value = strtold(o->ptr, &eptr); in getLongDoubleFromObject()
590 if (isspace(((char*)o->ptr)[0]) || eptr[0] != '\0' || in getLongDoubleFromObject()
593 } else if (o->encoding == OBJ_ENCODING_INT) { in getLongDoubleFromObject()
594 value = (long)o->ptr; in getLongDoubleFromObject()
603 int getLongDoubleFromObjectOrReply(client *c, robj *o, long double *target, const char *msg) { in getLongDoubleFromObjectOrReply() argument
605 if (getLongDoubleFromObject(o, &value) != C_OK) { in getLongDoubleFromObjectOrReply()
617 int getLongLongFromObject(robj *o, long long *target) { in getLongLongFromObject() argument
620 if (o == NULL) { in getLongLongFromObject()
623 serverAssertWithInfo(NULL,o,o->type == OBJ_STRING); in getLongLongFromObject()
624 if (sdsEncodedObject(o)) { in getLongLongFromObject()
625 if (string2ll(o->ptr,sdslen(o->ptr),&value) == 0) return C_ERR; in getLongLongFromObject()
626 } else if (o->encoding == OBJ_ENCODING_INT) { in getLongLongFromObject()
627 value = (long)o->ptr; in getLongLongFromObject()
636 int getLongLongFromObjectOrReply(client *c, robj *o, long long *target, const char *msg) { in getLongLongFromObjectOrReply() argument
638 if (getLongLongFromObject(o, &value) != C_OK) { in getLongLongFromObjectOrReply()
650 int getLongFromObjectOrReply(client *c, robj *o, long *target, const char *msg) { in getLongFromObjectOrReply() argument
653 if (getLongLongFromObjectOrReply(c, o, &value, msg) != C_OK) return C_ERR; in getLongFromObjectOrReply()
682 unsigned long long estimateObjectIdleTime(robj *o) { in estimateObjectIdleTime() argument
684 if (lruclock >= o->lru) { in estimateObjectIdleTime()
685 return (lruclock - o->lru) * LRU_CLOCK_RESOLUTION; in estimateObjectIdleTime()
687 return (lruclock + (LRU_CLOCK_MAX - o->lru)) * in estimateObjectIdleTime()
702 robj *o = objectCommandLookup(c,key); in objectCommandLookupOrReply() local
704 if (!o) addReply(c, reply); in objectCommandLookupOrReply()
705 return o; in objectCommandLookupOrReply()
711 robj *o; in objectCommand() local
714 if ((o = objectCommandLookupOrReply(c,c->argv[2],shared.nullbulk)) in objectCommand()
716 addReplyLongLong(c,o->refcount); in objectCommand()
718 if ((o = objectCommandLookupOrReply(c,c->argv[2],shared.nullbulk)) in objectCommand()
720 addReplyBulkCString(c,strEncoding(o->encoding)); in objectCommand()
722 if ((o = objectCommandLookupOrReply(c,c->argv[2],shared.nullbulk)) in objectCommand()
724 addReplyLongLong(c,estimateObjectIdleTime(o)/1000); in objectCommand()