Skip to content

Commit 491aa54

Browse files
committed
Remove consistency checking
1 parent ee8b751 commit 491aa54

File tree

6 files changed

+5
-128
lines changed

6 files changed

+5
-128
lines changed

lib/client.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ class Client extends Entity {
5858
request instanceof this._typeClass.Request
5959
? request
6060
: new this._typeClass.Request(request);
61-
requestToSend._willCheckConsistency = this._options.willCheckConsistency;
6261

6362
let rawRequest = requestToSend.serialize();
6463
let sequenceNumber = rclnodejs.sendRequest(this._handle, rawRequest);

lib/node.js

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -502,10 +502,6 @@ class Node extends rclnodejs.ShadowNode {
502502
options = Object.assign(options, { isRaw: false });
503503
}
504504

505-
if (options.willCheckConsistency === undefined) {
506-
options = Object.assign(options, { willCheckConsistency: false });
507-
}
508-
509505
return options;
510506
}
511507

@@ -592,7 +588,6 @@ class Node extends rclnodejs.ShadowNode {
592588
* @param {object} options - The options argument used to parameterize the publisher.
593589
* @param {boolean} options.enableTypedArray - The topic will use TypedArray if necessary, default: true.
594590
* @param {QoS} options.qos - ROS Middleware "quality of service" settings for the publisher, default: QoS.profileDefault.
595-
* @param {boolean} options.willCheckConsistency - Pulisher will check the consistancy of the message to be sent, default: false.
596591
* @return {Publisher} - An instance of Publisher.
597592
*/
598593
createPublisher(typeClass, topic, options) {
@@ -695,7 +690,6 @@ class Node extends rclnodejs.ShadowNode {
695690
* @param {object} options - The options argument used to parameterize the client.
696691
* @param {boolean} options.enableTypedArray - The response will use TypedArray if necessary, default: true.
697692
* @param {QoS} options.qos - ROS Middleware "quality of service" settings for the client, default: QoS.profileDefault.
698-
* @param {boolean} options.willCheckConsistency - Client will check the consistancy of the message to be sent, default: false.
699693
* @return {Client} - An instance of Client.
700694
*/
701695
createClient(typeClass, serviceName, options) {
@@ -1696,7 +1690,6 @@ Node.getDefaultOptions = function () {
16961690
isRaw: false,
16971691
qos: QoS.profileDefault,
16981692
contentFilter: undefined,
1699-
willCheckConsistency: false,
17001693
};
17011694
};
17021695

lib/publisher.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ class Publisher extends Entity {
5353
message instanceof this._typeClass
5454
? message
5555
: new this._typeClass(message);
56-
messageToSend._willCheckConsistency = this._options.willCheckConsistency;
5756
let rawMessage = messageToSend.serialize();
5857
rclnodejs.publish(this._handle, rawMessage);
5958
}

rosidl_gen/templates/message.dot

Lines changed: 5 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -268,17 +268,14 @@ const {{=refObjectArrayType}} = StructType({
268268

269269
{{/* Define the wrapper class for the message. */}}
270270
class {{=objectWrapper}} {
271-
constructor(other, willCheckConsistency = false) {
272-
this._initialize(willCheckConsistency);
271+
constructor(other) {
272+
this._initialize();
273273
this._setDefaults();
274274

275275
{{/* Construct `this` from `other`. */}}
276276
if (typeof other === 'object' && other._refObject) {
277277
this._refObject = new {{=refObjectType}}(other._refObject.toObject());
278278
{{~ it.spec.fields :field}}
279-
{{? field.type.isPrimitiveType && !field.type.isArray}}
280-
this._{{=field.name}}Intialized = true;
281-
{{?}}
282279
{{? field.type.isArray}}
283280
this._wrapperFields.{{=field.name}} = {{=getWrapperNameByType(field.type)}}.createArray();
284281
this._wrapperFields.{{=field.name}}.copy(other._wrapperFields.{{=field.name}});
@@ -300,10 +297,7 @@ class {{=objectWrapper}} {
300297
_setDefaults() {
301298
{{~ it.spec.fields :field}}
302299
{{/* Set the flag of initialization. */}}
303-
{{? it.spec.isEmpty}}
304-
this._{{=field.name}}Intialized = true;
305-
{{?? field.type.isPrimitiveType && !field.type.isArray && field.default_value}}
306-
this._{{=field.name}}Intialized = true;
300+
{{? field.type.isPrimitiveType && !field.type.isArray && field.default_value}}
307301
{{? field.type.type === 'string' || field.type.type === 'wstring'}}
308302
this._refObject.{{=field.name}} = "{{=field.default_value.replace(/"/g, '\\"')}}";
309303
{{??}}
@@ -313,14 +307,11 @@ class {{=objectWrapper}} {
313307
this._{{=field.name}}Array = {{=JSON.stringify(field.default_value)}};
314308
{{?? field.type.isPrimitiveType && isTypedArrayType(field.type) && field.default_value}}
315309
this._wrapperFields.{{=field.name}}.fill({{=getTypedArrayName(field.type)}}.from({{=JSON.stringify(field.default_value)}}));
316-
{{??}}
317-
this._{{=field.name}}Intialized = false;
318310
{{?}}
319311
{{~}}
320312
}
321313

322-
_initialize(willCheckConsistency) {
323-
this._willCheckConsistency = willCheckConsistency;
314+
_initialize() {
324315
this._wrapperFields = {};
325316
this._refObject = new {{=refObjectType}}();
326317
{{~ it.spec.fields :field}}
@@ -371,14 +362,6 @@ class {{=objectWrapper}} {
371362

372363
{{ /*Assign values to the ref object. */ }}
373364
freeze(own = false, checkConsistency = false) {
374-
{{~ it.spec.fields :field}}
375-
{{? field.type.isPrimitiveType && !field.type.isArray}}
376-
if (checkConsistency && !this._{{=field.name}}Intialized) {
377-
throw new TypeError('Invalid argument: {{=field.name}} in {{=it.spec.msgName}}');
378-
}
379-
{{?}}
380-
{{~}}
381-
382365
{{~ it.spec.fields :field}}
383366
{{? field.type.isArray && field.type.isPrimitiveType && !isTypedArrayType(field.type) && field.type.isFixedSizeArray}}
384367
{{? field.type.type === 'string'}}
@@ -443,14 +426,12 @@ class {{=objectWrapper}} {
443426
}
444427

445428
serialize() {
446-
this.freeze(/*own=*/false, this._willCheckConsistency);
429+
this.freeze(/*own=*/false);
447430
return this._refObject.ref();
448431
}
449432

450433
deserialize(refObject) {
451434
{{~ it.spec.fields :field}}
452-
this._{{=field.name}}Intialized = true;
453-
454435
{{? field.type.isArray && field.type.isPrimitiveType && field.type.isFixedSizeArray && isTypedArrayType(field.type)}}
455436
this._wrapperFields.{{=field.name}}.fill(refObject.{{=field.name}}.toArray());
456437
{{?? field.type.isArray && field.type.isPrimitiveType && field.type.isFixedSizeArray && !isTypedArrayType(field.type)}}
@@ -547,23 +528,13 @@ class {{=objectWrapper}} {
547528
{{?? !field.type.isPrimitiveType && !field.type.isArray}}
548529
return this._wrapperFields.{{=field.name}};
549530
{{?? !field.type.isArray && field.type.type === 'string' && it.spec.msgName !== 'String'}}
550-
if (!this._{{=field.name}}Intialized) {
551-
return undefined;
552-
}
553531
return this._wrapperFields.{{=field.name}}.data;
554532
{{??}}
555-
if (!this._{{=field.name}}Intialized) {
556-
return undefined;
557-
}
558533
return this._refObject.{{=field.name}};
559534
{{?}}
560535
}
561536

562537
set {{=field.name}}(value) {
563-
{{? field.type.isPrimitiveType && !field.type.isArray}}
564-
this._{{=field.name}}Intialized = true;
565-
{{?}}
566-
567538
{{?field.type.isArray && field.type.isFixedSizeArray}}
568539
if (value.length !== {{=field.type.arraySize}}) {
569540
throw new RangeError('The length of the array must be {{=field.type.arraySize}}.');
@@ -604,7 +575,6 @@ class {{=objectWrapper}} {
604575
this._refObject = new {{=refObjectType}}(refObject.toObject());
605576

606577
{{~ it.spec.fields :field}}
607-
this._{{=field.name}}Intialized = true;
608578
{{? field.type.isArray && field.type.isPrimitiveType && !isTypedArrayType(field.type)}}
609579
refObject.{{=field.name}}.data.length = refObject.{{=field.name}}.size;
610580
for (let index = 0; index < refObject.{{=field.name}}.size; index++) {
@@ -628,7 +598,6 @@ class {{=objectWrapper}} {
628598
this._refObject = new {{=refObjectType}}(other._refObject.toObject());
629599

630600
{{~ it.spec.fields :field}}
631-
this._{{=field.name}}Intialized = true;
632601
{{? field.type.isArray && field.type.isPrimitiveType && !isTypedArrayType(field.type)}}
633602
this._{{=field.name}}Array = other._{{=field.name}}Array.slice();
634603
{{?? !field.type.isPrimitiveType || field.type.isArray || (field.type.type === 'string' && it.spec.msgName !== 'String')}}

test/test-compound-msg-type-check.js

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,6 @@ describe('Compound types', function () {
3434
let msg = new msgColorRGBA();
3535

3636
assert.ok('r' in msg && 'g' in msg && 'b' in msg && 'a' in msg);
37-
assert.deepStrictEqual(typeof msg.r, 'undefined');
38-
assert.deepStrictEqual(typeof msg.g, 'undefined');
39-
assert.deepStrictEqual(typeof msg.b, 'undefined');
40-
assert.deepStrictEqual(typeof msg.a, 'undefined');
4137
});
4238

4339
it('Array', function () {
@@ -60,7 +56,6 @@ describe('Compound types', function () {
6056
assert.ok('frame_id' in header);
6157

6258
assert.deepStrictEqual(typeof header.stamp, 'object');
63-
assert.deepStrictEqual(typeof header.frame_id, 'undefined');
6459
});
6560

6661
it('Complex object', function () {

test/test-security-related.js

Lines changed: 0 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -213,84 +213,6 @@ describe('Fuzzing API calls testing', function () {
213213
node.destroy();
214214
});
215215

216-
it('Inconsistent message type for subscription', function () {
217-
var node = rclnodejs.createNode('node1', '/inconsistent');
218-
const RclString = 'std_msgs/msg/String';
219-
220-
var publisher = node.createPublisher(RclString, 'chatter7', {
221-
willCheckConsistency: true,
222-
});
223-
assertThrowsError(
224-
() => {
225-
publisher.publish({ a: 1 });
226-
},
227-
TypeError,
228-
'Invalid argument',
229-
`Type should be ${RclString}`
230-
);
231-
232-
const String = rclnodejs.require(RclString);
233-
const str = new String();
234-
str.a = 1;
235-
assertThrowsError(
236-
() => {
237-
publisher.publish(str);
238-
},
239-
TypeError,
240-
'Invalid argument',
241-
`Type should be ${RclString}`
242-
);
243-
244-
rclnodejs.spin(node);
245-
node.destroy();
246-
});
247-
248-
it('Inconsistent request data for service', function () {
249-
var node = rclnodejs.createNode('node2', '/inconsistent');
250-
const AddTwoInts = 'example_interfaces/srv/AddTwoInts';
251-
252-
var client = node.createClient(AddTwoInts, 'add_two_ints', {
253-
willCheckConsistency: true,
254-
});
255-
var service = node.createService(
256-
AddTwoInts,
257-
'add_two_ints',
258-
(request, response) => {
259-
assert.throws(
260-
() => {
261-
request.b;
262-
},
263-
Error,
264-
'This should never be reached.'
265-
);
266-
}
267-
);
268-
269-
assertThrowsError(
270-
() => {
271-
client.sendRequest({ a: 1 }, (response) => {});
272-
},
273-
TypeError,
274-
'Invalid argument',
275-
'request.b does not exist'
276-
);
277-
278-
const Request = rclnodejs.require(AddTwoInts).Request;
279-
const req = new Request();
280-
req.a = 1;
281-
assertThrowsError(
282-
() => {
283-
client.sendRequest(req, (response) => {});
284-
},
285-
TypeError,
286-
'Invalid argument',
287-
'request.b does not exist'
288-
);
289-
290-
rclnodejs.spin(node);
291-
node.destroy();
292-
});
293-
294216
it('resources will be freed by shutdown', function () {
295217
var node = rclnodejs.createNode('node1', '/unhandled');
296218
const RclString = 'std_msgs/msg/String';

0 commit comments

Comments
 (0)