Sha256: f2a5d66d4366a79af59ff84d500d1f93a7d2566025e3eadd57c307c4701d1926
Contents?: true
Size: 1.46 KB
Versions: 26
Compression:
Stored size: 1.46 KB
Contents
import logger from "./logger" // Responsible for ensuring channel subscribe command is confirmed, retrying until confirmation is received. // Internal class, not intended for direct user manipulation. class SubscriptionGuarantor { constructor(subscriptions) { this.subscriptions = subscriptions this.pendingSubscriptions = [] } guarantee(subscription) { if(this.pendingSubscriptions.indexOf(subscription) == -1){ logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`) this.pendingSubscriptions.push(subscription) } else { logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`) } this.startGuaranteeing() } forget(subscription) { logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`) this.pendingSubscriptions = (this.pendingSubscriptions.filter((s) => s !== subscription)) } startGuaranteeing() { this.stopGuaranteeing() this.retrySubscribing() } stopGuaranteeing() { clearTimeout(this.retryTimeout) } retrySubscribing() { this.retryTimeout = setTimeout(() => { if (this.subscriptions && typeof(this.subscriptions.subscribe) === "function") { this.pendingSubscriptions.map((subscription) => { logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`) this.subscriptions.subscribe(subscription) }) } } , 500) } } export default SubscriptionGuarantor
Version data entries
26 entries across 26 versions & 1 rubygems