2.0.1 • Published 3 years ago

balise v2.0.1

Weekly downloads
3
License
ISC
Repository
github
Last release
3 years ago

node-balise

Node.js Addon for interacting with the Balise engine.

INSTALL

Balise must be installed and the BALISE_LIBDIR environment variable should point to the folder containing the Balise dynamic library.

$ npm install balise

USE

var bal = require("balise");

Setting Balise global options

bal.setGlobalOption("defaultCoding", "UTF-8");

Creating a new Balise process

var myProcess = new bal.BaliseProcess();

Loading source code / source files / binary files

myProcess.loadSourceCode("function concat(a, b) { return a + \"_\" + b; }");
myProcess.loadSourceFile("myBaliseFile.bal");
myProcess.loadBinaryFile("myOtherBaliseFile.bba");

Setting and getting global variables

Values have one of the following types: boolean, number, string or null.

myProcess.loadSourceCode("var global;");

myProcess.setGlobalVariable("global", -7.3);
var value = myProcess.getGlobalVariable("global"); // returns -7.3

Calling functions

Parameters and return values have one of the following types: boolean, number, string, Buffer or null.

When the Balise function returns a String object, it is converted to a string. In order to have it converted to a Buffer, the executeFunctionReturningBuffer method must be used.

myProcess.loadSourceCode("function identity(obj) { return obj; }");
myProcess.loadSourceCode("function sum(x, y) { return x + y; }");

var value;

value = myProcess.executeFunction("identity", true); // returns true
value = myProcess.executeFunction("identity", -7.3); // returns -7.3
value = myProcess.executeFunction("identity", "abc"); // returns "abc"
value = myProcess.executeFunctionReturningBuffer("identity", Buffer.from([0x45, 0x76, 0x00, 0x61])); // returns <Buffer 45 76 00 61>
value = myProcess.executeFunction("identity", null); // returns null

value = myProcess.executeFunction("sum", 7, 3); // returns 10
value = myProcess.executeFunction("sum", "abc", "def"); // returns "abcdef"

Using Balise threads (experimental)

A given function can be called multiple times in parallel (with different parameters).

First, the MLTHRD_Handler.bal file must be included in the Balise source file containing the function to call.

// File: myBaliseFile.bal
#include "[...]/node_modules/balise/bal/MLTHRD_Handler.bal"

function sumSlow(x, y)
{
    sleep(3);
    return x + y;
}

Then, a Balise process can be created with multiple threads and the functions can be called in parallel.

// All the options are facultative (the example shows the default values)
var options = {
    debugMode: false,
    waitReplyTimeout: 1,
    sleepTimeWhileBusy: 0.010,
    maxPhysicalMemoryUsage: 100
};

// Creation of a Balise process managing 3 threads (each one contains the functions in the "myBaliseFile.bal" file)
var myProcess = bal.createBaliseProcessParallel(3, "myBaliseFile.bal", options);

// Execution of 3 invocations in parallel
var res = myProcess.executeFunctionParallel("sumSlow", [[3, 7], [-7, 3.7], ["abc", "дФ"]]); // returns [10, -3.3, "abcдФ"]

// The threads are killed to relieve the Balise engine (the Balise process cannot be used anymore)
myProcess.killThreads();
2.0.1

3 years ago

2.0.0

3 years ago

1.2.1

5 years ago

1.2.0

5 years ago

1.1.1

6 years ago

1.1.0

7 years ago

1.0.6

8 years ago

1.0.5

8 years ago

1.0.4

8 years ago

1.0.3

8 years ago

1.0.2

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago