summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/wallet.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2024-02-27 23:23:36 +0100
committerFlorian Dold <florian@dold.me>2024-02-27 23:23:36 +0100
commit6584d9e054faf9a927708f1f7f51bcbed7873afb (patch)
tree128dbdef9dbcbe7ed8e7aa90fb4e5fd2980e480c /packages/taler-wallet-core/src/wallet.ts
parent2c86a9ec76b60ad065da65e5d2adfd1a79189ae6 (diff)
downloadwallet-core-6584d9e054faf9a927708f1f7f51bcbed7873afb.tar.gz
wallet-core-6584d9e054faf9a927708f1f7f51bcbed7873afb.tar.bz2
wallet-core-6584d9e054faf9a927708f1f7f51bcbed7873afb.zip
observability
Diffstat (limited to 'packages/taler-wallet-core/src/wallet.ts')
-rw-r--r--packages/taler-wallet-core/src/wallet.ts65
1 files changed, 50 insertions, 15 deletions
diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts
index c3aa68303..ea3c4bb83 100644
--- a/packages/taler-wallet-core/src/wallet.ts
+++ b/packages/taler-wallet-core/src/wallet.ts
@@ -204,6 +204,7 @@ import {
ObservableDbAccess,
ObservableHttpClientLibrary,
ObservableTaskScheduler,
+ observeTalerCrypto,
} from "./observable-wrappers.js";
import {
confirmPay,
@@ -1363,6 +1364,40 @@ export function getVersion(wex: WalletExecutionContext): WalletCoreVersion {
return result;
}
+export function getObservedWalletExecutionContext(
+ ws: InternalWalletState,
+ cancellationToken: CancellationToken,
+ oc: ObservabilityContext,
+) {
+ const wex: WalletExecutionContext = {
+ ws,
+ cancellationToken,
+ cryptoApi: observeTalerCrypto(ws.cryptoApi, oc),
+ db: new ObservableDbAccess(ws.db, oc),
+ http: new ObservableHttpClientLibrary(ws.http, oc),
+ taskScheduler: new ObservableTaskScheduler(ws.taskScheduler, oc),
+ oc,
+ };
+ return wex;
+}
+
+export function getNormalWalletExecutionContext(
+ ws: InternalWalletState,
+ cancellationToken: CancellationToken,
+ oc: ObservabilityContext,
+) {
+ const wex: WalletExecutionContext = {
+ ws,
+ cancellationToken,
+ cryptoApi: ws.cryptoApi,
+ db: ws.db,
+ http: ws.http,
+ taskScheduler: ws.taskScheduler,
+ oc,
+ };
+ return wex;
+}
+
/**
* Handle a request to the wallet-core API.
*/
@@ -1372,28 +1407,28 @@ async function handleCoreApiRequest(
id: string,
payload: unknown,
): Promise<CoreApiResponse> {
- const oc: ObservabilityContext = {
- observe(evt) {
- if (ws.config.testing.emitObservabilityEvents) {
+ let wex: WalletExecutionContext;
+ let oc: ObservabilityContext;
+
+ if (ws.config.testing.emitObservabilityEvents) {
+ oc = {
+ observe(evt) {
ws.notify({
type: NotificationType.RequestObservabilityEvent,
operation,
requestId: id,
event: evt,
});
- }
- },
- };
+ },
+ };
- const wex: WalletExecutionContext = {
- ws,
- cancellationToken: CancellationToken.CONTINUE,
- cryptoApi: ws.cryptoApi,
- db: new ObservableDbAccess(ws.db, oc),
- http: new ObservableHttpClientLibrary(ws.http, oc),
- taskScheduler: new ObservableTaskScheduler(ws.taskScheduler, oc),
- oc,
- };
+ wex = getObservedWalletExecutionContext(ws, CancellationToken.CONTINUE, oc);
+ } else {
+ oc = {
+ observe(evt) {},
+ };
+ wex = getNormalWalletExecutionContext(ws, CancellationToken.CONTINUE, oc);
+ }
try {
await ws.ensureWalletDbOpen();