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; |
+ } |
+ |
// 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; |
+ var kNumFieldsOffset = 4; |
+ |
// Skip over num_bytes, num_fields, and message_name. |
var kFlagsOffset = 4 + 4 + 4; |
@@ -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; |