int memcache_store (struct connection *c, int op, const char *old_key, int old_key_len, int flags, int delay, int size) { cmd_set++; double cmd_time = -mytime(); if (verbosity > 1) { fprintf (stderr, "memcache_store: key='%s', key_len=%d, value_len=%d\n", old_key, old_key_len, size); } dl_log_add (LOG_HISTORY, 1, "memcache_store: key='%s', key_len=%d, value_len=%d\n", old_key, old_key_len, size); sprintf (query, "key='%s', value_len=%d", old_key, size); if (size + 1 < MAX_VALUE_LEN) { char *key; int key_len; eat_at (old_key, old_key_len, &key, &key_len); if (key_len >= 5 && !strncmp (key, "queue", 5)) { int add = 0, x, y; if (sscanf(key + 5, "%d,%d%n", &x, &y, &add) != 2) { x = y = add = 0; } if (key[key_len - 1] != ')' || key[5 + add] != '(' || (key_len - 6 >= STATS_BUFF_SIZE)) { QRETURN(set, -2); } safe_read_in (&c->In, buf, size); buf[size] = 0; int len = key_len - 7 - add; memcpy (stats_buff, key + 6 + add, len); stats_buff[len] = 0; if (!do_add_event (stats_buff, len, buf, size, x, y, TTL_EVENT)) { QRETURN(set, 0) } QRETURN(set, 1); }
bool add_event_ex(unsigned short id, bool oneshot, void (*handler)(unsigned short id, void *event_data, void *user_data), void *user_data) { return do_add_event(id, oneshot, true, handler, user_data); }
bool add_event(unsigned short id, void (*handler)(unsigned short id, void *data)) { return do_add_event(id, false, false, handler, NULL); }