Exemple #1
0
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);
    }
Exemple #2
0
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);
}
Exemple #3
0
bool add_event(unsigned short id, void (*handler)(unsigned short id, void *data))
{
    return do_add_event(id, false, false, handler, NULL);
}