Chromium Code Reviews| Index: mojo/public/js/bindings/codec.js |
| diff --git a/mojo/public/js/bindings/codec.js b/mojo/public/js/bindings/codec.js |
| index dca6009071d01a724845d27d8f2dfa9b3f969bc5..45feef2bb1b0ad7fc86f382a9da0be58a21a4974 100644 |
| --- a/mojo/public/js/bindings/codec.js |
| +++ b/mojo/public/js/bindings/codec.js |
| @@ -17,6 +17,10 @@ define("mojo/public/js/bindings/codec", [ |
| return size + (kAlignment - (size % kAlignment)) % kAlignment; |
| } |
| + function isAligned(offset) { |
| + return offset >= 0 && (offset % kAlignment) == 0; |
|
Tom Sepez
2014/07/29 16:32:54
nit: purists might insist on === througout.
hansmuller
2014/07/29 19:06:22
Done.
|
| + } |
| + |
| // Constants ---------------------------------------------------------------- |
| var kArrayHeaderSize = 8; |
| @@ -355,6 +359,10 @@ define("mojo/public/js/bindings/codec", [ |
| var kMessageExpectsResponse = 1 << 0; |
| var kMessageIsResponse = 1 << 1; |
| + // Message header is a struct, begins with a struct header. |
| + var kNumBytesOffset = 0; |
|
yzshen1
2014/07/29 05:59:53
Maybe we could consider define these in the "const
hansmuller
2014/07/29 19:06:22
Done.
|
| + var kNumFieldsOffset = 4; |
| + |
| // Skip over num_bytes, num_fields, and message_name. |
| var kFlagsOffset = 4 + 4 + 4; |
|
yzshen1
2014/07/29 05:59:53
Some of those 4's (or all of them) could be replac
hansmuller
2014/07/29 19:06:22
Done.
|
| @@ -366,15 +374,32 @@ define("mojo/public/js/bindings/codec", [ |
| this.handles = handles; |
| } |
| - Message.prototype.setRequestID = function(requestID) { |
| - // TODO(darin): Verify that space was reserved for this field! |
| - this.buffer.setUint64(kRequestIDOffset, requestID); |
| + Message.prototype.getHeaderNumBytes = function() { |
| + return this.buffer.getUint32(kNumBytesOffset); |
| + }; |
| + |
| + Message.prototype.getHeaderNumFields = function() { |
| + return this.buffer.getUint32(kNumFieldsOffset); |
| }; |
| Message.prototype.getFlags = function() { |
| return this.buffer.getUint32(kFlagsOffset); |
| }; |
| + Message.prototype.isResponse = function() { |
| + return (this.getFlags() & kMessageIsResponse) != 0; |
| + }; |
| + |
| + Message.prototype.expectsResponse = function() { |
| + return (this.getFlags() & kMessageExpectsResponse) != 0; |
| + }; |
| + |
| + Message.prototype.setRequestID = function(requestID) { |
| + // TODO(darin): Verify that space was reserved for this field! |
| + this.buffer.setUint64(kRequestIDOffset, requestID); |
| + }; |
| + |
| + |
| // MessageBuilder ----------------------------------------------------------- |
| function MessageBuilder(messageName, payloadSize) { |
| @@ -666,6 +691,7 @@ define("mojo/public/js/bindings/codec", [ |
| var exports = {}; |
| exports.align = align; |
| + exports.isAligned = isAligned; |
| exports.Message = Message; |
| exports.MessageBuilder = MessageBuilder; |
| exports.MessageWithRequestIDBuilder = MessageWithRequestIDBuilder; |
| @@ -673,6 +699,7 @@ define("mojo/public/js/bindings/codec", [ |
| exports.kArrayHeaderSize = kArrayHeaderSize; |
| exports.kStructHeaderSize = kStructHeaderSize; |
| exports.kMessageHeaderSize = kMessageHeaderSize; |
| + exports.kMessageWithRequestIDHeaderSize = kMessageWithRequestIDHeaderSize; |
| exports.kMessageExpectsResponse = kMessageExpectsResponse; |
| exports.kMessageIsResponse = kMessageIsResponse; |
| exports.Int8 = Int8; |