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 part of bindings; | 5 part of bindings; |
6 | 6 |
7 int align(int size) => size + (kAlignment - (size % kAlignment)) % kAlignment; | 7 int align(int size) => size + (kAlignment - (size % kAlignment)) % kAlignment; |
8 | 8 |
9 const int kAlignment = 8; | 9 const int kAlignment = 8; |
10 const int kSerializedHandleSize = 4; | 10 const int kSerializedHandleSize = 4; |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
201 void encodeInterface(Stub interface, int offset, bool nullable) { | 201 void encodeInterface(Stub interface, int offset, bool nullable) { |
202 if (interface == null) { | 202 if (interface == null) { |
203 encodeInvalideHandle(offset, nullable); | 203 encodeInvalideHandle(offset, nullable); |
204 return; | 204 return; |
205 } | 205 } |
206 var pipe = new core.MojoMessagePipe(); | 206 var pipe = new core.MojoMessagePipe(); |
207 interface.bind(pipe.endpoints[0]); | 207 interface.bind(pipe.endpoints[0]); |
208 encodeMessagePipeHandle(pipe.endpoints[1], offset, nullable); | 208 encodeMessagePipeHandle(pipe.endpoints[1], offset, nullable); |
209 } | 209 } |
210 | 210 |
211 void encodeInterfaceRequest(Proxy client, int offset, bool nullable) { | 211 void encodeInterfaceRequest(ProxyBase client, int offset, bool nullable) { |
212 if (client == null) { | 212 if (client == null) { |
213 encodeInvalideHandle(offset, nullable); | 213 encodeInvalideHandle(offset, nullable); |
214 return; | 214 return; |
215 } | 215 } |
216 var pipe = new core.MojoMessagePipe(); | 216 var pipe = new core.MojoMessagePipe(); |
217 client.bind(pipe.endpoints[0]); | 217 client.impl.bind(pipe.endpoints[0]); |
218 encodeMessagePipeHandle(pipe.endpoints[1], offset, nullable); | 218 encodeMessagePipeHandle(pipe.endpoints[1], offset, nullable); |
219 } | 219 } |
220 | 220 |
221 void encodeNullPointer(int offset, bool nullable) { | 221 void encodeNullPointer(int offset, bool nullable) { |
222 if (!nullable) { | 222 if (!nullable) { |
223 throw new MojoCodecError( | 223 throw new MojoCodecError( |
224 'Trying to encode a null pointer for a non-nullable type'); | 224 'Trying to encode a null pointer for a non-nullable type'); |
225 } | 225 } |
226 _buffer.buffer.setUint64(_base + offset, 0, Endianness.LITTLE_ENDIAN); | 226 _buffer.buffer.setUint64(_base + offset, 0, Endianness.LITTLE_ENDIAN); |
227 } | 227 } |
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
594 | 594 |
595 core.MojoDataPipeConsumer decodeConsumerHandle(int offset, bool nullable) => | 595 core.MojoDataPipeConsumer decodeConsumerHandle(int offset, bool nullable) => |
596 new core.MojoDataPipeConsumer(decodeHandle(offset, nullable)); | 596 new core.MojoDataPipeConsumer(decodeHandle(offset, nullable)); |
597 | 597 |
598 core.MojoDataPipeProducer decodeProducerHandle(int offset, bool nullable) => | 598 core.MojoDataPipeProducer decodeProducerHandle(int offset, bool nullable) => |
599 new core.MojoDataPipeProducer(decodeHandle(offset, nullable)); | 599 new core.MojoDataPipeProducer(decodeHandle(offset, nullable)); |
600 | 600 |
601 core.MojoSharedBuffer decodeSharedBufferHandle(int offset, bool nullable) => | 601 core.MojoSharedBuffer decodeSharedBufferHandle(int offset, bool nullable) => |
602 new core.MojoSharedBuffer(decodeHandle(offset, nullable)); | 602 new core.MojoSharedBuffer(decodeHandle(offset, nullable)); |
603 | 603 |
604 Proxy decodeServiceInterface( | 604 ProxyBase decodeServiceInterface( |
605 int offset, bool nullable, Function clientFactory) { | 605 int offset, bool nullable, Function clientFactory) { |
606 var endpoint = decodeMessagePipeHandle(offset, nullable); | 606 var endpoint = decodeMessagePipeHandle(offset, nullable); |
607 return endpoint.handle.isValid ? clientFactory(endpoint) : null; | 607 return endpoint.handle.isValid ? clientFactory(endpoint) : null; |
608 } | 608 } |
609 | 609 |
610 Stub decodeInterfaceRequest( | 610 Stub decodeInterfaceRequest( |
611 int offset, bool nullable, Function interfaceFactory) { | 611 int offset, bool nullable, Function interfaceFactory) { |
612 var endpoint = decodeMessagePipeHandle(offset, nullable); | 612 var endpoint = decodeMessagePipeHandle(offset, nullable); |
613 return endpoint.handle.isValid ? interfaceFactory(endpoint) : null; | 613 return endpoint.handle.isValid ? interfaceFactory(endpoint) : null; |
614 } | 614 } |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
690 result[boolIndex] = (bytes[i] & (1 << j)) != 0; | 690 result[boolIndex] = (bytes[i] & (1 << j)) != 0; |
691 } | 691 } |
692 } | 692 } |
693 } | 693 } |
694 return result; | 694 return result; |
695 } | 695 } |
696 | 696 |
697 ArrayDataHeader decodeDataHeaderForArray(int elementSize, | 697 ArrayDataHeader decodeDataHeaderForArray(int elementSize, |
698 int expectedLength) { | 698 int expectedLength) { |
699 var header = decodeArrayDataHeader(); | 699 var header = decodeArrayDataHeader(); |
700 var arrayByteCount = | 700 var arrayByteCount = |
701 ArrayDataHeader.kHeaderSize + header.numElements * elementSize; | 701 ArrayDataHeader.kHeaderSize + header.numElements * elementSize; |
702 if (header.size < arrayByteCount) { | 702 if (header.size < arrayByteCount) { |
703 throw new MojoCodecError( | 703 throw new MojoCodecError( |
704 'Array header is incorrect: $header, elementSize = $elementSize'); | 704 'Array header is incorrect: $header, elementSize = $elementSize'); |
705 } | 705 } |
706 if ((expectedLength != kUnspecifiedArrayLength) && | 706 if ((expectedLength != kUnspecifiedArrayLength) && |
707 (header.numElements != expectedLength)) { | 707 (header.numElements != expectedLength)) { |
708 throw new MojoCodecError( | 708 throw new MojoCodecError( |
709 'Incorrect array length. Expected $expectedLength, but got ' | 709 'Incorrect array length. Expected $expectedLength, but got ' |
710 '${header.numElements}'); | 710 '${header.numElements}'); |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
862 throw new MojoCodecError( | 862 throw new MojoCodecError( |
863 'Incorrect header for map. The size is incorrect.'); | 863 'Incorrect header for map. The size is incorrect.'); |
864 } | 864 } |
865 if (header.version != kMapStructHeader.version) { | 865 if (header.version != kMapStructHeader.version) { |
866 throw new MojoCodecError( | 866 throw new MojoCodecError( |
867 'Incorrect header for map. The version is incorrect.'); | 867 'Incorrect header for map. The version is incorrect.'); |
868 } | 868 } |
869 return header; | 869 return header; |
870 } | 870 } |
871 } | 871 } |
OLD | NEW |