From: Siavash Tavakoli Date: Mon, 27 Sep 2021 10:46:07 +0000 (+0100) Subject: lib-sql: Add "wait" vfunc X-Git-Tag: 2.3.17~28 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5a04189c76aefcdba41d7b4486c92d00fdec7a2d;p=thirdparty%2Fdovecot%2Fcore.git lib-sql: Add "wait" vfunc To be used in backends that support async operations. On deinit dicts should wait for results and then exit. --- diff --git a/src/lib-sql/sql-api-private.h b/src/lib-sql/sql-api-private.h index 1148bf6462..192afb6f90 100644 --- a/src/lib-sql/sql-api-private.h +++ b/src/lib-sql/sql-api-private.h @@ -70,6 +70,7 @@ struct sql_db_vfuncs { const char **error); void (*deinit)(struct sql_db *db); void (*unref)(struct sql_db *db); + void (*wait) (struct sql_db *db); enum sql_db_flags (*get_flags)(struct sql_db *db); diff --git a/src/lib-sql/sql-api.c b/src/lib-sql/sql-api.c index abb264024d..919513b352 100644 --- a/src/lib-sql/sql-api.c +++ b/src/lib-sql/sql-api.c @@ -814,6 +814,13 @@ struct event_passthrough *sql_transaction_finished_event(struct sql_transaction_ set_name(SQL_TRANSACTION_FINISHED); } +void sql_wait(struct sql_db *db) +{ + if (db->v.wait != NULL) + db->v.wait(db); +} + + struct sql_result sql_not_connected_result = { .v = { sql_result_not_connected_free, diff --git a/src/lib-sql/sql-api.h b/src/lib-sql/sql-api.h index 9a74fc6452..7936b98628 100644 --- a/src/lib-sql/sql-api.h +++ b/src/lib-sql/sql-api.h @@ -243,4 +243,7 @@ void sql_update_stmt_get_rows(struct sql_transaction_context *ctx, struct sql_statement **stmt, unsigned int *affected_rows); +/* Wait for SQL query results. */ +void sql_wait(struct sql_db *db); + #endif