UNPKG

@node-lightning/wire

Version:
75 lines 3.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GossipQueriesReceiver = exports.GossipQueriesReceiverState = void 0; const GossipTimestampFilterMessage_1 = require("../messages/GossipTimestampFilterMessage"); var GossipQueriesReceiverState; (function (GossipQueriesReceiverState) { GossipQueriesReceiverState[GossipQueriesReceiverState["Idle"] = 0] = "Idle"; GossipQueriesReceiverState[GossipQueriesReceiverState["Receiving"] = 1] = "Receiving"; })(GossipQueriesReceiverState = exports.GossipQueriesReceiverState || (exports.GossipQueriesReceiverState = {})); /** * This class is used to activate / deactivate receiving of gossip messages * when the gossip_queries or gossip_queries_ex gossip sync strategies are used. */ class GossipQueriesReceiver { constructor(chainHash, peer, logger) { this.chainHash = chainHash; this.peer = peer; this.logger = logger; this._state = GossipQueriesReceiverState.Idle; this._firstTimestamp = 0xffffffff; this._timestampRange = 0; } get state() { return this._state; } get firstTimestamp() { return this._firstTimestamp; } get timestampRange() { return this._timestampRange; } /** * Deactivates gossip with the remote peer by sending a * gossip_timestamp_filter message that disables broadcast. In particular this * message will use a first_timestamp of uint32_max and a timestamp_range of * 0 to prevent the remote peer from sending information. */ deactivate() { this.logger.info("deactivating gossip"); // reset params this._firstTimestamp = 0xffffffff; this._timestampRange = 0; // send message const msg = new GossipTimestampFilterMessage_1.GossipTimestampFilterMessage(); msg.chainHash = this.chainHash; msg.firstTimestamp = 0xffffffff; msg.timestampRange = 0; this.peer.sendMessage(msg); // change state this._state = GossipQueriesReceiverState.Idle; } /** * Activates gossip with the remote peer by sending a gossip_timestamp_filter * message with the specified first timestamp and range. By default, this * starts gossip with the current timestamp and uint32_max as the range. * @param start * @param range */ activate(start = Math.trunc(Date.now() / 1000), range = 0xffffffff) { this.logger.info("activating gossip for range %d to %d", start, range); // set params this._firstTimestamp = start; this._timestampRange = range; // send message const msg = new GossipTimestampFilterMessage_1.GossipTimestampFilterMessage(); msg.chainHash = this.chainHash; msg.firstTimestamp = start; msg.timestampRange = range; this.peer.sendMessage(msg); // change state this._state = GossipQueriesReceiverState.Receiving; } } exports.GossipQueriesReceiver = GossipQueriesReceiver; //# sourceMappingURL=GossipQueriesReceiver.js.map