| 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 | 5 |
| 6 class _SocketBase extends NativeFieldWrapperClass1 { | 6 class _SocketBase extends NativeFieldWrapperClass1 { |
| 7 // Bit flags used when communicating between the eventhandler and | 7 // Bit flags used when communicating between the eventhandler and |
| 8 // dart code. The EVENT flags are used to indicate events of | 8 // dart code. The EVENT flags are used to indicate events of |
| 9 // interest when sending a message from dart code to the | 9 // interest when sending a message from dart code to the |
| 10 // eventhandler. When receiving a message from the eventhandler the | 10 // eventhandler. When receiving a message from the eventhandler the |
| (...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 397 } | 397 } |
| 398 if (offset < 0) { | 398 if (offset < 0) { |
| 399 throw new IndexOutOfRangeException(offset); | 399 throw new IndexOutOfRangeException(offset); |
| 400 } | 400 } |
| 401 if (bytes < 0) { | 401 if (bytes < 0) { |
| 402 throw new IndexOutOfRangeException(bytes); | 402 throw new IndexOutOfRangeException(bytes); |
| 403 } | 403 } |
| 404 if ((offset + bytes) > buffer.length) { | 404 if ((offset + bytes) > buffer.length) { |
| 405 throw new IndexOutOfRangeException(offset + bytes); | 405 throw new IndexOutOfRangeException(offset + bytes); |
| 406 } | 406 } |
| 407 // When using the Dart C API to access raw data, using a ByteArray is | 407 var fastBuffer = _ensureFastAndSerializableBuffer(buffer, offset, bytes); |
| 408 // currently much faster. This function will make a copy of the | 408 var result = _writeList(fastBuffer[0], fastBuffer[1], bytes); |
| 409 // supplied List to a ByteArray if it isn't already. | |
| 410 List outBuffer; | |
| 411 int outOffset = offset; | |
| 412 if (buffer is Uint8List || buffer is ObjectArray) { | |
| 413 outBuffer = buffer; | |
| 414 } else { | |
| 415 outBuffer = new Uint8List(bytes); | |
| 416 outOffset = 0; | |
| 417 int j = offset; | |
| 418 for (int i = 0; i < bytes; i++) { | |
| 419 int value = buffer[j]; | |
| 420 if (value is! int) { | |
| 421 throw new FileIOException( | |
| 422 "List element is not an integer at index $j"); | |
| 423 } | |
| 424 outBuffer[i] = value; | |
| 425 j++; | |
| 426 } | |
| 427 } | |
| 428 var result = _writeList(outBuffer, outOffset, bytes); | |
| 429 if (result is OSError) { | 409 if (result is OSError) { |
| 430 _reportError(result, "Write failed"); | 410 _reportError(result, "Write failed"); |
| 431 // If writing fails we return 0 as the number of bytes and | 411 // If writing fails we return 0 as the number of bytes and |
| 432 // report the error on the error handler. | 412 // report the error on the error handler. |
| 433 result = 0; | 413 result = 0; |
| 434 } | 414 } |
| 435 return result; | 415 return result; |
| 436 } | 416 } |
| 437 throw new SocketIOException("writeList failed - invalid socket handle"); | 417 throw new SocketIOException("writeList failed - invalid socket handle"); |
| 438 } | 418 } |
| (...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 587 bool _seenFirstOutEvent = false; | 567 bool _seenFirstOutEvent = false; |
| 588 bool _pipe = false; | 568 bool _pipe = false; |
| 589 Function _clientConnectHandler; | 569 Function _clientConnectHandler; |
| 590 Function _clientWriteHandler; | 570 Function _clientWriteHandler; |
| 591 SocketInputStream _inputStream; | 571 SocketInputStream _inputStream; |
| 592 SocketOutputStream _outputStream; | 572 SocketOutputStream _outputStream; |
| 593 String _remoteHost; | 573 String _remoteHost; |
| 594 int _remotePort; | 574 int _remotePort; |
| 595 static SendPort _socketService; | 575 static SendPort _socketService; |
| 596 } | 576 } |
| OLD | NEW |