diff options
author | Özgür Kesim <oec-taler@kesim.org> | 2022-10-14 18:56:59 +0200 |
---|---|---|
committer | Özgür Kesim <oec-taler@kesim.org> | 2022-10-14 18:56:59 +0200 |
commit | 054e157af8c768062dd0a8e66614da18407fca28 (patch) | |
tree | fcd792c6ed7f4384e9b29f8e200f62837cd00f1e /src/extensions/extensions.c | |
parent | 956e3c3065ddb762dbe01fd720cc5ef403232564 (diff) |
WIP: policy_details handling continued
- policy details generated on deposit/batch-deposit requests
- insert or update of policy details in the DB
- accumulation of amounts of multiple deposits for the same
policy_details
Diffstat (limited to 'src/extensions/extensions.c')
-rw-r--r-- | src/extensions/extensions.c | 83 |
1 files changed, 21 insertions, 62 deletions
diff --git a/src/extensions/extensions.c b/src/extensions/extensions.c index cfc10940..2ed973d9 100644 --- a/src/extensions/extensions.c +++ b/src/extensions/extensions.c @@ -357,31 +357,27 @@ TALER_extensions_load_manifests ( * Policy related */ -static char *fulfilment2str[] = { - [TALER_PolicyFulfilmentPending] = "Pending", - [TALER_PolicyFulfilmentSuccessTransfer] = "SuccessTransfer", - [TALER_PolicyFulfilmentSuccessRefreshable] = "SuccessRefreshable", - [TALER_PolicyFulfilmentFailureTransfer] = "FailureTransfer", - [TALER_PolicyFulfilmentFailureRefreshable] = "FailureRefreshable", - [TALER_PolicyFulfilmentTimeoutTransfer] = "TimeoutTransfer", - [TALER_PolicyFulfilmentTimeoutRefreshable] = "TimeoutRefreshable", +static char *fulfillment2str[] = { + [TALER_PolicyFulfillmentReady] = "Ready", + [TALER_PolicyFulfillmentSuccess] = "Success", + [TALER_PolicyFulfillmentFailure] = "Failure", + [TALER_PolicyFulfillmentTimeout] = "Timeout", + [TALER_PolicyFulfillmentInsufficient] = "Insufficient", }; const char * -TALER_policy_fulfilment_state_str ( - enum TALER_PolicyFulfilmentState state) +TALER_policy_fulfillment_state_str ( + enum TALER_PolicyFulfillmentState state) { - GNUNET_assert (TALER_PolicyFulfilmentStateMax >= state); - return fulfilment2str[state]; + GNUNET_assert (TALER_PolicyFulfillmentStateCount > state); + return fulfillment2str[state]; } enum GNUNET_GenericReturnValue -TALER_extensions_extract_meta_data_from_policy_details ( - const json_t *policy_details, - struct GNUNET_HashCode *serial, - struct GNUNET_TIME_Timestamp *deadline, - enum TALER_PolicyFulfilmentState *state_on_deadline, +TALER_extensions_create_policy_details ( + const json_t *policy_options, + struct TALER_PolicyDetails *details, const char **error_hint) { enum GNUNET_GenericReturnValue ret; @@ -391,14 +387,14 @@ TALER_extensions_extract_meta_data_from_policy_details ( *error_hint = NULL; - if ((NULL == policy_details) || - (! json_is_object (policy_details))) + if ((NULL == policy_options) || + (! json_is_object (policy_options))) { *error_hint = "invalid policy object"; return GNUNET_SYSERR; } - jtype = json_object_get (policy_details, "type"); + jtype = json_object_get (policy_options, "type"); if (NULL == jtype) { *error_hint = "no type in policy object"; @@ -414,7 +410,7 @@ TALER_extensions_extract_meta_data_from_policy_details ( extension = TALER_extensions_get_by_name (type); if ((NULL == extension) || - (NULL == extension->parse_policy_details)) + (NULL == extension->create_policy_details)) { GNUNET_break (0); GNUNET_log (GNUNET_ERROR_TYPE_WARNING, @@ -423,50 +419,13 @@ TALER_extensions_extract_meta_data_from_policy_details ( return GNUNET_NO; } - *deadline = GNUNET_TIME_UNIT_FOREVER_TS; - ret = extension->parse_policy_details (policy_details, - serial, - deadline, - state_on_deadline, - error_hint); - - GNUNET_assert ((TALER_PolicyFulfilmentTimeoutRefreshable == - *state_on_deadline) || - (TALER_PolicyFulfilmentTimeoutTransfer == - *state_on_deadline)); - + details->deadline = GNUNET_TIME_UNIT_FOREVER_TS; + ret = extension->create_policy_details (policy_options, + details, + error_hint); return ret; } -struct TALER_PolicyFulfilmentOutcome * -TALER_policy_fulfilment_outcome_new (size_t len) -{ - struct TALER_PolicyFulfilmentOutcome *out; - - out = GNUNET_new (struct TALER_PolicyFulfilmentOutcome); - out->len = len; - out->positions = GNUNET_new_array (len, - struct - TALER_PolicyFulfilmentOutcomePosition); - - return out; -} - - -void -TALER_policy_fulfilment_outcome_free ( - struct TALER_PolicyFulfilmentOutcome *outcome) -{ - if (NULL == outcome) - return; - - if (NULL != outcome->positions) - GNUNET_free (outcome->positions); - - GNUNET_free (outcome); -} - - /* end of extensions.c */ |