| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 const int FILE_EXISTS = 0; | 5 patch class _IOService { |
| 6 const int FILE_CREATE = 1; | |
| 7 const int FILE_DELETE = 2; | |
| 8 const int FILE_RENAME = 3; | |
| 9 const int FILE_OPEN = 4; | |
| 10 const int FILE_RESOLVE_SYMBOLIC_LINKS = 5; | |
| 11 const int FILE_CLOSE = 6; | |
| 12 const int FILE_POSITION = 7; | |
| 13 const int FILE_SET_POSITION = 8; | |
| 14 const int FILE_TRUNCATE = 9; | |
| 15 const int FILE_LENGTH = 10; | |
| 16 const int FILE_LENGTH_FROM_PATH = 11; | |
| 17 const int FILE_LAST_MODIFIED = 12; | |
| 18 const int FILE_FLUSH = 13; | |
| 19 const int FILE_READ_BYTE = 14; | |
| 20 const int FILE_WRITE_BYTE = 15; | |
| 21 const int FILE_READ = 16; | |
| 22 const int FILE_READ_INTO = 17; | |
| 23 const int FILE_WRITE_FROM = 18; | |
| 24 const int FILE_CREATE_LINK = 19; | |
| 25 const int FILE_DELETE_LINK = 20; | |
| 26 const int FILE_RENAME_LINK = 21; | |
| 27 const int FILE_LINK_TARGET = 22; | |
| 28 const int FILE_TYPE = 23; | |
| 29 const int FILE_IDENTICAL = 24; | |
| 30 const int FILE_STAT = 25; | |
| 31 const int SOCKET_LOOKUP = 26; | |
| 32 const int SOCKET_LIST_INTERFACES = 27; | |
| 33 const int SOCKET_REVERSE_LOOKUP = 28; | |
| 34 const int DIRECTORY_CREATE = 29; | |
| 35 const int DIRECTORY_DELETE = 30; | |
| 36 const int DIRECTORY_EXISTS = 31; | |
| 37 const int DIRECTORY_CREATE_TEMP = 32; | |
| 38 const int DIRECTORY_LIST_START = 33; | |
| 39 const int DIRECTORY_LIST_NEXT = 34; | |
| 40 const int DIRECTORY_LIST_STOP = 35; | |
| 41 const int DIRECTORY_RENAME = 36; | |
| 42 const int SSL_PROCESS_FILTER = 37; | |
| 43 | |
| 44 class IOService { | |
| 45 // Lazy initialize service ports, 32 per isolate. | 6 // Lazy initialize service ports, 32 per isolate. |
| 46 static const int _SERVICE_PORT_COUNT = 32; | 7 static const int _SERVICE_PORT_COUNT = 32; |
| 47 static List<SendPort> _servicePort = new List(_SERVICE_PORT_COUNT); | 8 static List<SendPort> _servicePort = new List(_SERVICE_PORT_COUNT); |
| 48 static ReceivePort _receivePort; | 9 static ReceivePort _receivePort; |
| 49 static SendPort _replyToPort; | 10 static SendPort _replyToPort; |
| 50 static Map<int, Completer> _messageMap = {}; | 11 static Map<int, Completer> _messageMap = {}; |
| 51 static int _id = 0; | 12 static int _id = 0; |
| 52 | 13 |
| 53 static Future dispatch(int request, List data) { | 14 /* patch */ static Future dispatch(int request, List data) { |
| 54 int id; | 15 int id; |
| 55 do { | 16 do { |
| 56 id = _getNextId(); | 17 id = _getNextId(); |
| 57 } while (_messageMap.containsKey(id)); | 18 } while (_messageMap.containsKey(id)); |
| 58 int index = id % _SERVICE_PORT_COUNT; | 19 int index = id % _SERVICE_PORT_COUNT; |
| 59 _initialize(index); | 20 _initialize(index); |
| 60 var completer = new Completer(); | 21 var completer = new Completer(); |
| 61 _messageMap[id] = completer; | 22 _messageMap[id] = completer; |
| 62 _servicePort[index].send([id, request, data], _replyToPort); | 23 _servicePort[index].send([id, request, data], _replyToPort); |
| 63 return completer.future; | 24 return completer.future; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 82 } | 43 } |
| 83 } | 44 } |
| 84 | 45 |
| 85 static int _getNextId() { | 46 static int _getNextId() { |
| 86 if (_id == 0x7FFFFFFF) _id = 0; | 47 if (_id == 0x7FFFFFFF) _id = 0; |
| 87 return _id++; | 48 return _id++; |
| 88 } | 49 } |
| 89 | 50 |
| 90 static SendPort _newServicePort() native "IOService_NewServicePort"; | 51 static SendPort _newServicePort() native "IOService_NewServicePort"; |
| 91 } | 52 } |
| OLD | NEW |