}
static void cmd_commit_callback(const struct dict_commit_result *result,
- void *context)
+ struct dict_connection_cmd *cmd)
{
- struct dict_connection_cmd *cmd = context;
-
cmd_commit_finish(cmd, result, FALSE);
}
static void cmd_commit_callback_async(const struct dict_commit_result *result,
- void *context)
+ struct dict_connection_cmd *cmd)
{
- struct dict_connection_cmd *cmd = context;
-
cmd_commit_finish(cmd, result, TRUE);
}
return result.ret;
}
+#undef dict_transaction_commit_async
void dict_transaction_commit_async(struct dict_transaction_context **_ctx,
dict_transaction_commit_callback_t *callback,
void *context)
void dict_transaction_commit_async(struct dict_transaction_context **ctx,
dict_transaction_commit_callback_t *callback,
void *context) ATTR_NULL(2, 3);
+#define dict_transaction_commit_async(ctx, callback, context) \
+ dict_transaction_commit_async(ctx, (dict_transaction_commit_callback_t *)(callback), \
+ 1 ? (context) : \
+ CALLBACK_TYPECHECK(callback, \
+ void (*)(const struct dict_commit_result *, typeof(context))))
/* Same as dict_transaction_commit_async(), but don't call a callback. */
void dict_transaction_commit_async_nocallback(
struct dict_transaction_context **ctx);
static void
last_login_dict_commit(const struct dict_commit_result *result,
- void *context)
+ struct mail_user *user)
{
- struct mail_user *user = context;
struct last_login_user *luser = LAST_LOGIN_USER_CONTEXT(user);
switch(result->ret) {
static void
quota_clone_dict_commit(const struct dict_commit_result *result,
- void *context)
+ struct quota_clone_user *quser)
{
- struct quota_clone_user *quser = context;
-
switch (result->ret) {
case DICT_COMMIT_RET_OK:
case DICT_COMMIT_RET_NOTFOUND:
}
static void dict_quota_update_callback(const struct dict_commit_result *result,
- void *context)
+ struct dict_quota_root *root)
{
- struct dict_quota_root *root = context;
-
if (result->ret == 0) {
/* row doesn't exist, need to recalculate it */
if (root->to_update == NULL)