Skip to content

Commit 66d1b57

Browse files
committed
done. tested. works.
1 parent 0e7e4b5 commit 66d1b57

File tree

2 files changed

+26
-11
lines changed

2 files changed

+26
-11
lines changed

index.js

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
const netUtils = require('./utils/network_utils.js');
2323
const msgUtils = require('./utils/message_utils.js');
2424
const messages = require('./utils/messages.js');
25+
const util = require('util');
2526
msgUtils.findMessageFiles();
2627

2728
// these will be modules, they depend on logger which isn't initialized yet
@@ -72,6 +73,16 @@ function _validateNodeName(nodeName) {
7273
return nodeName;
7374
}
7475

76+
/**
77+
* Appends a random string of numeric characters to the end
78+
* of the node name. Follows rospy logic.
79+
* @param nodeName {string} string to anonymize
80+
* @return {string} anonymized nodeName
81+
*/
82+
function _anonymizeNodeName(nodeName) {
83+
return util.format('%s_%s_%s', nodeName, process.pid, Date.now());
84+
}
85+
7586
let Rosnodejs = {
7687
/**
7788
* Initializes a ros node for this process. Only one ros node can exist per process
@@ -81,19 +92,23 @@ let Rosnodejs = {
8192
* @return {Promise} resolved when connection to master is established
8293
*/
8394
initNode(nodeName, options) {
95+
options = options || {};
96+
if (options.anonymous) {
97+
nodeName = _anonymizeNodeName(nodeName);
98+
console.log('anonymous node name ' + nodeName);
99+
}
100+
84101
nodeName = _validateNodeName(nodeName);
85102

86103
if (rosNode !== null) {
87104
if (nodeName === rosNode.getNodeName()) {
88105
return Promise.resolve(this.getNodeHandle());
89106
}
90107
// else
91-
throw new Error('Unable to initialize node [' + nodeName + '] - node ['
108+
throw new Error('Unable to initialize node [' + nodeName + '] - node ['
92109
+ rosNode.getNodeName() + '] already exists');
93110
}
94111

95-
// FIXME: validate nodeName -- MUST START WITH '/'
96-
options = options || {};
97112
let rosMasterUri = process.env.ROS_MASTER_URI;
98113
if (options.rosMasterUri) {
99114
rosMasterUri = options.rosMasterUri;
@@ -170,7 +185,7 @@ let Rosnodejs = {
170185
}
171186
var count = types.length;
172187
return new Promise((resolve, reject) => {
173-
types.forEach(function(type) {
188+
types.forEach(function(type) {
174189
messages.getMessage(type, function(error, Message) {
175190
if (--count == 0) {
176191
resolve();
@@ -179,15 +194,15 @@ let Rosnodejs = {
179194
});
180195
});
181196
},
182-
197+
183198
/** create message classes for all the given types */
184199
_useServices(types) {
185200
if (!types || types.length == 0) {
186201
return Promise.resolve();
187202
}
188203
var count = types.length;
189204
return new Promise((resolve, reject) => {
190-
types.forEach(function(type) {
205+
types.forEach(function(type) {
191206
messages.getServiceRequest(type, function() {
192207
messages.getServiceResponse(type, function() {
193208
if (--count == 0) {

utils/message_utils.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ let MessageUtils = {
184184
loadMessagePackage(msgPackage) {
185185
const indexPath = messagePackagePathMap[msgPackage];
186186
if (indexPath === undefined) {
187-
throw new Error('Unable to find message package %s', msgPackage);
187+
throw new Error('Unable to find message package ' + msgPackage);
188188
}
189189
try {
190190
messagePackageMap[msgPackage] = require(indexPath);
@@ -225,17 +225,17 @@ let MessageUtils = {
225225
let type = parts[1];
226226
return messagePackage.srv[type];
227227
} else {
228-
let request =
228+
let request =
229229
messages.getFromRegistry(rosDataType, ["srv", "Request"]);
230-
let response =
230+
let response =
231231
messages.getFromRegistry(rosDataType, ["srv", "Response"]);
232232
if (request && response) {
233-
return {
233+
return {
234234
Request: request,
235235
Response: response
236236
};
237237
} else {
238-
console.error('Unable to find service package %s: %j %j',
238+
console.error('Unable to find service package %s: %j %j',
239239
msgPackage, request, response);
240240
throw new Error();
241241
}

0 commit comments

Comments
 (0)