js/nodes/node_feature.js
// let context = 'server/nodes/node_feature'
/**
* @file Node feature: append a feature to a Node instance.
* @author Luc BORIES
* @license Apache-2.0
*/
export default class NodeFeature
{
/**
* Create a Nodefeature instance.
* @abstract
*
* @param {Node} arg_node - node instance.
* @param {string} arg_name - feature name.
*
* @returns {nothing}
*/
constructor(arg_node, arg_name)
{
/**
* Class type flag.
* @type {boolean}
*/
this.is_node_feature = true
/**
* Node instance.
* @type {Node}
*/
this.node = arg_node
/**
* Feature name.
* @type {string}
*/
this.name = arg_name
/**
* Is ready flag.
* @type {boolean}
*/
this.is_ready = false
}
/**
* Get feature name.
*
* @returns {string} - feature name
*/
get_name()
{
return this.name
}
/**
* Load Node settings.
* @abstract
*
* @returns {nothing}
*/
load()
{
this.node.enter_group(':NodeFeature.load()')
this.node.leave_group(':NodeFeature.load()')
}
/**
* Starts node feature.
* @abstract
*
* @returns {nothing}
*/
start()
{
this.node.enter_group(':NodeFeature.start')
this.node.leave_group(':NodeFeature.start')
}
/**
* Stops node feature.
* @abstract
*
* @returns {nothing}
*/
stop()
{
this.node.enter_group(':NodeFeature.stop')
this.node.leave_group(':NodeFeature.stop')
}
}