OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 define("mojo/public/js/bindings/codec", [ | 5 define("mojo/public/js/bindings/codec", [ |
6 "mojo/public/js/bindings/unicode" | 6 "mojo/public/js/bindings/unicode" |
7 ], function(unicode) { | 7 ], function(unicode) { |
8 | 8 |
9 var kErrorUnsigned = "Passing negative value to unsigned"; | 9 var kErrorUnsigned = "Passing negative value to unsigned"; |
10 | 10 |
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
445 var encodedSize = kArrayHeaderSize + unicode.utf8Length(val); | 445 var encodedSize = kArrayHeaderSize + unicode.utf8Length(val); |
446 var encoder = this.createAndEncodeEncoder(encodedSize); | 446 var encoder = this.createAndEncodeEncoder(encodedSize); |
447 encoder.encodeString(val); | 447 encoder.encodeString(val); |
448 }; | 448 }; |
449 | 449 |
450 // Message ------------------------------------------------------------------ | 450 // Message ------------------------------------------------------------------ |
451 | 451 |
452 var kMessageExpectsResponse = 1 << 0; | 452 var kMessageExpectsResponse = 1 << 0; |
453 var kMessageIsResponse = 1 << 1; | 453 var kMessageIsResponse = 1 << 1; |
454 | 454 |
| 455 // Message header is a struct, begins with a struct header. |
| 456 var kNumBytesOffset = 0; |
| 457 var kNumFieldsOffset = 4; |
| 458 |
455 // Skip over num_bytes, num_fields, and message_name. | 459 // Skip over num_bytes, num_fields, and message_name. |
456 var kFlagsOffset = 4 + 4 + 4; | 460 var kFlagsOffset = 4 + 4 + 4; |
457 | 461 |
458 // Skip over num_bytes, num_fields, message_name, and flags. | 462 // Skip over num_bytes, num_fields, message_name, and flags. |
459 var kRequestIDOffset = 4 + 4 + 4 + 4; | 463 var kRequestIDOffset = 4 + 4 + 4 + 4; |
460 | 464 |
461 function Message(buffer, handles) { | 465 function Message(buffer, handles) { |
462 this.buffer = buffer; | 466 this.buffer = buffer; |
463 this.handles = handles; | 467 this.handles = handles; |
464 } | 468 } |
465 | 469 |
466 Message.prototype.setRequestID = function(requestID) { | 470 Message.prototype.setRequestID = function(requestID) { |
467 // TODO(darin): Verify that space was reserved for this field! | 471 // TODO(darin): Verify that space was reserved for this field! |
468 setUint64(this.buffer.dataView, kRequestIDOffset, requestID); | 472 setUint64(this.buffer.dataView, kRequestIDOffset, requestID); |
469 }; | 473 }; |
470 | 474 |
471 Message.prototype.getFlags = function() { | 475 Message.prototype.getHeaderNumBytes = function() { |
| 476 return this.buffer.dataView.getUint32(kNumBytesOffset, kHostIsLittleEndian); |
| 477 }; |
| 478 |
| 479 Message.prototype.getHeaderNumFields = function() { |
| 480 return this.buffer.dataView.getUint32(kNumFieldsOffset, |
| 481 kHostIsLittleEndian); |
| 482 }; |
| 483 |
| 484 Message.prototype.getHeaderFlags = function() { |
472 return this.buffer.dataView.getUint32(kFlagsOffset, kHostIsLittleEndian); | 485 return this.buffer.dataView.getUint32(kFlagsOffset, kHostIsLittleEndian); |
473 }; | 486 }; |
474 | 487 |
| 488 Message.prototype.byteLength = function() { |
| 489 return this.buffer.dataView.byteLength; |
| 490 } |
| 491 |
475 // MessageBuilder ----------------------------------------------------------- | 492 // MessageBuilder ----------------------------------------------------------- |
476 | 493 |
477 function MessageBuilder(messageName, payloadSize) { | 494 function MessageBuilder(messageName, payloadSize) { |
478 // Currently, we don't compute the payload size correctly ahead of time. | 495 // Currently, we don't compute the payload size correctly ahead of time. |
479 // Instead, we resize the buffer at the end. | 496 // Instead, we resize the buffer at the end. |
480 var numberOfBytes = kMessageHeaderSize + payloadSize; | 497 var numberOfBytes = kMessageHeaderSize + payloadSize; |
481 this.buffer = new Buffer(numberOfBytes); | 498 this.buffer = new Buffer(numberOfBytes); |
482 this.handles = []; | 499 this.handles = []; |
483 var encoder = this.createEncoder(kMessageHeaderSize); | 500 var encoder = this.createEncoder(kMessageHeaderSize); |
484 encoder.writeUint32(kMessageHeaderSize); | 501 encoder.writeUint32(kMessageHeaderSize); |
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
765 var exports = {}; | 782 var exports = {}; |
766 exports.align = align; | 783 exports.align = align; |
767 exports.Buffer = Buffer; | 784 exports.Buffer = Buffer; |
768 exports.Message = Message; | 785 exports.Message = Message; |
769 exports.MessageBuilder = MessageBuilder; | 786 exports.MessageBuilder = MessageBuilder; |
770 exports.MessageWithRequestIDBuilder = MessageWithRequestIDBuilder; | 787 exports.MessageWithRequestIDBuilder = MessageWithRequestIDBuilder; |
771 exports.MessageReader = MessageReader; | 788 exports.MessageReader = MessageReader; |
772 exports.kArrayHeaderSize = kArrayHeaderSize; | 789 exports.kArrayHeaderSize = kArrayHeaderSize; |
773 exports.kStructHeaderSize = kStructHeaderSize; | 790 exports.kStructHeaderSize = kStructHeaderSize; |
774 exports.kMessageHeaderSize = kMessageHeaderSize; | 791 exports.kMessageHeaderSize = kMessageHeaderSize; |
| 792 exports.kMessageWithRequestIDHeaderSize = kMessageWithRequestIDHeaderSize; |
775 exports.kMessageExpectsResponse = kMessageExpectsResponse; | 793 exports.kMessageExpectsResponse = kMessageExpectsResponse; |
776 exports.kMessageIsResponse = kMessageIsResponse; | 794 exports.kMessageIsResponse = kMessageIsResponse; |
777 exports.Int8 = Int8; | 795 exports.Int8 = Int8; |
778 exports.Uint8 = Uint8; | 796 exports.Uint8 = Uint8; |
779 exports.Int16 = Int16; | 797 exports.Int16 = Int16; |
780 exports.Uint16 = Uint16; | 798 exports.Uint16 = Uint16; |
781 exports.Int32 = Int32; | 799 exports.Int32 = Int32; |
782 exports.Uint32 = Uint32; | 800 exports.Uint32 = Uint32; |
783 exports.Int64 = Int64; | 801 exports.Int64 = Int64; |
784 exports.Uint64 = Uint64; | 802 exports.Uint64 = Uint64; |
785 exports.Float = Float; | 803 exports.Float = Float; |
786 exports.Double = Double; | 804 exports.Double = Double; |
787 exports.String = String; | 805 exports.String = String; |
788 exports.PointerTo = PointerTo; | 806 exports.PointerTo = PointerTo; |
789 exports.ArrayOf = ArrayOf; | 807 exports.ArrayOf = ArrayOf; |
790 exports.ArrayOfBoolArrayPointers = ArrayOfBoolArrayPointers; | 808 exports.ArrayOfBoolArrayPointers = ArrayOfBoolArrayPointers; |
791 exports.Handle = Handle; | 809 exports.Handle = Handle; |
792 return exports; | 810 return exports; |
793 }); | 811 }); |
OLD | NEW |