@node-lightning/wire
Version:
Lightning Network Wire Protocol
43 lines • 1.69 kB
JavaScript
;
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