Lines Matching refs:c
37 static int checkStringLength(client *c, long long size) { in checkStringLength() argument
39 addReplyError(c,"string exceeds maximum allowed size (512MB)"); in checkStringLength()
67 void setGenericCommand(client *c, int flags, robj *key, robj *val, robj *expire, int unit, robj *ok… in setGenericCommand() argument
71 if (getLongLongFromObjectOrReply(c, expire, &milliseconds, NULL) != C_OK) in setGenericCommand()
74 addReplyErrorFormat(c,"invalid expire time in %s",c->cmd->name); in setGenericCommand()
80 if ((flags & OBJ_SET_NX && lookupKeyWrite(c->db,key) != NULL) || in setGenericCommand()
81 (flags & OBJ_SET_XX && lookupKeyWrite(c->db,key) == NULL)) in setGenericCommand()
83 addReply(c, abort_reply ? abort_reply : shared.nullbulk); in setGenericCommand()
86 setKey(c->db,key,val); in setGenericCommand()
88 if (expire) setExpire(c,c->db,key,mstime()+milliseconds); in setGenericCommand()
89 notifyKeyspaceEvent(NOTIFY_STRING,"set",key,c->db->id); in setGenericCommand()
91 "expire",key,c->db->id); in setGenericCommand()
92 addReply(c, ok_reply ? ok_reply : shared.ok); in setGenericCommand()
96 void setCommand(client *c) { in setCommand() argument
102 for (j = 3; j < c->argc; j++) { in setCommand()
103 char *a = c->argv[j]->ptr; in setCommand()
104 robj *next = (j == c->argc-1) ? NULL : c->argv[j+1]; in setCommand()
133 addReply(c,shared.syntaxerr); in setCommand()
138 c->argv[2] = tryObjectEncoding(c->argv[2]); in setCommand()
139 setGenericCommand(c,flags,c->argv[1],c->argv[2],expire,unit,NULL,NULL); in setCommand()
142 void setnxCommand(client *c) { in setnxCommand() argument
143 c->argv[2] = tryObjectEncoding(c->argv[2]); in setnxCommand()
144 setGenericCommand(c,OBJ_SET_NX,c->argv[1],c->argv[2],NULL,0,shared.cone,shared.czero); in setnxCommand()
147 void setexCommand(client *c) { in setexCommand() argument
148 c->argv[3] = tryObjectEncoding(c->argv[3]); in setexCommand()
149 setGenericCommand(c,OBJ_SET_NO_FLAGS,c->argv[1],c->argv[3],c->argv[2],UNIT_SECONDS,NULL,NULL); in setexCommand()
152 void psetexCommand(client *c) { in psetexCommand() argument
153 c->argv[3] = tryObjectEncoding(c->argv[3]); in psetexCommand()
154 …setGenericCommand(c,OBJ_SET_NO_FLAGS,c->argv[1],c->argv[3],c->argv[2],UNIT_MILLISECONDS,NULL,NULL); in psetexCommand()
157 int getGenericCommand(client *c) { in getGenericCommand() argument
160 if ((o = lookupKeyReadOrReply(c,c->argv[1],shared.nullbulk)) == NULL) in getGenericCommand()
164 addReply(c,shared.wrongtypeerr); in getGenericCommand()
167 addReplyBulk(c,o); in getGenericCommand()
172 void getCommand(client *c) { in getCommand() argument
173 getGenericCommand(c); in getCommand()
176 void getsetCommand(client *c) { in getsetCommand() argument
177 if (getGenericCommand(c) == C_ERR) return; in getsetCommand()
178 c->argv[2] = tryObjectEncoding(c->argv[2]); in getsetCommand()
179 setKey(c->db,c->argv[1],c->argv[2]); in getsetCommand()
180 notifyKeyspaceEvent(NOTIFY_STRING,"set",c->argv[1],c->db->id); in getsetCommand()
184 void setrangeCommand(client *c) { in setrangeCommand() argument
187 sds value = c->argv[3]->ptr; in setrangeCommand()
189 if (getLongFromObjectOrReply(c,c->argv[2],&offset,NULL) != C_OK) in setrangeCommand()
193 addReplyError(c,"offset is out of range"); in setrangeCommand()
197 o = lookupKeyWrite(c->db,c->argv[1]); in setrangeCommand()
201 addReply(c,shared.czero); in setrangeCommand()
206 if (checkStringLength(c,offset+sdslen(value)) != C_OK) in setrangeCommand()
210 dbAdd(c->db,c->argv[1],o); in setrangeCommand()
215 if (checkType(c,o,OBJ_STRING)) in setrangeCommand()
221 addReplyLongLong(c,olen); in setrangeCommand()
226 if (checkStringLength(c,offset+sdslen(value)) != C_OK) in setrangeCommand()
230 o = dbUnshareStringValue(c->db,c->argv[1],o); in setrangeCommand()
236 signalModifiedKey(c->db,c->argv[1]); in setrangeCommand()
238 "setrange",c->argv[1],c->db->id); in setrangeCommand()
241 addReplyLongLong(c,sdslen(o->ptr)); in setrangeCommand()
244 void getrangeCommand(client *c) { in getrangeCommand() argument
250 if (getLongLongFromObjectOrReply(c,c->argv[2],&start,NULL) != C_OK) in getrangeCommand()
252 if (getLongLongFromObjectOrReply(c,c->argv[3],&end,NULL) != C_OK) in getrangeCommand()
254 if ((o = lookupKeyReadOrReply(c,c->argv[1],shared.emptybulk)) == NULL || in getrangeCommand()
255 checkType(c,o,OBJ_STRING)) return; in getrangeCommand()
267 addReply(c,shared.emptybulk); in getrangeCommand()
279 addReply(c,shared.emptybulk); in getrangeCommand()
281 addReplyBulkCBuffer(c,(char*)str+start,end-start+1); in getrangeCommand()
285 void mgetCommand(client *c) { in mgetCommand() argument
288 addReplyMultiBulkLen(c,c->argc-1); in mgetCommand()
289 for (j = 1; j < c->argc; j++) { in mgetCommand()
290 robj *o = lookupKeyRead(c->db,c->argv[j]); in mgetCommand()
292 addReply(c,shared.nullbulk); in mgetCommand()
295 addReply(c,shared.nullbulk); in mgetCommand()
297 addReplyBulk(c,o); in mgetCommand()
303 void msetGenericCommand(client *c, int nx) { in msetGenericCommand() argument
306 if ((c->argc % 2) == 0) { in msetGenericCommand()
307 addReplyError(c,"wrong number of arguments for MSET"); in msetGenericCommand()
314 for (j = 1; j < c->argc; j += 2) { in msetGenericCommand()
315 if (lookupKeyWrite(c->db,c->argv[j]) != NULL) { in msetGenericCommand()
316 addReply(c, shared.czero); in msetGenericCommand()
322 for (j = 1; j < c->argc; j += 2) { in msetGenericCommand()
323 c->argv[j+1] = tryObjectEncoding(c->argv[j+1]); in msetGenericCommand()
324 setKey(c->db,c->argv[j],c->argv[j+1]); in msetGenericCommand()
325 notifyKeyspaceEvent(NOTIFY_STRING,"set",c->argv[j],c->db->id); in msetGenericCommand()
327 server.dirty += (c->argc-1)/2; in msetGenericCommand()
328 addReply(c, nx ? shared.cone : shared.ok); in msetGenericCommand()
331 void msetCommand(client *c) { in msetCommand() argument
332 msetGenericCommand(c,0); in msetCommand()
335 void msetnxCommand(client *c) { in msetnxCommand() argument
336 msetGenericCommand(c,1); in msetnxCommand()
339 void incrDecrCommand(client *c, long long incr) { in incrDecrCommand() argument
343 o = lookupKeyWrite(c->db,c->argv[1]); in incrDecrCommand()
344 if (o != NULL && checkType(c,o,OBJ_STRING)) return; in incrDecrCommand()
345 if (getLongLongFromObjectOrReply(c,o,&value,NULL) != C_OK) return; in incrDecrCommand()
350 addReplyError(c,"increment or decrement would overflow"); in incrDecrCommand()
364 dbOverwrite(c->db,c->argv[1],new); in incrDecrCommand()
366 dbAdd(c->db,c->argv[1],new); in incrDecrCommand()
369 signalModifiedKey(c->db,c->argv[1]); in incrDecrCommand()
370 notifyKeyspaceEvent(NOTIFY_STRING,"incrby",c->argv[1],c->db->id); in incrDecrCommand()
372 addReply(c,shared.colon); in incrDecrCommand()
373 addReply(c,new); in incrDecrCommand()
374 addReply(c,shared.crlf); in incrDecrCommand()
377 void incrCommand(client *c) { in incrCommand() argument
378 incrDecrCommand(c,1); in incrCommand()
381 void decrCommand(client *c) { in decrCommand() argument
382 incrDecrCommand(c,-1); in decrCommand()
385 void incrbyCommand(client *c) { in incrbyCommand() argument
388 if (getLongLongFromObjectOrReply(c, c->argv[2], &incr, NULL) != C_OK) return; in incrbyCommand()
389 incrDecrCommand(c,incr); in incrbyCommand()
392 void decrbyCommand(client *c) { in decrbyCommand() argument
395 if (getLongLongFromObjectOrReply(c, c->argv[2], &incr, NULL) != C_OK) return; in decrbyCommand()
396 incrDecrCommand(c,-incr); in decrbyCommand()
399 void incrbyfloatCommand(client *c) { in incrbyfloatCommand() argument
403 o = lookupKeyWrite(c->db,c->argv[1]); in incrbyfloatCommand()
404 if (o != NULL && checkType(c,o,OBJ_STRING)) return; in incrbyfloatCommand()
405 if (getLongDoubleFromObjectOrReply(c,o,&value,NULL) != C_OK || in incrbyfloatCommand()
406 getLongDoubleFromObjectOrReply(c,c->argv[2],&incr,NULL) != C_OK) in incrbyfloatCommand()
411 addReplyError(c,"increment would produce NaN or Infinity"); in incrbyfloatCommand()
416 dbOverwrite(c->db,c->argv[1],new); in incrbyfloatCommand()
418 dbAdd(c->db,c->argv[1],new); in incrbyfloatCommand()
419 signalModifiedKey(c->db,c->argv[1]); in incrbyfloatCommand()
420 notifyKeyspaceEvent(NOTIFY_STRING,"incrbyfloat",c->argv[1],c->db->id); in incrbyfloatCommand()
422 addReplyBulk(c,new); in incrbyfloatCommand()
428 rewriteClientCommandArgument(c,0,aux); in incrbyfloatCommand()
430 rewriteClientCommandArgument(c,2,new); in incrbyfloatCommand()
433 void appendCommand(client *c) { in appendCommand() argument
437 o = lookupKeyWrite(c->db,c->argv[1]); in appendCommand()
440 c->argv[2] = tryObjectEncoding(c->argv[2]); in appendCommand()
441 dbAdd(c->db,c->argv[1],c->argv[2]); in appendCommand()
442 incrRefCount(c->argv[2]); in appendCommand()
443 totlen = stringObjectLen(c->argv[2]); in appendCommand()
446 if (checkType(c,o,OBJ_STRING)) in appendCommand()
450 append = c->argv[2]; in appendCommand()
452 if (checkStringLength(c,totlen) != C_OK) in appendCommand()
456 o = dbUnshareStringValue(c->db,c->argv[1],o); in appendCommand()
460 signalModifiedKey(c->db,c->argv[1]); in appendCommand()
461 notifyKeyspaceEvent(NOTIFY_STRING,"append",c->argv[1],c->db->id); in appendCommand()
463 addReplyLongLong(c,totlen); in appendCommand()
466 void strlenCommand(client *c) { in strlenCommand() argument
468 if ((o = lookupKeyReadOrReply(c,c->argv[1],shared.czero)) == NULL || in strlenCommand()
469 checkType(c,o,OBJ_STRING)) return; in strlenCommand()
470 addReplyLongLong(c,stringObjectLen(o)); in strlenCommand()