mirror of
https://github.com/Permissionless-Software-Foundation/bch-dex.git
synced 2026-09-21 16:52:00 -07:00
60 lines
1.4 KiB
JavaScript
60 lines
1.4 KiB
JavaScript
/*
|
|
This Controller library is concerned with timer-based functions that are
|
|
kicked off periodicially.
|
|
*/
|
|
|
|
// Used to retain scope of 'this', when the scope is lost.
|
|
let _this
|
|
|
|
class TimerControllers {
|
|
constructor (localConfig = {}) {
|
|
// Dependency Injection.
|
|
this.adapters = localConfig.adapters
|
|
if (!this.adapters) {
|
|
throw new Error(
|
|
'Instance of Adapters library required when instantiating Timer Controller libraries.'
|
|
)
|
|
}
|
|
this.useCases = localConfig.useCases
|
|
if (!this.useCases) {
|
|
throw new Error(
|
|
'Instance of Use Cases library required when instantiating Timer Controller libraries.'
|
|
)
|
|
}
|
|
|
|
this.debugLevel = localConfig.debugLevel
|
|
|
|
_this = this
|
|
|
|
this.startTimers()
|
|
}
|
|
|
|
// Start all the time-based controllers.
|
|
startTimers () {
|
|
setInterval(this.gcOrders, 60000 * 5)
|
|
setInterval(this.gcOffers, 60000 * 5)
|
|
}
|
|
|
|
// Garbage Collect the Orders.
|
|
gcOrders () {
|
|
try {
|
|
_this.useCases.order.removeStaleOrders()
|
|
} catch (err) {
|
|
// Do not throw an error. This is a top-level function.
|
|
console.log('Error in timer-controllers.js/gcOrders(): ', err)
|
|
}
|
|
}
|
|
|
|
// Garbage Collect the Offers.
|
|
gcOffers () {
|
|
try {
|
|
_this.useCases.offer.removeStaleOffers()
|
|
} catch (err) {
|
|
// Do not throw an error. This is a top-level function.
|
|
console.log('Error in timer-controllers.js/gcOffers(): ', err)
|
|
}
|
|
}
|
|
}
|
|
|
|
module.exports = TimerControllers
|