/** Example Javascript config
 *
 * This example demonstrates how you can use Javascript code and NodeJS
 * to script configuration files.
 *
 * To use this configuration, run the following command:
 *
 *    villas node <(node /etc/villas/node/js/config.js)
 *
 * Author: Steffen Vogel <post@steffenvogel.de>
 * SPDX-FileCopyrightText: 2014-2023 Institute for Automation of Complex Power Systems, RWTH Aachen University
 * SPDX-License-Identifier: Apache-2.0
 *********************************************************************************/

var glob   = require('glob');
var global = require(__dirname + '/global.js')

/* List of plugins
 *
 * Additional node-types, hooks or formats
 * can be loaded by compiling them into a shared library and
 * adding them to this list
 */
global.plugins = glob.sync('/usr?(/local)/share/villas/node/plugins/*.so');

global.nodes = {
	loopback_node : {
		vectorize : 1,
		type : "loopback",	// A loopback node will receive exactly the same data which has been sent to it.
					// The internal implementation is based on queue.
		queuelen : 10240	// The queue length of the internal queue which buffers the samples.
	},
	socket_node : {
		type : "socket",

		local : "*:12000",
		remote : "127.0.0.1:12000"
	}
};

global.paths = [
	{
		in : "test_node",
		out : "socket_node",
		queuelen : 10000
	},
	{
		in : "socket_node",
		out : "test_node",
		queuelen : 10000,
		hooks : [
			{
				type : "stats",
				warmup : 100,
				verbose : true,
				format : "human",
				output : "./stats.log"
			},
			{
				type : "convert"
			}
		]
	}
];

// Convert Javascript Object to JSON string
var json = JSON.stringify(global, null, 4);

// Some log message
process.stderr.write('Configuration file successfully generated\n');

// Print JSON to stdout
process.stdout.write(json);