node-disposable
Overview
This module provides an object with finalizer and IDisposable interface via .Net for NodeJS.
Usage
Create a class with finalizer
// TypeScript
import Disposable = require('node-disposable');
class Object extends Disposable.Object {
public invoke() {
this.__throwIfDisposed();
console.log('invoke');
}
public __finalize(disposing) {
console.log('finalize: ' + (disposing ? 'dispose' : 'exit'));
}
}
export = Object;
+ Import 'node-disposable' module.
+ Extend 'node-disposable'.Object class.
+ Override __finalize method and implement resource disposing codes in it.
__finalize method is called on either calling dispose method, object is GC'd or process.exit event is fired.
Dispose
var obj = new Object();
obj.dispose(); // __finalize will be called.
Using
import Disposable = require('node-disposable');
Disposable.using(new Object(), obj => {
// codes using Object
});
// Object is disposed.
Note
Finalizer won't run when the node process is terminated by SIGINT. To handle this problem, call finalize method on SIGINT.
import Disposable = require('node-disposable');
process.on('SIGINT', function(){
Disposable.finalize();
process.exit(-1);
});
API
class Object
$3
Dispose object.
$3
Finalizer method.
disposing:true Dispose method called.
disposing:false process.exit.
$3
Throws an error if object is disposed.
$3
ture if object is disposed.
function using(obj: IDisposable, callback: obj => any)
Execute callback with an obj. The obj will be disposed after the callback.
function finalize()
Execute finalizers of all objects allocated.
function register(obj:IDisposable)
Register IDisposable object that will be handled as a disposable object.
interface IDisposable
$3
Changelog
$3
+ Fix bugs on finalize.
$3
+ Fix bugs.
$3
+ Fix npm repositry
$3
+ Add register function.
$3
+ Finalizer will be called when the object is GC'd.
+ Add finalize function.
$3
+ initial release.