binance
Version:
Professional Node.js & JavaScript SDK for Binance REST APIs & WebSockets, with TypeScript & end-to-end tests.
80 lines • 3.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ListenKeyStateCache = void 0;
const logger_1 = require("../logger");
class ListenKeyStateCache {
constructor(customLogger) {
this.listenKeyStateStore = {};
this.logger = customLogger || logger_1.DefaultLogger;
}
getListenKeyState(listenKey, market) {
const state = this.listenKeyStateStore[listenKey];
if (state) {
return state;
}
// this.logger.trace(
// `--> getListenKeyState(${market}) -> CREATED NEW listenKeyState for ${listenKey}`,
// );
this.listenKeyStateStore[listenKey] = {
market,
lastKeepAlive: 0,
keepAliveTimer: undefined,
keepAliveRetryTimer: undefined,
keepAliveFailures: 0,
};
return this.listenKeyStateStore[listenKey];
}
clearUserDataKeepAliveTimer(listenKey) {
const state = this.listenKeyStateStore[listenKey];
if (!state) {
// this.logger.trace(
// `clearUserDataKeepAliveTimer() -> No listenKeyState found for ${listenKey}`,
// );
return;
}
if (state.keepAliveTimer) {
// this.logger.trace(
// `----> clearUserDataKeepAliveTimer() -> CLEARED old listenKey keepAlive INTERVAL timer for ${listenKey}`,
// );
clearInterval(state.keepAliveTimer);
}
else {
// this.logger.trace(
// `----> clearUserDataKeepAliveTimer() -> No listen key keepAlive INTERVAL timer to clear for ${listenKey}`,
// );
}
if (state.keepAliveRetryTimer) {
// this.logger.trace(
// `----> clearUserDataKeepAliveTimer() -> CLEARED old listen key keepAlive RETRY timer for ${listenKey}`,
// );
clearTimeout(state.keepAliveRetryTimer);
}
else {
// this.logger.trace(
// `----> clearUserDataKeepAliveTimer() -> No keepAlive RETRY timer to clear for ${listenKey}`,
// );
}
}
/**
* Remove all state for listen key. Clears timers too, if any exist on this listen key store.
*/
clearAllListenKeyState(listenKey) {
// this.logger.trace(
// `clearAllListenKeyState() -> Checking whether we need to clear timers and remove state for ${listenKey}`,
// );
this.clearUserDataKeepAliveTimer(listenKey);
if (this.listenKeyStateStore[listenKey]) {
// this.logger.trace(
// `-> clearAllListenKeyState() -> CLEARED ALL listen key state for ${listenKey}`,
// );
}
else {
// this.logger.trace(
// `-> clearAllListenKeyState() -> No listen key state to clear ${listenKey}`,
// );
}
delete this.listenKeyStateStore[listenKey];
}
}
exports.ListenKeyStateCache = ListenKeyStateCache;
//# sourceMappingURL=listen-key-state-cache.js.map