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

    seapublic

    Sea

    An object pool for node.js designed for ease of use and resiliency. Unlike many object pooling libraries, Sea has a bounded free list size while still keeping track of the count of outstanding objects. So, if you miss a free() in your code, the objects will be garbage collected as normal.

    Example

    var ObjectPool = require('sea'); // singleton 
     
    function Widget() {
        this.foo = null;
        this.bar = null;
    }
     
    // `clear` is required to be implemented on your type 
    Widget.prototype.clear = function clear() {
        this.foo = null;
        this.bar = null;
    }
     
    // `reset` is required to be implemented on your type 
    Widget.prototype.reset = function reset(foo, bar) {
        this.foo = foo;
        this.bar = bar;
    }
     
    ObjectPool.setup({
        Type: Widget,
        maxSize: 1000
    });
     
    function main(argv) {
        ObjectPool.bootstrap({
            statReceiver: function statReceiver(type, name, value, tags) {
                // type: 'gauge' 
                // name: 'object-pool.free' or 'object-pool.outstanding' 
                // value: int 
                // tags: {name: 'poolname'} 
                // do something with stat, like: 
                statsd[type](name + '.' + tags.name, value);
            },
     
            reportInterval: 5000, // stat reporting interval 
            timers: require('timers'), // or other timers object 
     
            // true will enable the outstanding list to keep track of instances 
            // that aren't getting freed 
            debug: false
        });
     
        var w = Widget.alloc();
        w.reset('some', 'values');
     
        // do things with w 
     
        w.free();
     
        ObjectPool.unref();
    }
     
    if (require.main === module) {
        main(process.argv);
    }
     

    License

    MIT.

    Keywords

    install

    npm i sea

    Downloadslast 7 days

    3

    version

    1.0.2

    license

    MIT

    repository

    github.com

    last publish

    collaborators

    • avatar