UNPKG

rclnodejs

Version:
138 lines (123 loc) 4.33 kB
// // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. 'use strict'; const { Parameter } = require('./parameter.js'); /** * NodeOptions specify configuration choices during the * node instantiation process. * @class */ class NodeOptions { /** * Create a new instance with default property values. * @constructor * @param {boolean} [startParameterServices=true] * @param {array} [parameterOverrides=[]] * @param {boolean} [automaticallyDeclareParametersFromOverrides=false] * @param {boolean} [startTypeDescriptionService=true] */ constructor( startParameterServices = true, parameterOverrides = [], automaticallyDeclareParametersFromOverrides = false, startTypeDescriptionService = true ) { this._startParameterServices = startParameterServices; this._parameterOverrides = parameterOverrides; this._automaticallyDeclareParametersFromOverrides = automaticallyDeclareParametersFromOverrides; this._startTypeDescriptionService = startTypeDescriptionService; } /** * Get the startParameterServices option. * Default value = true; * @returns {boolean} - */ get startParameterServices() { return this._startParameterServices; } /** * Set startParameterServices. * @param {boolean} startFlag - True indicates for a node to start it's parameter_service. */ set startParameterServices(startFlag) { this._startParameterServices = startFlag; } /** * Get the parameterOverrides. * @return {Parameter[]} - An array of Parameters that serve as overrides for a node's default * parameters. Default = empty array []. */ get parameterOverrides() { return this._parameterOverrides; } /** * Set the Parameters that will serve to override a node's default parameter settings. * Setting to null, reinitializes the parameterOverrides to an empty array. * @param {Parameter|Parameter[]} parameters - A single parameter or parameter[]. * Default is an empty array. */ set parameterOverrides(parameters = []) { let povalue = parameters; if (!povalue) { povalue = []; } else if (povalue instanceof Parameter) { // a single parameter povalue = [povalue]; } else if (!Array.isArray(parameters)) { throw TypeError('Expected Parameter[]'); } this._parameterOverrides = povalue; } /** * Get the automaticallyDeclareParametersFromOverrides. * * @returns {boolean} - True indicates that a node should declare parameters from * it's parameter-overrides */ get automaticallyDeclareParametersFromOverrides() { return this._automaticallyDeclareParametersFromOverrides; } /** * Set automaticallyDeclareParametersFromOverrides. * * @param {boolean} declareParamsFlag - When true, a node will declare parameters from all * parameter-overrides. */ set automaticallyDeclareParametersFromOverrides(declareParamsFlag) { this._automaticallyDeclareParametersFromOverrides = declareParamsFlag; } /** * Get the startTypeDescriptionService option, only available for ROS2 > Humble. * Default value = true; * @returns {boolean} - true if the type description service is enabled. */ get startTypeDescriptionService() { return this._startTypeDescriptionService; } /** * Set startTypeDescriptionService, only available for ROS2 > Humble * @param {boolean} willStartTypeDescriptionService */ set startTypeDescriptionService(willStartTypeDescriptionService) { this._startTypeDescriptionService = willStartTypeDescriptionService; } /** * Return an instance configured with default options. * @returns {NodeOptions} - An instance with default values. */ static get defaultOptions() { return new NodeOptions(); } } module.exports = NodeOptions;