summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2022-04-30 13:46:35 +0200
committerChristian Grothoff <christian@grothoff.org>2022-04-30 13:46:35 +0200
commitfb8349a7e3088f1ca0215ecebcfef553098d7ab9 (patch)
tree3e693f90d4e1071b7c79a55536780ab145726979
parent8e4969eb663dbb2242b0137b1138a8e29610de18 (diff)
downloadexchange-fb8349a7e3088f1ca0215ecebcfef553098d7ab9.tar.gz
exchange-fb8349a7e3088f1ca0215ecebcfef553098d7ab9.tar.bz2
exchange-fb8349a7e3088f1ca0215ecebcfef553098d7ab9.zip
-add notifications for purse events
-rw-r--r--src/exchange/taler-exchange-httpd_purses_deposit.c15
-rw-r--r--src/exchange/taler-exchange-httpd_purses_get.c8
-rw-r--r--src/exchange/taler-exchange-httpd_purses_merge.c17
3 files changed, 37 insertions, 3 deletions
diff --git a/src/exchange/taler-exchange-httpd_purses_deposit.c b/src/exchange/taler-exchange-httpd_purses_deposit.c
index d29487af5..95c5d52f6 100644
--- a/src/exchange/taler-exchange-httpd_purses_deposit.c
+++ b/src/exchange/taler-exchange-httpd_purses_deposit.c
@@ -26,6 +26,7 @@
#include <jansson.h>
#include <microhttpd.h>
#include <pthread.h>
+#include "taler_dbevents.h"
#include "taler_json_lib.h"
#include "taler_mhd_lib.h"
#include "taler-exchange-httpd_purses_deposit.h"
@@ -276,6 +277,20 @@ deposit_transaction (void *cls,
return GNUNET_DB_STATUS_HARD_ERROR;
}
}
+ {
+ struct TALER_PurseEventP rep = {
+ .header.size = htons (sizeof (rep)),
+ .header.type = htons (TALER_DBEVENT_EXCHANGE_PURSE_DEPOSITED),
+ .purse_pub = *pcc->purse_pub
+ };
+
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Notifying about purse deposit\n");
+ TEH_plugin->event_notify (TEH_plugin->cls,
+ &rep.header,
+ NULL,
+ 0);
+ }
return qs;
}
diff --git a/src/exchange/taler-exchange-httpd_purses_get.c b/src/exchange/taler-exchange-httpd_purses_get.c
index ca24adbe9..b9cd9c43f 100644
--- a/src/exchange/taler-exchange-httpd_purses_get.c
+++ b/src/exchange/taler-exchange-httpd_purses_get.c
@@ -332,9 +332,6 @@ TEH_handler_purses_get (struct TEH_RequestContext *rc,
gc->purse_expiration));
}
- // FIXME: compare amount to deposited amount;
- // if below, set 'deposit_timestamp' to zero!
-
if (GNUNET_TIME_absolute_is_future (gc->timeout) &&
( ((gc->wait_for_merge) &&
GNUNET_TIME_absolute_is_never (gc->merge_timestamp.abs_time)) ||
@@ -358,6 +355,11 @@ TEH_handler_purses_get (struct TEH_RequestContext *rc,
>,
gc->purse_expiration))
dt = gc->purse_expiration;
+ if (0 <
+ TALER_amount_cmp (&gc->amount,
+ &gc->deposited))
+ dt = GNUNET_TIME_UNIT_ZERO_TS;
+
// FIXME: add exchange signature!?
// FIXME: return amount?
res = TALER_MHD_REPLY_JSON_PACK (
diff --git a/src/exchange/taler-exchange-httpd_purses_merge.c b/src/exchange/taler-exchange-httpd_purses_merge.c
index eb264f486..12a2008f5 100644
--- a/src/exchange/taler-exchange-httpd_purses_merge.c
+++ b/src/exchange/taler-exchange-httpd_purses_merge.c
@@ -26,6 +26,7 @@
#include <jansson.h>
#include <microhttpd.h>
#include <pthread.h>
+#include "taler_dbevents.h"
#include "taler_json_lib.h"
#include "taler_mhd_lib.h"
#include "taler-exchange-httpd_purses_merge.h"
@@ -307,6 +308,22 @@ merge_transaction (void *cls,
GNUNET_free (partner_url);
return GNUNET_DB_STATUS_HARD_ERROR;
}
+
+ {
+ struct TALER_PurseEventP rep = {
+ .header.size = htons (sizeof (rep)),
+ .header.type = htons (TALER_DBEVENT_EXCHANGE_PURSE_MERGED),
+ .purse_pub = *pcc->purse_pub
+ };
+
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Notifying about purse merge\n");
+ TEH_plugin->event_notify (TEH_plugin->cls,
+ &rep.header,
+ NULL,
+ 0);
+ }
+
return qs;
}