diff options
author | Christian Grothoff <christian@grothoff.org> | 2018-10-21 20:52:26 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2018-10-21 20:52:26 +0200 |
commit | 4ad39b6b73a9dd2716855e08c67a905d02a1cf97 (patch) | |
tree | 332a90050c2758e3ae23a98c811c87f17e963914 /src/auditor/taler-auditor-httpd_db.h | |
parent | 7e426913cee72ef5e65289f5374b0e17274bf5aa (diff) | |
download | exchange-4ad39b6b73a9dd2716855e08c67a905d02a1cf97.tar.xz |
first skeleton of /deposit-confirmation API implementation; not yet complete, cannot work as-is, see FIXMEs
Diffstat (limited to 'src/auditor/taler-auditor-httpd_db.h')
-rw-r--r-- | src/auditor/taler-auditor-httpd_db.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/auditor/taler-auditor-httpd_db.h b/src/auditor/taler-auditor-httpd_db.h new file mode 100644 index 000000000..9aad86c12 --- /dev/null +++ b/src/auditor/taler-auditor-httpd_db.h @@ -0,0 +1,72 @@ +/* + This file is part of TALER + Copyright (C) 2014-2018 GNUnet e.V. + + TALER is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + TALER is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> +*/ +/** + * @file auditor/taler-auditor-httpd_db.h + * @brief High-level (transactional-layer) database operations for the auditor + * @author Chrisitan Grothoff + */ +#ifndef TALER_AUDITOR_HTTPD_DB_H +#define TALER_AUDITOR_HTTPD_DB_H + +#include <microhttpd.h> +#include "taler_auditordb_plugin.h" + +/** + * Function implementing a database transaction. Runs the transaction + * logic; IF it returns a non-error code, the transaction logic MUST + * NOT queue a MHD response. IF it returns an hard error, the + * transaction logic MUST queue a MHD response and set @a mhd_ret. IF + * it returns the soft error code, the function MAY be called again to + * retry and MUST not queue a MHD response. + * + * @param cls closure + * @param connection MHD request which triggered the transaction + * @param session database session to use + * @param[out] mhd_ret set to MHD response status for @a connection, + * if transaction failed (!) + * @return transaction status + */ +typedef enum GNUNET_DB_QueryStatus +(*TAH_DB_TransactionCallback)(void *cls, + struct MHD_Connection *connection, + struct TALER_AUDITORDB_Session *session, + int *mhd_ret); + + +/** + * Run a database transaction for @a connection. + * Starts a transaction and calls @a cb. Upon success, + * attempts to commit the transaction. Upon soft failures, + * retries @a cb a few times. Upon hard or persistent soft + * errors, generates an error message for @a connection. + * + * @param connection MHD connection to run @a cb for + * @param name name of the transaction (for debugging) + * @param[out] set to MHD response code, if transaction failed + * @param cb callback implementing transaction logic + * @param cb_cls closure for @a cb, must be read-only! + * @return #GNUNET_OK on success, #GNUNET_SYSERR on failure + */ +int +TAH_DB_run_transaction (struct MHD_Connection *connection, + const char *name, + int *mhd_ret, + TAH_DB_TransactionCallback cb, + void *cb_cls); + + +#endif +/* TALER_AUDITOR_HTTPD_DB_H */ |