From 2771060a37d31386f499d0e2be29f6394716a26b Mon Sep 17 00:00:00 2001 From: Christian Blättler Date: Wed, 6 Mar 2024 08:07:24 +0100 Subject: add serialization switch based on version field --- src/backend/taler-merchant-httpd_contract.c | 32 ++++++++++++++++++++++++++++- src/backend/taler-merchant-httpd_contract.h | 6 ++++++ 2 files changed, 37 insertions(+), 1 deletion(-) 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 @@ -22,6 +22,26 @@ #include #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, @@ -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 -- cgit v1.2.3