Sen descrición

Luis Figueiredo 5378291c4b more readme %!s(int64=8) %!d(string=hai) anos
bundles 4d6757df37 Updating hci %!s(int64=8) %!d(string=hai) anos
doc 1168630f2d Preparation to make this research project public %!s(int64=8) %!d(string=hai) anos
lib 4d6757df37 Updating hci %!s(int64=8) %!d(string=hai) anos
test 4d6757df37 Updating hci %!s(int64=8) %!d(string=hai) anos
.gitignore 4219b2a253 test git %!s(int64=8) %!d(string=hai) anos
.tern-project f0a151f54d Creating new independent event manager, with context and channels %!s(int64=8) %!d(string=hai) anos
README.md 5378291c4b more readme %!s(int64=8) %!d(string=hai) anos
index.js 4d6757df37 Updating hci %!s(int64=8) %!d(string=hai) anos
package.json 1f7b7d965d Updated missing packages in package.json %!s(int64=8) %!d(string=hai) anos

README.md

hci

Introduction:

Researching a way to bring java alike OSGi to nodejs for hot swappable modules.
This is not an intention to replace nodejs modules but a way to swap certain areas of the application such as bringing new versions without a restart

Usage:

Bundle:
A bundle should export bundleStart, or bundleActivator object

This specific bundle it will receive messages from core-shell bundle, execute a shell command and print output
Placing the bundle in {app path}/bundles/shell-test/index.js

var log = require('hlogger').createLogger('shell-test');
var child = require('child_process');

function bundleStart(context) {

	log.info("Command provider installed");

	// Create a bash and transport commands
	context.events
		.channel('core-shell')
		.after('cmd',(req,res,e) => {
			if(e.count != 0) return;
			e.wait();	
			var shcmd = req.cmd + " " + req.args.join(" ");
			var proc = child.exec(shcmd);
			proc.stdout.pipe(res);
			proc.stderr.pipe(process.stderr);
			proc.on('close',function() {
			e.done();
		});			
	});
}
module.exports.bundleStart = bundleStart;

Main app:

var BundleManager = require('node-hci');   // or path to node-hci since is not published in npm yet
// This will load bundles from the {app path}/bundles
var manager = new BundleManager({runPath: __dirname + "/bundles"});
manager.loadDefaultBundles();

Running examples:

git clone http://dev.hexasoftware.com/stdio/node-hci
cd node-hci
npm install
node test/hci-usecase

And monitor bundle should be accessible by http://127.0.0.1:3500/monitor

Cli bundle list
bundles

Web based bundle listing
bundles