aedes-cached-persistence
Abstract class to write an Aedes [persistence][persistence] with in-process caching of subscriptions.
It implements the API defined by aedes-persistence.
Install
To install aedes-cached--persistence, simply use npm:
npm install aedes-cached-persistence --save
Provided methods
Implement another persistence
Inheritance
In order to reuse aedes-cached-persistence, you need to:
'use strict'
var util = require('util')
var CachedPersistence = require('aedes-cached-persistence')
function MyPersistence (opts) {
if (!(this instanceof MyPersistence)) {
return new MyPersistence(opts)
}
CachedPersistence.call(this, opts)
}
util.inherits(MyPersistence, CachedPersistence)
MyPersistence.prototype.addSubscriptions = function (client, subs, cb) {
this._addedSubscriptions(client, subsObjs, cb)
}
MyPersistence.prototype.removeSubscriptions = function (client, subs, cb) {
this._removedSubscriptions(client, subs.map(subs, client), cb)
}
function toSubObj (sub) {
return {
clientId: this.id,
topic: sub.topic
}
}
Tests
A persistence needs to pass all tests defined in
./abstract.js. You can import and use that test suite
in the following manner:
var test = require('tape').test
var myperst = require('./')
var abs = require('aedes-cached-persistence/abstract')
abs({
test: test,
persistence: myperst
})
If you require some async stuff before returning, a callback is also
supported:
var test = require('tape').test
var myperst = require('./')
var abs = require('aedes-persistence/abstract')
var clean = require('./clean')
abs({
test: test,
buildEmitter: require('mymqemitter'),
persistence: function build (cb) {
clean(function (err) {
cb(err, myperst())
})
}
})
License
MIT