Have ideas to improve npm?Join in the discussion! »

    aedes-cached-persistence

    8.1.1 • Public • Published

    aedes-cached-persistence

    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

    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')
    
    // if you need http://npm.im/aedes-packet, it is available
    // from this module as well
    // var Packet = CachedPersistence.Packet
    
    function MyPersistence (opts) {
      if (!(this instanceof MyPersistence)) {
        return new MyPersistence(opts)
      }
      // initialize your data here
    
      CachedPersistence.call(this, opts)
    }
    
    util.inherits(MyPersistence, CachedPersistence)
    
    MyPersistence.prototype.addSubscriptions = function (client, subs, cb) {
      // ..persistence specific implementation..
    
      // call this._addedSubscriptions when you are done
      this._addedSubscriptions(client, subsObjs, cb)
    }
    
    MyPersistence.prototype.removeSubscriptions = function (client, subs, cb) {
      // ..persistence specific implementation..
    
      // call this._addedSubscriptions when you are done
      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') // invented module
    
    abs({
      test: test,
      buildEmitter: require('mymqemitter'), // optional
      persistence: function build (cb) {
        clean(function (err) {
          cb(err, myperst())
        })
      }
    })

    License

    MIT

    Install

    npm i aedes-cached-persistence

    DownloadsWeekly Downloads

    1,630

    Version

    8.1.1

    License

    MIT

    Unpacked Size

    19 kB

    Total Files

    8

    Last publish

    Collaborators

    • avatar
    • avatar
    • avatar
    • avatar