/** * MIT License (MIT) * * Copyright (c) <2014> <Rapp Project EU> * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. * * * Authors: Konstantinos Panayiotou * Contact: klpanagi@gmail.com * */ /** * @module * @description Server-side worker thread utility functions. */ var path = require('path'); var util = require('util'); var webService = require(path.join(__dirname, '../webService/webService.js')); /** * @function setWorkerName * @description Sets worker's name in global scope object. * * @param wName - Worker's name to assign; */ var setWorkerName = function(wName) { if( ! wName ){ throw new Error("Invalid set of Arguments. Missing wName!"); } global.WORKER = global.WORKER || {name: wName, services: []}; }; /** * @function launchSvcAll * @description Launch all services registered to the worker thread calling * this method */ var launchSvcAll = function(){ var workerSvc = ENV.WORKERS[ WORKER.name ].services; var workerDir = path.dirname(path.join( ENV.PATHS.PKG_DIR, ENV.WORKERS[ WORKER.name ].path)); for( var i in workerSvc ){ var svcParams = ENV.SERVICES[ workerSvc[i] ]; if( svcParams.launch ){ var srcPath = ''; if( svcParams.path ){ srcPath = path.join( ENV.PATHS.SERVICES_DIR, svcParams.path); } else{ srcPath = path.join( ENV.PATHS.SERVICES_DIR, svcParams.name, 'svc.js' ); } var svcImpl = require(srcPath); var options = { name: svcParams.name, urlName: svcParams.url_name, workerName: WORKER.name, anonymous: svcParams.anonymous, namespace: svcParams.namespace, timeout: svcParams.timeout, rosSrvName: svcParams.ros_srv_name || "", ros_bridge: svcParams.ros_bridge || false, auth: svcParams.authentication || false }; var svc = new webService(svcImpl, options); // Register this service to the service handler svc.register(); } } }; // Global worker thread space hack!! global.ENV = require( path.join(__dirname, '../..', 'env.js') ); exports.setWorkerName = setWorkerName; exports.launchSvcAll = launchSvcAll;