return 0;
}
-static void mail_storage_service_io_activate(void *context)
+static void mail_storage_service_io_activate(struct mail_storage_service_user *user)
{
- struct mail_storage_service_user *user = context;
-
i_set_failure_prefix("%s", user->log_prefix);
}
-static void mail_storage_service_io_deactivate(void *context)
+static void mail_storage_service_io_deactivate(struct mail_storage_service_user *user)
{
- struct mail_storage_service_user *user = context;
-
i_set_failure_prefix("%s", user->service_ctx->default_log_prefix);
}
i_free(ctx);
}
+#undef io_loop_context_add_callbacks
void io_loop_context_add_callbacks(struct ioloop_context *ctx,
io_callback_t *activate,
io_callback_t *deactivate, void *context)
array_append(&ctx->callbacks, &cb, 1);
}
+#undef io_loop_context_remove_callbacks
void io_loop_context_remove_callbacks(struct ioloop_context *ctx,
io_callback_t *activate,
io_callback_t *deactivate, void *context)
void io_loop_context_add_callbacks(struct ioloop_context *ctx,
io_callback_t *activate,
io_callback_t *deactivate, void *context);
+#define io_loop_context_add_callbacks(ctx, activate, deactivate, context) \
+ io_loop_context_add_callbacks(ctx, 1 ? (io_callback_t *)activate : \
+ CALLBACK_TYPECHECK(activate, void (*)(typeof(context))) + \
+ CALLBACK_TYPECHECK(deactivate, void (*)(typeof(context))), \
+ (io_callback_t *)deactivate, context)
/* Remove callbacks with the given callbacks and context. */
void io_loop_context_remove_callbacks(struct ioloop_context *ctx,
io_callback_t *activate,
io_callback_t *deactivate, void *context);
+#define io_loop_context_remove_callbacks(ctx, activate, deactivate, context) \
+ io_loop_context_remove_callbacks(ctx, 1 ? (io_callback_t *)activate : \
+ CALLBACK_TYPECHECK(activate, void (*)(typeof(context))) + \
+ CALLBACK_TYPECHECK(deactivate, void (*)(typeof(context))), \
+ (io_callback_t *)deactivate, context)
/* Returns the current context set to ioloop. */
struct ioloop_context *io_loop_get_current_context(struct ioloop *ioloop);
user_trans_stats_get(suser, &stats_r->trans_stats);
}
-static void stats_io_activate(void *context)
+static void stats_io_activate(struct mail_user *user)
{
- struct mail_user *user = context;
struct stats_user *suser = STATS_USER_CONTEXT(user);
if (stats_user_count == 1) {
session_stats_refresh(user);
}
-static void stats_io_deactivate(void *context)
+static void stats_io_deactivate(struct mail_user *user)
{
- struct mail_user *user = context;
struct stats_user *suser = STATS_USER_CONTEXT(user);
unsigned int last_update_secs;