Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(484)

Unified Diff: mojo/public/dart/mojo/lib/src/codec.dart

Issue 1405103002: Dart: Merge message pipe query and read into one native call. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « mojo/dart/embedder/mojo_natives.cc ('k') | mojo/public/dart/mojo/lib/src/message.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/public/dart/mojo/lib/src/codec.dart
diff --git a/mojo/public/dart/mojo/lib/src/codec.dart b/mojo/public/dart/mojo/lib/src/codec.dart
index 020312b152b1590290221aebadd2ccf42d79364f..0e8af2e0d5178169e56a487aff56850c4d1d9223 100644
--- a/mojo/public/dart/mojo/lib/src/codec.dart
+++ b/mojo/public/dart/mojo/lib/src/codec.dart
@@ -170,11 +170,11 @@ class Encoder {
_buffer.buffer.setUint64(_base + offset, value, Endianness.LITTLE_ENDIAN);
}
- void encodeFloat(double value, int offset) => _buffer.buffer.setFloat32(
- _base + offset, value, Endianness.LITTLE_ENDIAN);
+ void encodeFloat(double value, int offset) => _buffer.buffer
+ .setFloat32(_base + offset, value, Endianness.LITTLE_ENDIAN);
- void encodeDouble(double value, int offset) => _buffer.buffer.setFloat64(
- _base + offset, value, Endianness.LITTLE_ENDIAN);
+ void encodeDouble(double value, int offset) => _buffer.buffer
+ .setFloat64(_base + offset, value, Endianness.LITTLE_ENDIAN);
void encodeHandle(core.MojoHandle value, int offset, bool nullable) {
if ((value == null) || !value.isValid) {
@@ -275,8 +275,7 @@ class Encoder {
void encodeUnion(Union value, int offset, bool nullable) {
if (value == null) {
if (!nullable) {
- throw new MojoCodecError(
- 'Trying to encode a non-nullable null union.');
+ throw new MojoCodecError('Trying to encode a non-nullable null union.');
}
encodeUint64(0, offset);
encodeUint64(0, offset + 8);
@@ -422,15 +421,19 @@ class Encoder {
}
void encodeHandleArray(List<core.MojoHandle> value, int offset,
- int nullability, int expectedLength) => _handleArrayEncodeHelper(
- (e, v, o, n) => e.encodeHandle(v, o, n), value, offset,
- kSerializedHandleSize, nullability, expectedLength);
+ int nullability, int expectedLength) =>
+ _handleArrayEncodeHelper((e, v, o, n) => e.encodeHandle(v, o, n), value,
+ offset, kSerializedHandleSize, nullability, expectedLength);
void encodeMessagePipeHandleArray(List<core.MojoMessagePipeEndpoint> value,
int offset, int nullability, int expectedLength) =>
_handleArrayEncodeHelper(
- (e, v, o, n) => e.encodeMessagePipeHandle(v, o, n), value, offset,
- kSerializedHandleSize, nullability, expectedLength);
+ (e, v, o, n) => e.encodeMessagePipeHandle(v, o, n),
+ value,
+ offset,
+ kSerializedHandleSize,
+ nullability,
+ expectedLength);
void encodeConsumerHandleArray(List<core.MojoDataPipeConsumer> value,
int offset, int nullability, int expectedLength) =>
@@ -445,14 +448,22 @@ class Encoder {
void encodeSharedBufferHandleArray(List<core.MojoSharedBuffer> value,
int offset, int nullability, int expectedLength) =>
_handleArrayEncodeHelper(
- (e, v, o, n) => e.encodeSharedBufferHandle(v, o, n), value, offset,
- kSerializedHandleSize, nullability, expectedLength);
+ (e, v, o, n) => e.encodeSharedBufferHandle(v, o, n),
+ value,
+ offset,
+ kSerializedHandleSize,
+ nullability,
+ expectedLength);
void encodeInterfaceRequestArray(
List<Proxy> value, int offset, int nullability, int expectedLength) =>
_handleArrayEncodeHelper(
- (e, v, o, n) => e.encodeInterfaceRequest(v, o, n), value, offset,
- kSerializedHandleSize, nullability, expectedLength);
+ (e, v, o, n) => e.encodeInterfaceRequest(v, o, n),
+ value,
+ offset,
+ kSerializedHandleSize,
+ nullability,
+ expectedLength);
void encodeInterfaceArray(
List<Stub> value, int offset, int nullability, int expectedLength) =>
@@ -473,10 +484,10 @@ class Encoder {
}
void appendBytes(Uint8List value) {
- _buffer.buffer.buffer
- .asUint8List()
- .setRange(_base + ArrayDataHeader.kHeaderSize,
- _base + ArrayDataHeader.kHeaderSize + value.lengthInBytes, value);
+ _buffer.buffer.buffer.asUint8List().setRange(
+ _base + ArrayDataHeader.kHeaderSize,
+ _base + ArrayDataHeader.kHeaderSize + value.lengthInBytes,
+ value);
}
void appendInt8Array(List<int> value) =>
@@ -561,8 +572,8 @@ class Decoder {
Decoder(this._message, [this._base = 0, this._validator = null]) {
if (_validator == null) {
- _validator = new _Validator(
- _message.buffer.lengthInBytes, _message.handles.length);
+ _validator =
+ new _Validator(_message.buffer.lengthInBytes, _message.numHandles);
}
}
@@ -574,9 +585,11 @@ class Decoder {
ByteData get _buffer => _message.buffer;
List<core.MojoHandle> get _handles => _message.handles;
- List<core.MojoHandle> get excessHandles => new List.from(_message.handles
- .getRange(_validator._minNextClaimedHandle, _message.handles.length))
- ..addAll(_validator._skippedIndices.map((i) => _message.handles[i]));
+ List<core.MojoHandle> get excessHandles => (_message.handles == null)
+ ? null
+ : (new List.from(_message.handles
+ .getRange(_validator._minNextClaimedHandle, _message.handles.length))
+ ..addAll(_validator._skippedIndices.map((i) => _message.handles[i])));
int decodeInt8(int offset) => _buffer.getInt8(_base + offset);
int decodeUint8(int offset) => _buffer.getUint8(_base + offset);
@@ -709,7 +722,8 @@ class Decoder {
return null;
}
var header = d.decodeDataHeaderForBoolArray(expectedLength);
- var bytes = new Uint8List.view(d._buffer.buffer,
+ var bytes = new Uint8List.view(
+ d._buffer.buffer,
d._buffer.offsetInBytes + d._base + ArrayDataHeader.kHeaderSize,
(header.numElements + 7) ~/ kAlignment);
var result = new List<bool>(header.numElements);
@@ -758,7 +772,8 @@ class Decoder {
return null;
}
var header = d.decodeDataHeaderForArray(elementSize, expectedLength);
- return arrayViewer(d._buffer.buffer,
+ return arrayViewer(
+ d._buffer.buffer,
d._buffer.offsetInBytes + d._base + ArrayDataHeader.kHeaderSize,
header.numElements);
}
@@ -776,37 +791,37 @@ class Decoder {
nullability, expectedLength);
List<int> decodeUint16Array(
- int offset, int nullability, int expectedLength) => decodeArray(
- (b, s, l) => new Uint16List.view(b, s, l), 2, offset, nullability,
- expectedLength);
+ int offset, int nullability, int expectedLength) =>
+ decodeArray((b, s, l) => new Uint16List.view(b, s, l), 2, offset,
+ nullability, expectedLength);
List<int> decodeInt32Array(int offset, int nullability, int expectedLength) =>
decodeArray((b, s, l) => new Int32List.view(b, s, l), 4, offset,
nullability, expectedLength);
List<int> decodeUint32Array(
- int offset, int nullability, int expectedLength) => decodeArray(
- (b, s, l) => new Uint32List.view(b, s, l), 4, offset, nullability,
- expectedLength);
+ int offset, int nullability, int expectedLength) =>
+ decodeArray((b, s, l) => new Uint32List.view(b, s, l), 4, offset,
+ nullability, expectedLength);
List<int> decodeInt64Array(int offset, int nullability, int expectedLength) =>
decodeArray((b, s, l) => new Int64List.view(b, s, l), 8, offset,
nullability, expectedLength);
List<int> decodeUint64Array(
- int offset, int nullability, int expectedLength) => decodeArray(
- (b, s, l) => new Uint64List.view(b, s, l), 8, offset, nullability,
- expectedLength);
+ int offset, int nullability, int expectedLength) =>
+ decodeArray((b, s, l) => new Uint64List.view(b, s, l), 8, offset,
+ nullability, expectedLength);
List<double> decodeFloatArray(
- int offset, int nullability, int expectedLength) => decodeArray(
- (b, s, l) => new Float32List.view(b, s, l), 4, offset, nullability,
- expectedLength);
+ int offset, int nullability, int expectedLength) =>
+ decodeArray((b, s, l) => new Float32List.view(b, s, l), 4, offset,
+ nullability, expectedLength);
List<double> decodeDoubleArray(
- int offset, int nullability, int expectedLength) => decodeArray(
- (b, s, l) => new Float64List.view(b, s, l), 8, offset, nullability,
- expectedLength);
+ int offset, int nullability, int expectedLength) =>
+ decodeArray((b, s, l) => new Float64List.view(b, s, l), 8, offset,
+ nullability, expectedLength);
List _handleArrayDecodeHelper(Function elementDecoder, int offset,
int elementSize, int nullability, int expectedLength) {
@@ -817,7 +832,8 @@ class Decoder {
var header = d.decodeDataHeaderForArray(elementSize, expectedLength);
var result = new List(header.numElements);
for (int i = 0; i < result.length; ++i) {
- result[i] = elementDecoder(d,
+ result[i] = elementDecoder(
+ d,
ArrayDataHeader.kHeaderSize + elementSize * i,
isElementNullable(nullability));
}
@@ -852,13 +868,20 @@ class Decoder {
List<Stub> decodeInterfaceRequestArray(int offset, int nullability,
int expectedLength, Function interfaceFactory) =>
_handleArrayDecodeHelper(
- (d, o, n) => d.decodeInterfaceRequest(o, n, interfaceFactory), offset,
- kSerializedHandleSize, nullability, expectedLength);
+ (d, o, n) => d.decodeInterfaceRequest(o, n, interfaceFactory),
+ offset,
+ kSerializedHandleSize,
+ nullability,
+ expectedLength);
List<Proxy> decodeServiceInterfaceArray(int offset, int nullability,
- int expectedLength, Function clientFactory) => _handleArrayDecodeHelper(
- (d, o, n) => d.decodeServiceInterface(o, n, clientFactory), offset,
- kSerializedInterfaceSize, nullability, expectedLength);
+ int expectedLength, Function clientFactory) =>
+ _handleArrayDecodeHelper(
+ (d, o, n) => d.decodeServiceInterface(o, n, clientFactory),
+ offset,
+ kSerializedInterfaceSize,
+ nullability,
+ expectedLength);
static String _stringOfUtf8(Uint8List bytes) =>
(const Utf8Decoder()).convert(bytes.toList());
« no previous file with comments | « mojo/dart/embedder/mojo_natives.cc ('k') | mojo/public/dart/mojo/lib/src/message.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698