Index: mojo/public/dart/mojo/lib/src/message.dart |
diff --git a/mojo/public/dart/mojo/lib/src/message.dart b/mojo/public/dart/mojo/lib/src/message.dart |
index f81a98dc8165a6e7ba0c6bb49c17a3af9978ad25..d617d1e035629ea3630b8c8d834c43bb2689ea34 100644 |
--- a/mojo/public/dart/mojo/lib/src/message.dart |
+++ b/mojo/public/dart/mojo/lib/src/message.dart |
@@ -24,14 +24,14 @@ class MessageHeader { |
(flags & (kMessageExpectsResponse | kMessageIsResponse)) != 0; |
MessageHeader(this.type) |
- : _header = new StructDataHeader( |
- kSimpleMessageSize, kSimpleMessageVersion), |
+ : _header = |
+ new StructDataHeader(kSimpleMessageSize, kSimpleMessageVersion), |
flags = 0, |
requestId = 0; |
MessageHeader.withRequestId(this.type, this.flags, this.requestId) |
: _header = new StructDataHeader( |
- kMessageWithRequestIdSize, kMessageWithRequestIdVersion); |
+ kMessageWithRequestIdSize, kMessageWithRequestIdVersion); |
MessageHeader.fromMessage(Message message) { |
var decoder = new Decoder(message); |
@@ -77,9 +77,11 @@ class MessageHeader { |
class Message { |
final ByteData buffer; |
final List<core.MojoHandle> handles; |
- Message(this.buffer, this.handles); |
+ final dataLength; |
+ final handlesLength; |
+ Message(this.buffer, this.handles, this.dataLength, this.handlesLength); |
String toString() => |
- "Message(numBytes=${buffer.lengthInBytes}, numHandles=${handles.length})"; |
+ "Message(numBytes=${dataLength}, numHandles=${handlesLength})"; |
} |
class ServiceMessage extends Message { |
@@ -87,7 +89,8 @@ class ServiceMessage extends Message { |
Message _payload; |
ServiceMessage(Message message, this.header) |
- : super(message.buffer, message.handles); |
+ : super(message.buffer, message.handles, message.dataLength, |
+ message.handlesLength); |
ServiceMessage.fromMessage(Message message) |
: this(message, new MessageHeader.fromMessage(message)); |
@@ -95,7 +98,8 @@ class ServiceMessage extends Message { |
Message get payload { |
if (_payload == null) { |
var truncatedBuffer = new ByteData.view(buffer.buffer, header.size); |
- _payload = new Message(truncatedBuffer, handles); |
+ _payload = new Message( |
+ truncatedBuffer, handles, dataLength - header.size, handlesLength); |
} |
return _payload; |
} |