Пример #1
0
static int memcached_metatile_write(struct storage_backend * store, const char *xmlconfig, const char *options, int x, int y, int z, const char *buf, int sz) {
    char meta_path[PATH_MAX];
    char tmp[PATH_MAX];
    struct stat_info tile_stat;
    int sz2 = sz + sizeof(struct stat_info);
    char * buf2 = malloc(sz2);
    memcached_return_t rc;

    if (buf2 == NULL) {
        return -2;
    }

    tile_stat.expired = 0;
    tile_stat.size = sz;
    tile_stat.mtime = time(NULL);
    tile_stat.atime = tile_stat.mtime;
    tile_stat.ctime = tile_stat.mtime;

    memcpy(buf2, &tile_stat, sizeof(tile_stat));
    memcpy(buf2 + sizeof(tile_stat), buf, sz);

    log_message(STORE_LOGLVL_DEBUG, "Trying to create and write a metatile to %s\n", memcached_tile_storage_id(store, xmlconfig, options, x, y, z, tmp));
    snprintf(meta_path,PATH_MAX - 1, "%s/%d/%d/%d.meta", xmlconfig, x, y, z);

    rc = memcached_set(store->storage_ctx, meta_path, strlen(meta_path), buf2, sz2, (time_t)0, (uint32_t)0);
    free(buf2);

    if (rc != MEMCACHED_SUCCESS) {
        return -1;
    }
    memcached_flush_buffers(store->storage_ctx);
    return sz;
}
Пример #2
0
static mrb_value mrb_memcached_flush_buffers(mrb_state *mrb, mrb_value self)
{
  memcached_return mrt;
  mrb_memcached_data *data = DATA_PTR(self);

  mrt = memcached_flush_buffers(data->mst);
  if (mrt != MEMCACHED_SUCCESS) {
    return mrb_nil_value();
  }
  return mrb_fixnum_value(mrt);
}
Пример #3
0
    rc = memcached_server_push(mc->st, servers);
    if (unlikely(rc != MEMCACHED_SUCCESS)) {
        /* TODO Error */
        fprintf(stderr, "Error!! '%s'\n", memcached_strerror(mc->st, rc));
        abort();
    }
    memcached_server_list_free(servers);
    return cast(void *, mc);
}

void logpool_memcache_close(logpool_t *ctx)
{
    mc_t *mc = cast(mc_t *, ctx->connection);
    memcached_st *st = mc->st;
#ifdef USE_BUFFER_REQ
    memcached_return_t rc = memcached_flush_buffers(st);
    if (unlikely(rc != MEMCACHED_SUCCESS)) {
        /* TODO Error */
        fprintf(stderr, "Error!! '%s'\n", memcached_strerror(mc->st, rc));
        abort();
    }
#endif
    memcached_free(st);
    logpool_string_close(ctx);
}

static void logpool_memcache_flush(logpool_t *ctx, void **args __UNUSED__)
{
    mc_t *mc = cast(mc_t *, ctx->connection);
    char key[128] = {0}, *buf_orig = mc->buf, *p;
    const char *value = mc->base;