Skip to content

Commit

Permalink
lib-dict: Changed internal transaction_commit() to return void
Browse files Browse the repository at this point in the history
Somewhat simplifies the code now that it doesn't have to both call a
callback and return the same ret.
  • Loading branch information
sirainen authored and GitLab committed May 8, 2016
1 parent b2d3b52 commit c2a66e7
Show file tree
Hide file tree
Showing 8 changed files with 34 additions and 35 deletions.
6 changes: 2 additions & 4 deletions src/lib-dict-extra/dict-fs.c
Expand Up @@ -258,7 +258,7 @@ static int fs_dict_write_changes(struct dict_transaction_memory_context *ctx)
return 0;
}

static int
static void
fs_dict_transaction_commit(struct dict_transaction_context *_ctx,
bool async ATTR_UNUSED,
dict_transaction_commit_callback_t *callback,
Expand All @@ -274,9 +274,7 @@ fs_dict_transaction_commit(struct dict_transaction_context *_ctx,
ret = 1;
pool_unref(&ctx->pool);

if (callback != NULL)
callback(ret, context);
return ret;
callback(ret, context);
}

struct dict dict_driver_fs = {
Expand Down
13 changes: 6 additions & 7 deletions src/lib-dict/dict-client.c
Expand Up @@ -768,7 +768,7 @@ static void dict_async_input(struct client_dict *dict)
}
}

static int
static void
client_dict_transaction_commit(struct dict_transaction_context *_ctx,
bool async,
dict_transaction_commit_callback_t *callback,
Expand Down Expand Up @@ -799,6 +799,7 @@ client_dict_transaction_commit(struct dict_transaction_context *_ctx,
dict->io = io_add(dict->fd, IO_READ,
dict_async_input, dict);
}
return;
} else {
/* sync commit, read reply */
if (client_dict_read_line(dict, &line, &error) < 0) {
Expand Down Expand Up @@ -830,14 +831,12 @@ client_dict_transaction_commit(struct dict_transaction_context *_ctx,
}
}
}
DLLIST_REMOVE(&dict->transactions, ctx);

if (ret < 0 || !async) {
DLLIST_REMOVE(&dict->transactions, ctx);
i_free(ctx);
callback(ret, context);
i_free(ctx);

client_dict_add_timeout(dict);
}
return ret;
client_dict_add_timeout(dict);
}

static void
Expand Down
6 changes: 2 additions & 4 deletions src/lib-dict/dict-file.c
Expand Up @@ -623,7 +623,7 @@ static int file_dict_write_changes(struct dict_transaction_memory_context *ctx,
return 0;
}

static int
static void
file_dict_transaction_commit(struct dict_transaction_context *_ctx,
bool async ATTR_UNUSED,
dict_transaction_commit_callback_t *callback,
Expand All @@ -642,9 +642,7 @@ file_dict_transaction_commit(struct dict_transaction_context *_ctx,
ret = 1;
pool_unref(&ctx->pool);

if (callback != NULL)
callback(ret, context);
return ret;
callback(ret, context);
}

struct dict dict_driver_file = {
Expand Down
8 changes: 3 additions & 5 deletions src/lib-dict/dict-memcached-ascii.c
Expand Up @@ -610,7 +610,7 @@ memcached_ascii_transaction_send(struct dict_memcached_ascii_commit_ctx *ctx)
return 0;
}

static int
static void
memcached_ascii_transaction_commit(struct dict_transaction_context *_ctx,
bool async,
dict_transaction_commit_callback_t *callback,
Expand All @@ -637,7 +637,7 @@ memcached_ascii_transaction_commit(struct dict_transaction_context *_ctx,

if (async && ret == 0) {
pool_unref(&ctx->pool);
return 1;
return;
}

if (ret == 0) {
Expand All @@ -647,10 +647,8 @@ memcached_ascii_transaction_commit(struct dict_transaction_context *_ctx,
}
}
}
if (callback != NULL)
callback(ret, context);
callback(ret, context);
pool_unref(&ctx->pool);
return ret;
}

struct dict dict_driver_memcached_ascii = {
Expand Down
9 changes: 5 additions & 4 deletions src/lib-dict/dict-private.h
Expand Up @@ -23,10 +23,11 @@ struct dict_vfuncs {
const char **error_r);

struct dict_transaction_context *(*transaction_init)(struct dict *dict);
int (*transaction_commit)(struct dict_transaction_context *ctx,
bool async,
dict_transaction_commit_callback_t *callback,
void *context);
/* call the callback before returning if non-async commits */
void (*transaction_commit)(struct dict_transaction_context *ctx,
bool async,
dict_transaction_commit_callback_t *callback,
void *context);
void (*transaction_rollback)(struct dict_transaction_context *ctx);

void (*set)(struct dict_transaction_context *ctx,
Expand Down
8 changes: 3 additions & 5 deletions src/lib-dict/dict-redis.c
Expand Up @@ -577,7 +577,7 @@ redis_transaction_init(struct dict *_dict)
return &ctx->ctx;
}

static int
static void
redis_transaction_commit(struct dict_transaction_context *_ctx, bool async,
dict_transaction_commit_callback_t *callback,
void *context)
Expand Down Expand Up @@ -610,14 +610,12 @@ redis_transaction_commit(struct dict_transaction_context *_ctx, bool async,
redis_input_state_add(dict, REDIS_INPUT_STATE_EXEC_REPLY);
if (async) {
i_free(ctx);
return 1;
return;
}
redis_wait(dict);
}
if (callback != NULL)
callback(ret, context);
callback(ret, context);
i_free(ctx);
return ret;
}

static void redis_transaction_rollback(struct dict_transaction_context *_ctx)
Expand Down
8 changes: 3 additions & 5 deletions src/lib-dict/dict-sql.c
Expand Up @@ -798,7 +798,7 @@ sql_dict_transaction_commit_callback(const char *error,
sql_dict_transaction_free(ctx);
}

static int
static void
sql_dict_transaction_commit(struct dict_transaction_context *_ctx, bool async,
dict_transaction_commit_callback_t *callback,
void *context)
Expand All @@ -822,7 +822,7 @@ sql_dict_transaction_commit(struct dict_transaction_context *_ctx, bool async,
ctx->async_context = context;
sql_transaction_commit(&ctx->sql_ctx,
sql_dict_transaction_commit_callback, ctx);
return 1;
return;
} else {
if (sql_transaction_commit_s(&ctx->sql_ctx, &error) < 0) {
i_error("sql dict: commit failed: %s", error);
Expand All @@ -834,9 +834,7 @@ sql_dict_transaction_commit(struct dict_transaction_context *_ctx, bool async,
}
sql_dict_transaction_free(ctx);

if (callback != NULL)
callback(ret, context);
return ret;
callback(ret, context);
}

static void sql_dict_transaction_rollback(struct dict_transaction_context *_ctx)
Expand Down
11 changes: 10 additions & 1 deletion src/lib-dict/dict.c
Expand Up @@ -187,12 +187,21 @@ struct dict_transaction_context *dict_transaction_begin(struct dict *dict)
return dict->v.transaction_init(dict);
}

static void dict_transaction_commit_sync_callback(int ret, void *context)
{
int *ret_p = context;
*ret_p = ret;
}

int dict_transaction_commit(struct dict_transaction_context **_ctx)
{
struct dict_transaction_context *ctx = *_ctx;
int ret;

*_ctx = NULL;
return ctx->dict->v.transaction_commit(ctx, FALSE, NULL, NULL);
ctx->dict->v.transaction_commit(ctx, FALSE,
dict_transaction_commit_sync_callback, &ret);
return ret;
}

void dict_transaction_commit_async(struct dict_transaction_context **_ctx,
Expand Down

0 comments on commit c2a66e7

Please sign in to comment.