9.0.0 • Published 2 years ago

aedes-cached-persistence v9.0.0

Weekly downloads
1,675
License
MIT
Repository
github
Last release
2 years ago

aedes-cached-persistence

npm.io Dependencies Status devDependencies Status Known Vulnerabilities Coverage Status NPM version NPM downloads

Abstract class to write an Aedes 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

  • CachedPersistence()
  • instance.subscriptionsByTopic()
  • instance.cleanSubscriptions()
  • instance.destroy()

Implement another persistence

Inheritance

In order to reuse aedes-cached-persistence, you need to:

const CachedPersistence = require('aedes-cached-persistence')

// if you need http://npm.im/aedes-packet, it is available
// from this module as well
// const { Packet } = CachedPersistence

class MyPersistence extends CachedPersistence {
    constructor(opts) {
       super(opts)
    }
    addSubscriptions(client, subs, cb) {
        // ..persistence specific implementation..
        // call super._addedSubscriptions when you are done
        super._addedSubscriptions(client, subs.map(mapSub), cb)
    }
    removeSubscriptions(client, subs, cb) {
        // ..persistence specific implementation..
        // call super._removedSubscriptions when you are done
        super._removedSubscriptions(client, subs.map(mapSub), cb)
    }
}

function mapSub (sub) {
  return { 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') // invented module

abs({
  test: test,
  buildEmitter: require('mymqemitter'), // optional
  persistence: function build (cb) {
    clean(function (err) {
      cb(err, myperst())
    })
  }
})

License

MIT

9.0.0

2 years ago

8.1.1

3 years ago

8.1.0

4 years ago

8.0.0

5 years ago

7.0.0

5 years ago

6.0.0

7 years ago

5.1.0

7 years ago

5.0.1

7 years ago

5.0.0

7 years ago

4.0.0

7 years ago

3.0.0

7 years ago

2.1.0

7 years ago

2.0.0

8 years ago

1.0.0

8 years ago