1.0.2 • Published 10 years ago

sea v1.0.2

Weekly downloads
11
License
MIT
Repository
github
Last release
10 years ago

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.

1.0.2

10 years ago

0.0.3

11 years ago

0.0.2

11 years ago

0.0.1

11 years ago

0.0.0

12 years ago