diff options
author | Christian Grothoff <christian@grothoff.org> | 2016-01-24 16:52:39 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2016-01-24 16:52:39 +0100 |
commit | 5c58c43609609e6871c7105c7ca8fc3d794dca04 (patch) | |
tree | c0c2a63b78765bef45ee8181d1dcbf35d64c3073 /src | |
parent | 9aa323ca7bcf1567f6ecf98cf73b5691ade1b816 (diff) |
more work on wire plugins
Diffstat (limited to 'src')
-rw-r--r-- | src/include/taler_wire_plugin.h | 2 | ||||
-rw-r--r-- | src/wire/plugin_wire_template.c | 12 | ||||
-rw-r--r-- | src/wire/plugin_wire_test.c | 24 |
3 files changed, 30 insertions, 8 deletions
diff --git a/src/include/taler_wire_plugin.h b/src/include/taler_wire_plugin.h index 00bcc42e9..62930450c 100644 --- a/src/include/taler_wire_plugin.h +++ b/src/include/taler_wire_plugin.h @@ -123,7 +123,7 @@ struct TALER_WIRE_Plugin (*prepare_wire_transfer) (void *cls, const json_t *wire, const struct TALER_Amount *amount, - const void *wtid, + const struct TALER_WireTransferIdentifierRawP *wtid, TALER_WIRE_PrepareTransactionCallback ptc, void *ptc_cls); diff --git a/src/wire/plugin_wire_template.c b/src/wire/plugin_wire_template.c index 8abcca8c9..baf0ee7d5 100644 --- a/src/wire/plugin_wire_template.c +++ b/src/wire/plugin_wire_template.c @@ -60,7 +60,15 @@ static int template_amount_round (void *cls, struct TALER_Amount *amount) { - GNUNET_break (0); + struct TemplateClosure *tc = cls; + + if (0 != strcasecmp (amount->currency, + tc->currency)) + { + GNUNET_break (0); + return GNUNET_SYSERR; + } + GNUNET_break (0); // not implemented return GNUNET_SYSERR; } @@ -94,7 +102,7 @@ static struct TALER_WIRE_PrepareHandle * template_prepare_wire_transfer (void *cls, const json_t *wire, const struct TALER_Amount *amount, - const void *wtid, + const struct TALER_WireTransferIdentifierRawP *wtid, TALER_WIRE_PrepareTransactionCallback ptc, void *ptc_cls) { diff --git a/src/wire/plugin_wire_test.c b/src/wire/plugin_wire_test.c index 72c87ef55..1ea856fd1 100644 --- a/src/wire/plugin_wire_test.c +++ b/src/wire/plugin_wire_test.c @@ -60,8 +60,21 @@ static int test_amount_round (void *cls, struct TALER_Amount *amount) { - GNUNET_break (0); - return GNUNET_SYSERR; + struct TestClosure *tc = cls; + uint32_t delta; + + if (0 != strcasecmp (amount->currency, + tc->currency)) + { + GNUNET_break (0); + return GNUNET_SYSERR; + } + /* 'test' method supports 1/100 of the unit currency, i.e. 0.01 CUR */ + delta = amount->fraction % (TALER_AMOUNT_FRAC_BASE / 100); + if (0 == delta) + return GNUNET_NO; + amount->fraction -= delta; + return GNUNET_OK; } @@ -74,8 +87,9 @@ test_amount_round (void *cls, static int test_wire_validate (const json_t *wire) { - GNUNET_break (0); - return GNUNET_SYSERR; + GNUNET_break (0); /* FIXME: we still need to define the + proper wire format for 'test' */ + return GNUNET_YES; } @@ -94,7 +108,7 @@ static struct TALER_WIRE_PrepareHandle * test_prepare_wire_transfer (void *cls, const json_t *wire, const struct TALER_Amount *amount, - const void *wtid, + const struct TALER_WireTransferIdentifierRawP *wtid, TALER_WIRE_PrepareTransactionCallback ptc, void *ptc_cls) { |