commit 2771060a37d31386f499d0e2be29f6394716a26b
parent 6876380ed73fbe15090764691fa10165873aeae4
Author: Christian Blättler <blatc2@bfh.ch>
Date: Wed, 6 Mar 2024 08:07:24 +0100
add serialization switch based on version field
Diffstat:
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
@@ -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
@@ -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