375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
|
# File 'ext/native_server.c', line 375
VALUE mc_incr(int argc, VALUE *argv, VALUE self) {
memcached_st *mc;
VALUE key, amount;
static memcached_return_t result;
unsigned int offset;
uint64_t value;
Data_Get_Struct(self, memcached_st, mc);
rb_scan_args(argc, argv, "11", &key, &amount);
key = StringValue(key);
if (!use_binary(mc)) key = escape_key(key, NULL);
offset = RTEST(amount) ? NUM2INT(amount) : 1;
result = memcached_increment(mc, RSTRING_PTR(key), RSTRING_LEN(key), offset, &value);
if (result == MEMCACHED_SUCCESS) {
return LONG2NUM(value);
} else if (result == MEMCACHED_NOTFOUND) {
return Qnil;
} else {
return throw_error(&result);
}
}
|