fabric-network
Version:
SDK for writing node.js applications to interact with Hyperledger Fabric. This package encapsulates the APIs to connect to a Fabric network, submit transactions and perform queries against the ledger.
108 lines • 6.28 kB
JavaScript
/*
* Copyright 2018, 2019 IBM All Rights Reserved.
*
* SPDX-License-Identifier: Apache-2.0
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.NONE = exports.PREFER_MSPID_SCOPE_ANYFORTX = exports.PREFER_MSPID_SCOPE_ALLFORTX = exports.NETWORK_SCOPE_ANYFORTX = exports.NETWORK_SCOPE_ALLFORTX = exports.MSPID_SCOPE_ANYFORTX = exports.MSPID_SCOPE_ALLFORTX = void 0;
const allfortxstrategy_1 = require("./allfortxstrategy");
const anyfortxstrategy_1 = require("./anyfortxstrategy");
const transactioneventhandler_1 = require("./transactioneventhandler");
function getOrganizationPeers(network) {
const mspId = network.getGateway().getIdentity().mspId;
return network.getChannel().getEndorsers(mspId);
}
function getNetworkPeers(network) {
return network.getChannel().getEndorsers();
}
/**
* @typedef DefaultEventHandlerStrategies
* @memberof module:fabric-network
* @property {module:fabric-network.TxEventHandlerFactory} MSPID_SCOPE_ALLFORTX Listen for transaction commit
* events from all peers in the client identity's organization. If the client identity's organization has no peers,
* this strategy will fail.
* The [submitTransaction]{@link module:fabric-network.Contract#submitTransaction} function will wait until successful
* events are received from <em>all</em> currently connected peers (minimum 1).
* @property {module:fabric-network.TxEventHandlerFactory} MSPID_SCOPE_ANYFORTX Listen for transaction commit
* events from all peers in the client identity's organization. If the client identity's organization has no peers,
* this strategy will fail.
* The [submitTransaction]{@link module:fabric-network.Contract#submitTransaction} function will wait until a successful
* event is received from <em>any</em> peer.
* @property {module:fabric-network.TxEventHandlerFactory} NETWORK_SCOPE_ALLFORTX Listen for transaction commit
* events from all peers in the network.
* The [submitTransaction]{@link module:fabric-network.Contract#submitTransaction} function will wait until successful
* events are received from <em>all</em> currently connected peers (minimum 1).
* @property {module:fabric-network.TxEventHandlerFactory} NETWORK_SCOPE_ANYFORTX Listen for transaction commit
* events from all peers in the network.
* The [submitTransaction]{@link module:fabric-network.Contract#submitTransaction} function will wait until a
* successful event is received from <em>any</em> peer.
* @property {module:fabric-network.TxEventHandlerFactory} PREFER_MSPID_SCOPE_ALLFORTX Listen for transaction commit
* events from all peers in the client identity's organization. If the client identity's organization has no peers, listen
* for transaction commit events from all peers in the network.
* The [submitTransaction]{@link module:fabric-network.Contract#submitTransaction} function will wait until successful
* events are received from <em>all</em> currently connected peers (minimum 1).
* @property {module:fabric-network.TxEventHandlerFactory} PREFER_MSPID_SCOPE_ANYFORTX Listen for transaction commit
* events from all peers in the client identity's organization. If the client identity's organization has no peers, listen
* for transaction commit events from all peers in the network.
* The [submitTransaction]{@link module:fabric-network.Contract#submitTransaction} function will wait until a
* successful event is received from <em>any</em> peer.
* @property {module:fabric-network.TxEventHandlerFactory} NONE Do not wait for any commit events.
* The [submitTransaction]{@link module:fabric-network.Contract#submitTransaction} function will return immediately
* after successfully sending the transaction to the orderer.
*/
const MSPID_SCOPE_ALLFORTX = (transactionId, network) => {
const eventStrategy = new allfortxstrategy_1.AllForTxStrategy(getOrganizationPeers(network));
return new transactioneventhandler_1.TransactionEventHandler(transactionId, network, eventStrategy);
};
exports.MSPID_SCOPE_ALLFORTX = MSPID_SCOPE_ALLFORTX;
const MSPID_SCOPE_ANYFORTX = (transactionId, network) => {
const eventStrategy = new anyfortxstrategy_1.AnyForTxStrategy(getOrganizationPeers(network));
return new transactioneventhandler_1.TransactionEventHandler(transactionId, network, eventStrategy);
};
exports.MSPID_SCOPE_ANYFORTX = MSPID_SCOPE_ANYFORTX;
const NETWORK_SCOPE_ALLFORTX = (transactionId, network) => {
const eventStrategy = new allfortxstrategy_1.AllForTxStrategy(getNetworkPeers(network));
return new transactioneventhandler_1.TransactionEventHandler(transactionId, network, eventStrategy);
};
exports.NETWORK_SCOPE_ALLFORTX = NETWORK_SCOPE_ALLFORTX;
const NETWORK_SCOPE_ANYFORTX = (transactionId, network) => {
const eventStrategy = new anyfortxstrategy_1.AnyForTxStrategy(getNetworkPeers(network));
return new transactioneventhandler_1.TransactionEventHandler(transactionId, network, eventStrategy);
};
exports.NETWORK_SCOPE_ANYFORTX = NETWORK_SCOPE_ANYFORTX;
const PREFER_MSPID_SCOPE_ALLFORTX = (transactionId, network) => {
let peers = getOrganizationPeers(network);
if (peers.length === 0) {
peers = getNetworkPeers(network);
}
const eventStrategy = new allfortxstrategy_1.AllForTxStrategy(peers);
return new transactioneventhandler_1.TransactionEventHandler(transactionId, network, eventStrategy);
};
exports.PREFER_MSPID_SCOPE_ALLFORTX = PREFER_MSPID_SCOPE_ALLFORTX;
const PREFER_MSPID_SCOPE_ANYFORTX = (transactionId, network) => {
let peers = getOrganizationPeers(network);
if (peers.length === 0) {
peers = getNetworkPeers(network);
}
const eventStrategy = new anyfortxstrategy_1.AnyForTxStrategy(peers);
return new transactioneventhandler_1.TransactionEventHandler(transactionId, network, eventStrategy);
};
exports.PREFER_MSPID_SCOPE_ANYFORTX = PREFER_MSPID_SCOPE_ANYFORTX;
const noOpEventHandler = {
startListening: async () => {
// No-op
},
waitForEvents: async () => {
// No-op
},
cancelListening: () => {
// No-op
}
};
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const NONE = (transactionId, network) => {
return noOpEventHandler;
};
exports.NONE = NONE;
//# sourceMappingURL=defaulteventhandlerstrategies.js.map
;