| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 part of dart.io; | 5 part of dart.io; |
| 6 | 6 |
| 7 // Constants used when working with native ports. | 7 // Constants used when working with native ports. |
| 8 // These must match the constants in runtime/bin/dartutils.h class CObject. | 8 // These must match the constants in runtime/bin/dartutils.h class CObject. |
| 9 const int _SUCCESS_RESPONSE = 0; | 9 const int _SUCCESS_RESPONSE = 0; |
| 10 const int _ILLEGAL_ARGUMENT_RESPONSE = 1; | 10 const int _ILLEGAL_ARGUMENT_RESPONSE = 1; |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 sb..write(": errno = ") | 83 sb..write(": errno = ") |
| 84 ..write(errorCode.toString()); | 84 ..write(errorCode.toString()); |
| 85 } | 85 } |
| 86 return sb.toString(); | 86 return sb.toString(); |
| 87 } | 87 } |
| 88 } | 88 } |
| 89 | 89 |
| 90 | 90 |
| 91 // Object for holding a buffer and an offset. | 91 // Object for holding a buffer and an offset. |
| 92 class _BufferAndStart { | 92 class _BufferAndStart { |
| 93 List<int> buffer; | 93 List buffer; |
| 94 int start; | 94 int start; |
| 95 _BufferAndStart(this.buffer, this.start); | 95 _BufferAndStart(this.buffer, this.start); |
| 96 } | 96 } |
| 97 | 97 |
| 98 // Ensure that the input List can be serialized through a native port. | 98 // Ensure that the input List can be serialized through a native port. |
| 99 // Only Int8List and Uint8List Lists are serialized directly. | 99 // Only Int8List and Uint8List Lists are serialized directly. |
| 100 // All other lists are first copied into a Uint8List. This has the added | 100 // All other lists are first copied into a Uint8List. This has the added |
| 101 // benefit that it is faster to access from the C code as well. | 101 // benefit that it is faster to access from the C code as well. |
| 102 _BufferAndStart _ensureFastAndSerializableByteData( | 102 _BufferAndStart _ensureFastAndSerializableByteData( |
| 103 List<int> buffer, int start, int end) { | 103 List buffer, int start, int end) { |
| 104 if (buffer is Uint8List || buffer is Int8List) { | 104 if (buffer is Uint8List || buffer is Int8List) { |
| 105 return new _BufferAndStart(buffer, start); | 105 return new _BufferAndStart(buffer, start); |
| 106 } | 106 } |
| 107 int length = end - start; | 107 int length = end - start; |
| 108 var newBuffer = new Uint8List(length); | 108 var newBuffer = new Uint8List(length); |
| 109 int j = start; | 109 int j = start; |
| 110 for (int i = 0; i < length; i++) { | 110 for (int i = 0; i < length; i++) { |
| 111 int value = buffer[j]; | 111 int value = buffer[j]; |
| 112 if (value is! int) { | 112 if (value is! int) { |
| 113 throw new ArgumentError("List element is not an integer at index $j"); | 113 throw new ArgumentError("List element is not an integer at index $j"); |
| 114 } | 114 } |
| 115 newBuffer[i] = value; | 115 newBuffer[i] = value; |
| 116 j++; | 116 j++; |
| 117 } | 117 } |
| 118 return new _BufferAndStart(newBuffer, 0); | 118 return new _BufferAndStart(newBuffer, 0); |
| 119 } | 119 } |
| 120 | 120 |
| 121 | 121 |
| 122 class _IOCrypto { | 122 class _IOCrypto { |
| 123 external static Uint8List getRandomBytes(int count); | 123 external static Uint8List getRandomBytes(int count); |
| 124 } | 124 } |
| OLD | NEW |