Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    aedes-cached-persistencepublic

    aedes-cached-persistence  Build Status

    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')
     
    // 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

    85

    version

    6.0.0

    license

    MIT

    repository

    githubgithub

    last publish

    collaborators

    • avatar