Merge "js: default to vom version 81"
diff --git a/src/vom/type-encoder.js b/src/vom/type-encoder.js
index 2de2212..aef6940 100644
--- a/src/vom/type-encoder.js
+++ b/src/vom/type-encoder.js
@@ -163,7 +163,7 @@
}
rawWriter.writeUint(1);
rawWriter.writeUint(kindToBootstrapType(type.kind).id);
- rawWriter.writeByte(endByte);
+ rawWriter.writeControlByte(endByte);
break;
case kind.OPTIONAL:
elemId = this._encodeType(type.elem, pending);
@@ -174,7 +174,7 @@
}
rawWriter.writeUint(1);
rawWriter.writeUint(elemId);
- rawWriter.writeByte(endByte);
+ rawWriter.writeControlByte(endByte);
break;
case kind.ENUM:
rawWriter.writeUint(BootstrapTypes.unionIds.ENUM_TYPE);
@@ -187,7 +187,7 @@
for (i = 0; i < type.labels.length; i++) {
rawWriter.writeString(type.labels[i]);
}
- rawWriter.writeByte(endByte);
+ rawWriter.writeControlByte(endByte);
break;
case kind.ARRAY:
elemId = this._encodeType(type.elem, pending);
@@ -200,7 +200,7 @@
rawWriter.writeUint(elemId);
rawWriter.writeUint(2);
rawWriter.writeUint(type.len);
- rawWriter.writeByte(endByte);
+ rawWriter.writeControlByte(endByte);
break;
case kind.LIST:
elemId = this._encodeType(type.elem, pending);
@@ -211,7 +211,7 @@
}
rawWriter.writeUint(1);
rawWriter.writeUint(elemId);
- rawWriter.writeByte(endByte);
+ rawWriter.writeControlByte(endByte);
break;
case kind.SET:
keyId = this._encodeType(type.key, pending);
@@ -222,7 +222,7 @@
}
rawWriter.writeUint(1);
rawWriter.writeUint(keyId);
- rawWriter.writeByte(endByte);
+ rawWriter.writeControlByte(endByte);
break;
case kind.MAP:
keyId = this._encodeType(type.key, pending);
@@ -236,7 +236,7 @@
rawWriter.writeUint(keyId);
rawWriter.writeUint(2);
rawWriter.writeUint(elemId);
- rawWriter.writeByte(endByte);
+ rawWriter.writeControlByte(endByte);
break;
case kind.STRUCT:
case kind.UNION:
@@ -265,9 +265,9 @@
rawWriter.writeString(field.name);
rawWriter.writeUint(1);
rawWriter.writeUint(field.id);
- rawWriter.writeByte(endByte);
+ rawWriter.writeControlByte(endByte);
}
- rawWriter.writeByte(endByte);
+ rawWriter.writeControlByte(endByte);
break;
default:
throw new Error('encodeWireType with unknown kind: ' + type.kind);
diff --git a/src/vom/versions.js b/src/vom/versions.js
index cff9e17..8259c69 100644
--- a/src/vom/versions.js
+++ b/src/vom/versions.js
@@ -10,6 +10,6 @@
module.exports = {
version80: 0x80,
version81: 0x81,
- defaultVersion: 0x80,
+ defaultVersion: 0x81,
allowedVersions: [0x80, 0x81]
};
diff --git a/test/vom/test-type-encoding.js b/test/vom/test-type-encoding.js
index f0ba800..faf7a30 100644
--- a/test/vom/test-type-encoding.js
+++ b/test/vom/test-type-encoding.js
@@ -11,6 +11,7 @@
var stringify = require('./../../src/vdl/stringify.js');
var types = require('./../../src/vdl/types.js');
var kind = require('./../../src/vdl/kind.js');
+var wiretype = require('../../src/gen-vdl/v.io/v23/vom');
var Promise = require('./../../src/lib/promise');
var TypeEncoder = require('./../../src/vom/type-encoder.js');
@@ -30,8 +31,8 @@
this.rawReader = new RawVomReader(bytes);
// consume the header byte.
this.rawReader._readRawBytes(1);
- if (header !== 0x80) {
- throw new Error('Improperly formatted bytes. Must start with 0x80');
+ if (header !== 0x80 && header !== 0x81) {
+ throw new Error('Improperly formatted bytes. Must start with 0x80 or 0x81');
}
}
@@ -40,7 +41,18 @@
*/
TypeMessageReader.prototype.nextMessage = function(typeDecoder) {
var reader = this;
- return this.rawReader.readInt().then(function(typeId) {
+ return reader.rawReader.tryReadControlByte().then(function(ctrl) {
+ // NOTE: In the tests using this reader, types are read in order. This
+ // could potentially lead to hangs but doesn't because of the particular
+ // test cases chosen. This isn't an issue and in the non-test implementation
+ // because the type building algorithm is different.
+ // TODO(bprosnitz) The tests should probably be changed to reuse the
+ // same type building logic of the implementation in the future.
+ if (ctrl && ctrl !== wiretype.WireCtrlTypeIncomplete.val) {
+ throw new Error('received unknown control byte: 0x' + ctrl.toString(16));
+ }
+ return reader.rawReader.readInt();
+ }).then(function(typeId) {
if (typeId >= 0) {
throw new Error('Value messages not implemented.');
}