mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-21 17:15:10 +00:00
Added blockEvent handler
Signed-off-by: sapthasurendran <saptha.surendran@ibm.com>
This commit is contained in:
parent
804f4a6468
commit
550e95f091
3 changed files with 28 additions and 6 deletions
|
|
@ -12,7 +12,10 @@ import {
|
||||||
TxEventHandler,
|
TxEventHandler,
|
||||||
TxEventHandlerFactory,
|
TxEventHandlerFactory,
|
||||||
Wallets,
|
Wallets,
|
||||||
Network
|
Network,
|
||||||
|
BlockListener,
|
||||||
|
BlockEvent,
|
||||||
|
TransactionEvent,
|
||||||
} from 'fabric-network';
|
} from 'fabric-network';
|
||||||
import { Redis } from 'ioredis';
|
import { Redis } from 'ioredis';
|
||||||
import * as config from './config';
|
import * as config from './config';
|
||||||
|
|
@ -25,7 +28,6 @@ import {
|
||||||
TransactionNotFoundError,
|
TransactionNotFoundError,
|
||||||
} from './errors';
|
} from './errors';
|
||||||
|
|
||||||
|
|
||||||
export const getNetwork = async (gateway: Gateway): Promise<Network> => {
|
export const getNetwork = async (gateway: Gateway): Promise<Network> => {
|
||||||
const network = await gateway.getNetwork(config.channelName);
|
const network = await gateway.getNetwork(config.channelName);
|
||||||
return network;
|
return network;
|
||||||
|
|
@ -354,3 +356,21 @@ const isDuplicateTransaction = (error: {
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const blockEventHandler = (redis: Redis): BlockListener => {
|
||||||
|
const blockListner = async (event: BlockEvent) => {
|
||||||
|
logger.debug('Block event received ');
|
||||||
|
const transEvents: Array<TransactionEvent> = event.getTransactionEvents();
|
||||||
|
|
||||||
|
for (const transEvent of transEvents) {
|
||||||
|
if (transEvent && transEvent.isValid) {
|
||||||
|
logger.debug(
|
||||||
|
'Remove transation with txnId %s',
|
||||||
|
transEvent.transactionId
|
||||||
|
);
|
||||||
|
await clearTransactionDetails(redis, transEvent.transactionId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return blockListner;
|
||||||
|
};
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,10 @@
|
||||||
* SPDX-License-Identifier: Apache-2.0
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { Contract } from 'fabric-network';
|
import { Contract, Network } from 'fabric-network';
|
||||||
import { Redis } from 'ioredis';
|
import { Redis } from 'ioredis';
|
||||||
import * as config from './config';
|
import * as config from './config';
|
||||||
import { startRetryLoop } from './fabric';
|
import { startRetryLoop, blockEventHandler } from './fabric';
|
||||||
import { logger } from './logger';
|
import { logger } from './logger';
|
||||||
import { createServer } from './server';
|
import { createServer } from './server';
|
||||||
|
|
||||||
|
|
@ -14,6 +14,8 @@ async function main() {
|
||||||
|
|
||||||
const contract: Contract = app.get('contracts').contract;
|
const contract: Contract = app.get('contracts').contract;
|
||||||
const redis: Redis = app.get('redis');
|
const redis: Redis = app.get('redis');
|
||||||
|
const network: Network = app.get('network');
|
||||||
|
await network.addBlockListener(blockEventHandler(redis));
|
||||||
startRetryLoop(contract, redis);
|
startRetryLoop(contract, redis);
|
||||||
|
|
||||||
app.listen(config.port, () => {
|
app.listen(config.port, () => {
|
||||||
|
|
|
||||||
|
|
@ -51,10 +51,10 @@ export const createServer = async (): Promise<Application> => {
|
||||||
|
|
||||||
const gateway = await getGateway();
|
const gateway = await getGateway();
|
||||||
const contracts = await getContracts(gateway);
|
const contracts = await getContracts(gateway);
|
||||||
const network = await getNetwork(gateway)
|
const network = await getNetwork(gateway);
|
||||||
app.set('contracts', contracts);
|
app.set('contracts', contracts);
|
||||||
app.set('redis', redis);
|
app.set('redis', redis);
|
||||||
app.set('network',network)
|
app.set('network', network);
|
||||||
|
|
||||||
// Health routes
|
// Health routes
|
||||||
app.get('/ready', (_req, res) =>
|
app.get('/ready', (_req, res) =>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue