Comparing version 1.1.1 to 1.2.0
@@ -9,5 +9,5 @@ | ||
* @param {string} data - raw response data | ||
* @param {object} interp - Tcl interpreter binding | ||
* @param {object} binding - Tcl interpreter binding | ||
*/ | ||
var Result = function ( data, interp ) { | ||
var Result = function ( data, binding ) { | ||
@@ -19,3 +19,3 @@ // update internals | ||
this._interp = interp; | ||
this._binding = binding; | ||
@@ -47,3 +47,3 @@ }; | ||
// sanity checks | ||
if (! this._interp ) { | ||
if (! this._binding ) { | ||
return null; | ||
@@ -54,3 +54,3 @@ } | ||
if ( str && str.length > 0 ) { | ||
return this._interp.toArray( str ); | ||
return this._binding.toArray( str ); | ||
} | ||
@@ -60,3 +60,3 @@ | ||
this._result.raw.length > 0 ) { | ||
return this._interp.toArray( this._result.raw ); | ||
return this._binding.toArray( this._result.raw ); | ||
} | ||
@@ -63,0 +63,0 @@ |
@@ -15,3 +15,3 @@ | ||
// tcl interpreter binding | ||
this._interp = new binding.TclInterp(); | ||
this._binding = new binding.TclBinding(); | ||
@@ -24,5 +24,2 @@ // intialise internals | ||
Tcl.prototype.load = function () { }; | ||
/** | ||
@@ -39,7 +36,9 @@ * Execute a Tcl command using the Tcl Interpreter binding. This is an | ||
this._interp.cmd( cmd, function ( err, data ) { | ||
var self = this; | ||
this._binding.cmd( cmd, function ( err, data ) { | ||
var result = null; | ||
if (! err ) { | ||
result = new Result( data, this._interp ); | ||
result = new Result( data, self._binding ); | ||
} | ||
@@ -57,2 +56,11 @@ | ||
/** | ||
* Alias for {@link Tcl#cmd} | ||
* | ||
* @method | ||
* @see Tcl#cmd | ||
*/ | ||
Tcl.prototype.eval = Tcl.prototype.cmd; | ||
/** | ||
* Execute a Tcl command synchronously using the Tcl Interpreter binding. | ||
@@ -69,3 +77,3 @@ * This will use a shared Tcl Interpreter and can share data between two | ||
try { | ||
return new Result( this._interp.cmdSync( cmd ), this._interp ); | ||
return new Result( this._binding.cmdSync( cmd ), this._binding ); | ||
} catch ( e ) { | ||
@@ -79,2 +87,39 @@ return e; | ||
/** | ||
* Alias for {@link Tcl#cmdSync} | ||
* | ||
* @method | ||
* @see Tcl#cmdSync | ||
*/ | ||
Tcl.prototype.evalSync = Tcl.prototype.cmdSync; | ||
/** | ||
* Add a Tcl command to the asynchronous processing queue. Each command | ||
* added will be executed using a single worker thread outside of the | ||
* main event loop. Each command shares the same worker thread and the | ||
* Tcl interpreter instance and will share states. | ||
* | ||
* @param {string} cmd - command to execute | ||
* @param {Tcl~cmdCallback} callback - callback method to handle | ||
* the response | ||
*/ | ||
Tcl.prototype.queue = function ( cmd, callback ) { | ||
this._binding.queue( cmd, function ( err, data ) { | ||
var result = null; | ||
if (! err ) { | ||
result = new Result( data, this._binding ); | ||
} | ||
if ( callback ) { | ||
callback( err, result ); | ||
} | ||
} ); | ||
}; | ||
/** | ||
* Returns the Tcl Interpreter version | ||
@@ -87,3 +132,3 @@ * | ||
if (! this._version ) { | ||
this._version = this._interp.cmdSync( 'info tclversion' ); | ||
this._version = this._binding.cmdSync( 'info tclversion' ); | ||
} | ||
@@ -90,0 +135,0 @@ |
{ | ||
"name": "tcl", | ||
"version": "1.1.1", | ||
"version": "1.2.0", | ||
"description": "Node.js Tcl binding", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
@@ -26,9 +26,10 @@ node-tcl | ||
You can execute any Tcl command that is supported by the Tcl shell (```tchsh```) | ||
and you can even load native Tcl modeles (```load module.so```), source scripts | ||
You can execute any Tcl command supported by the Tcl shell (```tchsh```) and you | ||
can even load native Tcl modeles (```load module.so```), source scripts | ||
(```source filename.tcl```) and source Tcl libraries (```package require name```). | ||
**Note :** Only synchronous commands preserve states from one call to another. | ||
Asynchronous commands are executed in a separate thread using a new Tcl Interpreter | ||
instance for each call. | ||
**Note :** Asynchronous commands (```cmd``` and ```eval```) are executed usng a | ||
dedicated worker thread using a new Tcl Interpreter instance and comes with the | ||
overhead of creating and destroying a Tcl Interpreter for each call. But these | ||
executions are parallel and useful for batched tasks. | ||
@@ -39,5 +40,10 @@ | ||
// synchronous commands | ||
console.log( tcl.version() ); | ||
console.log( tcl.cmdSync( 'info tclversion' ) ); | ||
console.log( tcl.evalSync( 'info tclversion' ) ); | ||
// asynchronous commands (parallelly executed in decated threads) | ||
tcl.cmd( 'info tclversion', function ( err, result ) { | ||
@@ -47,5 +53,13 @@ console.log( result.data() ); | ||
tcl.cmd( 'info commands', function ( err, result ) { | ||
tcl.eval( 'info commands', function ( err, result ) { | ||
console.log( result.toArray() ); | ||
} ); | ||
// queued asynchronous commands (executed in a shared thread) | ||
tcl.queue( 'set x 0' ); | ||
tcl.queue( 'incr $x', function ( err, result ) { | ||
console.log( result ); | ||
} ); | ||
``` | ||
@@ -52,0 +66,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
285345
17
168
74