UNPKG

@node-lightning/wire

Version:
43 lines 1.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PeerManager = void 0; const core_1 = require("@node-lightning/core"); const MessageType_1 = require("./MessageType"); const PeerState_1 = require("./PeerState"); class PeerManager { constructor(gossipManager) { this.gossipManager = gossipManager; this.peers = []; this.aggregator = new core_1.AsyncStreamAggregator((peer, msg) => this.onPeerMessage(peer, msg)); } addPeer(peer) { this.peers.push(peer); this.aggregator.add(peer); // always attach ready handle peer.on("ready", () => this.onPeerReady(peer)); // if peer is already ready then we'll short circuit that if (peer.state == PeerState_1.PeerState.Ready) { this.onPeerReady(peer); } } onPeerReady(peer) { this.gossipManager.onPeerReady(peer); } async onPeerMessage(peer, msg) { switch (msg.type) { // gossip messages case MessageType_1.MessageType.ChannelAnnouncement: case MessageType_1.MessageType.ChannelUpdate: case MessageType_1.MessageType.NodeAnnouncement: case MessageType_1.MessageType.QueryChannelRange: case MessageType_1.MessageType.ReplyChannelRange: case MessageType_1.MessageType.QueryShortChannelIds: case MessageType_1.MessageType.ReplyShortChannelIdsEnd: { const result = await this.gossipManager.onWireMessage(peer, msg); this.afterPeerMessage(result); } } } } exports.PeerManager = PeerManager; //# sourceMappingURL=PeerManager.js.map