Skip to content

Commit ef2f6d9

Browse files
author
Minggang Wang
committed
Add debug log for the JavaScript code
By leveraging the debug module, we add some useful information to the JavaScript code, which could help you dignose the program when you are debugging. If you want to show all modules, please run: >DEBUG=rclnodejs* node example/subscription-multiarray-example.js Or if you just want to show a specific module, like the subscription, run: >DEBUG=rclnodejs:subscription node example/subscription-multiarray-example.js Fix #53
1 parent e41105a commit ef2f6d9

File tree

6 files changed

+23
-2
lines changed

6 files changed

+23
-2
lines changed

index.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ const packages = require('./rosidl_gen/packages.js');
2121
const loader = require('./lib/interface_loader.js');
2222
const QoS = require('./lib/qos.js');
2323
const validator = require('./lib/validator.js');
24+
const debug = require('debug')('rclnodejs');
2425

2526
function inherits(target, source) {
2627
let properties = Object.getOwnPropertyNames(source.prototype);
@@ -59,6 +60,7 @@ let rcl = {
5960
let node = new rclnodejs.ShadowNode();
6061

6162
node.init(nodeName, namespace);
63+
debug('Finish initializing node, name = %s and namespace = %s.', nodeName, namespace);
6264
node.handle = handle;
6365
this._nodes.push(node);
6466
return node;
@@ -72,9 +74,12 @@ let rcl = {
7274
init(...args) {
7375
return new Promise((resolve, reject) => {
7476
if (!this._initialized) {
77+
debug('Begin to generate JavaScript code from ROS IDL files.');
7578
// TODO(Kenny): introduce other policy to save the amout of time of doing message generation
7679
generator.generateAll(false).then(() => {
80+
debug('Finish generating.');
7781
rclnodejs.init(args);
82+
debug('Finish initializing rcl with args = %o.', args);
7883
this._initialized = true;
7984
resolve();
8085
}).catch((e) => {
@@ -147,8 +152,10 @@ let rcl = {
147152
regenerateAll() {
148153
// This will trigger to regererate all the JS structs used for messages and services,
149154
// to overwrite the existing ones although they have been created.
155+
debug('Begin to regenerate JavaScript code from ROS IDL files.');
150156
return new Promise((resolve, reject) => {
151157
generator.generateAll(true).then(() => {
158+
debug('Finish regenerating.');
152159
resolve();
153160
}).catch((e) => {
154161
reject(e);

lib/client.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
const rclnodejs = require('bindings')('rclnodejs');
1818
const Entity = require('./entity.js');
19+
const debug = require('debug')('rclnodejs:client');
1920

2021
/**
2122
* @class - Class representing a Client in ROS
@@ -59,6 +60,7 @@ class Client extends Entity {
5960

6061
let rawROSRequest = rclRequest.serialize();
6162
this._sequenceNumber = rclnodejs.sendRequest(this._handle, rawROSRequest);
63+
debug('Client has sent a request.');
6264
this._callback = callback;
6365
}
6466

@@ -68,6 +70,7 @@ class Client extends Entity {
6870

6971
processResponse(response) {
7072
this._response.deserialize(response);
73+
debug('Client has received response from service.');
7174
this._callback(this._response);
7275
}
7376

lib/node.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ const Subscription = require('./subscription.js');
2121
const Client = require('./client.js');
2222
const Service = require('./service.js');
2323
const QoS = require('./qos.js');
24+
const debug = require('debug')('rclnodejs:node');
2425

2526
/**
2627
* @class - Class representing a Node in ROS
@@ -115,8 +116,8 @@ class Node {
115116

116117
let timerHandle = rclnodejs.createTimer(period);
117118
let timer = new Timer(timerHandle, period, callback);
119+
debug('Finish creating timer, period = %d.', period);
118120
this._timers.push(timer);
119-
120121
return timer;
121122
}
122123

@@ -134,6 +135,7 @@ class Node {
134135
}
135136

136137
let publisher = Publisher.createPublisher(this.handle, typeClass, topic, qos);
138+
debug('Finish creating publisher, topic = %s.', topic);
137139
this._publishers.push(publisher);
138140
return publisher;
139141
}
@@ -164,6 +166,7 @@ class Node {
164166
}
165167

166168
let subscription = Subscription.createSubscription(this.handle, typeClass, topic, callback, qos);
169+
debug('Finish creating subscription, topic = %s.', topic);
167170
this._subscriptions.push(subscription);
168171
return subscription;
169172
}
@@ -182,6 +185,7 @@ class Node {
182185
}
183186

184187
let client = Client.createClient(this.handle, serviceName, typeClass, qos);
188+
debug('Finish creating client, service = %s.', serviceName);
185189
this._clients.push(client);
186190
return client;
187191
}
@@ -212,6 +216,7 @@ class Node {
212216
}
213217

214218
let service = Service.createService(this.handle, serviceName, typeClass, callback, qos);
219+
debug('Finish creating service, service = %s.', serviceName);
215220
this._services.push(service);
216221
return service;
217222
}

lib/publisher.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
'use strict';
1616

1717
const rclnodejs = require('bindings')('rclnodejs');
18-
const debug = require('debug')('rcl_publisher');
18+
const debug = require('debug')('rclnodejs:publisher');
1919
const Entity = require('./entity.js');
2020

2121
/**
@@ -53,6 +53,7 @@ class Publisher extends Entity {
5353
let rawRosMessage = rclMessage.serialize();
5454
if (rawRosMessage) {
5555
rclnodejs.publish(this._handle, rawRosMessage);
56+
debug('Message has been published.');
5657
} else {
5758
debug('Message was not published:', rclMessage);
5859
}

lib/service.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
const rclnodejs = require('bindings')('rclnodejs');
1818
const Entity = require('./entity.js');
19+
const debug = require('debug')('rclnodejs:service');
1920

2021
/**
2122
* @class - Class representing a Service in ROS
@@ -32,10 +33,12 @@ class Service extends Entity {
3233

3334
processRequest(headerHandle, request) {
3435
this._request.deserialize(request);
36+
debug('Service has received a request from client.');
3537
let response = this._callback(this._request, new this._typeClass.Response());
3638

3739
let rawROSResponse = response.serialize();
3840
rclnodejs.sendResponse(this._handle, rawROSResponse, headerHandle);
41+
debug('Service has processed the request and sent the response.');
3942
}
4043

4144
static createService(nodeHandle, serviceName, typeClass, callback, qos) {

lib/subscription.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
const rclnodejs = require('bindings')('rclnodejs');
1818
const Entity = require('./entity.js');
19+
const debug = require('debug')('rclnodejs:subscription');
1920

2021
/**
2122
* @class - Class representing a Subscription in ROS
@@ -32,6 +33,7 @@ class Subscription extends Entity {
3233

3334
processResponse(msg) {
3435
this._message.deserialize(msg);
36+
debug('Message received.');
3537
this._callback(this._message);
3638
}
3739

0 commit comments

Comments
 (0)