summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Blättler <blatc2@bfh.ch>2024-03-06 08:07:24 +0100
committerChristian Blättler <blatc2@bfh.ch>2024-03-06 08:07:24 +0100
commit2771060a37d31386f499d0e2be29f6394716a26b (patch)
tree0efa1a229fe13be3a1060b648a441621772d6df3
parent6876380ed73fbe15090764691fa10165873aeae4 (diff)
downloadmerchant-2771060a37d31386f499d0e2be29f6394716a26b.tar.gz
merchant-2771060a37d31386f499d0e2be29f6394716a26b.tar.bz2
merchant-2771060a37d31386f499d0e2be29f6394716a26b.zip
add serialization switch based on version field
-rw-r--r--src/backend/taler-merchant-httpd_contract.c32
-rw-r--r--src/backend/taler-merchant-httpd_contract.h6
2 files changed, 37 insertions, 1 deletions
diff --git a/src/backend/taler-merchant-httpd_contract.c b/src/backend/taler-merchant-httpd_contract.c
index 35f1f134..1818b6b2 100644
--- a/src/backend/taler-merchant-httpd_contract.c
+++ b/src/backend/taler-merchant-httpd_contract.c
@@ -23,6 +23,26 @@
#include "taler-merchant-httpd_contract.h"
enum GNUNET_GenericReturnValue
+TMH_serialize_contract (const struct TALER_MerchantContract *contract,
+ const struct TMH_MerchantInstance *instance,
+ json_t *exchanges,
+ json_t **out)
+{
+ if (TALER_MCV_V0 == contract->version)
+ {
+ return TMH_serialize_contract_v0 (contract, instance, exchanges, out);
+ }
+
+ if (TALER_MCV_V1 == contract->version)
+ {
+ return TMH_serialize_contract_v1 (contract, instance, exchanges, out);
+ }
+
+ GNUNET_break (0);
+ return GNUNET_SYSERR;
+}
+
+enum GNUNET_GenericReturnValue
TMH_serialize_contract_v0 (const struct TALER_MerchantContract *contract,
const struct TMH_MerchantInstance *instance,
json_t *exchanges,
@@ -172,4 +192,14 @@ TMH_serialize_contract_v0 (const struct TALER_MerchantContract *contract,
}
return GNUNET_OK;
-};
+}
+
+enum GNUNET_GenericReturnValue
+TMH_serialize_contract_v1 (const struct TALER_MerchantContract *contract,
+ const struct TMH_MerchantInstance *instance,
+ json_t *exchanges,
+ json_t **out)
+{
+ // TODO: Implement v1 serializer
+ return GNUNET_SYSERR;
+}
diff --git a/src/backend/taler-merchant-httpd_contract.h b/src/backend/taler-merchant-httpd_contract.h
index d4b174a9..05229ec8 100644
--- a/src/backend/taler-merchant-httpd_contract.h
+++ b/src/backend/taler-merchant-httpd_contract.h
@@ -503,6 +503,8 @@ struct TALER_MerchantContract
* The @a contract can be of v0 or v1.
*
* @param[in] contract contract struct to serialize
+ * @param[in] instance merchant instance for this contract
+ * @param[in] exchanges JSON array of exchanges
* @param[out] out serialized contract as JSON object
* @return #GNUNET_OK on success
* #GNUNET_NO if @a contract was not valid
@@ -510,6 +512,8 @@ struct TALER_MerchantContract
*/
enum GNUNET_GenericReturnValue
TMH_serialize_contract (const struct TALER_MerchantContract *contract,
+ const struct TMH_MerchantInstance *instance,
+ json_t *exchanges,
json_t **out);
enum GNUNET_GenericReturnValue
@@ -520,4 +524,6 @@ TMH_serialize_contract_v0 (const struct TALER_MerchantContract *contract,
enum GNUNET_GenericReturnValue
TMH_serialize_contract_v1 (const struct TALER_MerchantContract *contract,
+ const struct TMH_MerchantInstance *instance,
+ json_t *exchanges,
json_t **out); \ No newline at end of file