Skip to content

Commit

Permalink
Modified the signature of grn_obj_touch().
Browse files Browse the repository at this point in the history
  • Loading branch information
daijiro committed Mar 31, 2010
1 parent b972d89 commit 2792c62
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 22 deletions.
32 changes: 17 additions & 15 deletions lib/ctx.c
Expand Up @@ -789,7 +789,7 @@ get_content_type(grn_ctx *ctx, const char *p, const char *pe,
#define OUTPUT_TYPE_LEN (sizeof(OUTPUT_TYPE) - 1)

grn_obj *
grn_ctx_qe_exec_uri(grn_ctx *ctx, const char *path, uint32_t path_size)
grn_ctx_qe_exec_uri(grn_ctx *ctx, const char *path, uint32_t path_len)
{
const char *p, *e;
grn_obj *expr, *val = NULL;
Expand All @@ -798,7 +798,7 @@ grn_ctx_qe_exec_uri(grn_ctx *ctx, const char *path, uint32_t path_size)
ctx->impl->qe_next = NULL;
if ((val = grn_expr_get_var_by_offset(ctx, expr, 0))) {
grn_obj_reinit(ctx, val, GRN_DB_TEXT, 0);
GRN_TEXT_PUT(ctx, val, path, path_size);
GRN_TEXT_PUT(ctx, val, path, path_len);
}
grn_ctx_push(ctx, ctx->impl->outbuf);
grn_expr_exec(ctx, expr, 1);
Expand All @@ -808,9 +808,11 @@ grn_ctx_qe_exec_uri(grn_ctx *ctx, const char *path, uint32_t path_size)
grn_obj key;
const char *g, *pe;
grn_content_type ot;
grn_timeval_now(ctx, &ctx->impl->tv);
GRN_LOG(ctx, GRN_LOG_NONE, "%08x|>%.*s", (intptr_t)ctx, path_len, path);
GRN_TEXT_INIT(&key, 0);
p = path;
e = p + path_size;
e = p + path_len;
g = grn_text_urldec(ctx, &key, p, e, '?');
pe = get_content_type(ctx, GRN_TEXT_VALUE(&key), GRN_BULK_CURR(&key), &ot);
if ((GRN_TEXT_LEN(&key) >= 2 &&
Expand Down Expand Up @@ -841,21 +843,23 @@ grn_ctx_qe_exec_uri(grn_ctx *ctx, const char *path, uint32_t path_size)
}

grn_obj *
grn_ctx_qe_exec(grn_ctx *ctx, const char *str, uint32_t str_size)
grn_ctx_qe_exec(grn_ctx *ctx, const char *str, uint32_t str_len)
{
grn_obj *expr = NULL, *val = NULL;
if (ctx->impl->qe_next) {
expr = ctx->impl->qe_next;
ctx->impl->qe_next = NULL;
if ((val = grn_expr_get_var_by_offset(ctx, expr, 0))) {
grn_obj_reinit(ctx, val, GRN_DB_TEXT, 0);
GRN_TEXT_PUT(ctx, val, str, str_size);
GRN_TEXT_PUT(ctx, val, str, str_len);
}
} else {
grn_obj buf;
char tok_type;
int offset = 0;
const char *v, *p = str, *e = str + str_size;
const char *v, *p = str, *e = str + str_len;
grn_timeval_now(ctx, &ctx->impl->tv);
GRN_LOG(ctx, GRN_LOG_NONE, "%08x|>%.*s", (intptr_t)ctx, str_len, str);
GRN_TEXT_INIT(&buf, 0);
p = grn_text_unesc_tok(ctx, &buf, p, e, &tok_type);
if ((expr = grn_ctx_get(ctx, GRN_TEXT_VALUE(&buf), GRN_TEXT_LEN(&buf)))) {
Expand Down Expand Up @@ -951,8 +955,6 @@ grn_ctx_send(grn_ctx *ctx, char *str, unsigned int str_len, int flags)
GRN_BULK_REWIND(&ctx->impl->subbuf);
ctx->impl->bufcur = 0;
*/
grn_timeval_now(ctx, &ctx->impl->tv);
GRN_LOG(ctx, GRN_LOG_NONE, "%08x|>%.*s", (intptr_t)ctx, str_len, str);
if (str_len && *str == '/') {
grn_ctx_qe_exec_uri(ctx, str + 1, str_len - 1);
} else {
Expand Down Expand Up @@ -1179,14 +1181,14 @@ grn_cache_expire_entry(grn_cache_entry *ce)
}

grn_obj *
grn_cache_fetch(grn_ctx *ctx, const char *str, uint32_t str_size)
grn_cache_fetch(grn_ctx *ctx, const char *str, uint32_t str_len)
{
grn_cache_entry *ce;
grn_obj *obj = NULL;
if (!ctx->impl || !ctx->impl->db) { return obj; }
MUTEX_LOCK(grn_gcache.mutex);
if (grn_hash_get(&grn_gctx, grn_gcache.hash, str, str_size, (void **)&ce)) {
if (ce->tv.tv_sec < grn_db_lastmod(ctx->impl->db)) {
if (grn_hash_get(&grn_gctx, grn_gcache.hash, str, str_len, (void **)&ce)) {
if (ce->tv.tv_sec <= grn_db_lastmod(ctx->impl->db)) {
grn_cache_expire_entry(ce);
goto exit;
}
Expand All @@ -1208,19 +1210,19 @@ exit :
}

void
grn_cache_unref(const char *str, uint32_t str_size)
grn_cache_unref(const char *str, uint32_t str_len)
{
grn_cache_entry *ce;
grn_ctx *ctx = &grn_gctx;
MUTEX_LOCK(grn_gcache.mutex);
if (grn_hash_get(ctx, grn_gcache.hash, str, str_size, (void **)&ce)) {
if (grn_hash_get(ctx, grn_gcache.hash, str, str_len, (void **)&ce)) {
if (ce->nref) { ce->nref--; }
}
MUTEX_UNLOCK(grn_gcache.mutex);
}

void
grn_cache_update(grn_ctx *ctx, const char *str, uint32_t str_size, grn_obj *value)
grn_cache_update(grn_ctx *ctx, const char *str, uint32_t str_len, grn_obj *value)
{
grn_id id;
int added = 0;
Expand All @@ -1231,7 +1233,7 @@ grn_cache_update(grn_ctx *ctx, const char *str, uint32_t str_size, grn_obj *valu
if (!(obj = grn_obj_open(&grn_gctx, GRN_BULK, 0, GRN_DB_TEXT))) { return; }
GRN_TEXT_PUT(&grn_gctx, obj, GRN_TEXT_VALUE(value), GRN_TEXT_LEN(value));
MUTEX_LOCK(grn_gcache.mutex);
if ((id = grn_hash_add(&grn_gctx, grn_gcache.hash, str, str_size, (void **)&ce, &added))) {
if ((id = grn_hash_add(&grn_gctx, grn_gcache.hash, str, str_len, (void **)&ce, &added))) {
if (!added) {
if (ce->nref) {
rc = GRN_RESOURCE_BUSY;
Expand Down
17 changes: 10 additions & 7 deletions lib/db.c
Expand Up @@ -272,14 +272,17 @@ grn_db_touch(grn_ctx *ctx, grn_obj *s)
#define IS_TEMP(obj) (DB_OBJ(obj)->id & GRN_OBJ_TMP_OBJECT)

void
grn_obj_touch(grn_ctx *ctx, grn_obj *obj)
grn_obj_touch(grn_ctx *ctx, grn_obj *obj, grn_timeval *tv)
{
grn_timeval tv;
grn_timeval_now(ctx, &tv);
grn_timeval tv_;
if (!tv) {
grn_timeval_now(ctx, &tv_);
tv = &tv_;
}
if (obj) {
switch (obj->header.type) {
case GRN_DB :
((grn_db *)obj)->keys->io->header->lastmod = tv.tv_sec;
((grn_db *)obj)->keys->io->header->lastmod = tv->tv_sec;
break;
case GRN_TABLE_PAT_KEY :
case GRN_TABLE_HASH_KEY :
Expand All @@ -288,7 +291,7 @@ grn_obj_touch(grn_ctx *ctx, grn_obj *obj)
case GRN_COLUMN_FIX_SIZE :
case GRN_COLUMN_INDEX :
if (!IS_TEMP(obj)) {
((grn_db *)DB_OBJ(obj)->db)->keys->io->header->lastmod = tv.tv_sec;
((grn_db *)DB_OBJ(obj)->db)->keys->io->header->lastmod = tv->tv_sec;
}
break;
}
Expand Down Expand Up @@ -1385,7 +1388,7 @@ grn_table_delete(grn_ctx *ctx, grn_obj *table, const void *key, unsigned key_siz
break;
}
clear_column_values(ctx, table, rid);
grn_obj_touch(ctx, table);
grn_obj_touch(ctx, table, NULL);
}
GRN_API_RETURN(rc);
}
Expand Down Expand Up @@ -1460,7 +1463,7 @@ grn_table_delete_by_id(grn_ctx *ctx, grn_obj *table, grn_id id)
} else {
rc = _grn_table_delete_by_id(ctx, table, id, NULL);
}
grn_obj_touch(ctx, table);
grn_obj_touch(ctx, table, NULL);
GRN_API_RETURN(rc);
}

Expand Down

0 comments on commit 2792c62

Please sign in to comment.