Chromium Code Reviews

Side by Side Diff: mojo/dart/embedder/io/mojo_patch.dart

Issue 1964193002: Dart: Refactors Proxies (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Address comments Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 import 'dart:nativewrappers'; 5 import 'dart:nativewrappers';
6 6
7 import 'dart:_mojo/application.dart'; 7 import 'dart:_mojo/application.dart';
8 import 'dart:_mojo/bindings.dart'; 8 import 'dart:_mojo/bindings.dart';
9 import 'dart:_mojo/core.dart'; 9 import 'dart:_mojo/core.dart';
10 import 'dart:_mojo/mojo/network_error.mojom.dart'; 10 import 'dart:_mojo/mojo/network_error.mojom.dart';
(...skipping 96 matching lines...)
107 /// Get the singleton HostResolverProxy. 107 /// Get the singleton HostResolverProxy.
108 HostResolverProxy _getHostResolver() { 108 HostResolverProxy _getHostResolver() {
109 if (_hostResolver != null) { 109 if (_hostResolver != null) {
110 return _hostResolver; 110 return _hostResolver;
111 } 111 }
112 var networkService = _getNetworkService(); 112 var networkService = _getNetworkService();
113 if (networkService == null) { 113 if (networkService == null) {
114 return null; 114 return null;
115 } 115 }
116 _hostResolver = new HostResolverProxy.unbound(); 116 _hostResolver = new HostResolverProxy.unbound();
117 networkService.ptr.createHostResolver(_hostResolver); 117 networkService.createHostResolver(_hostResolver);
118 // Remove the host resolver's handle from the open set because it is not 118 // Remove the host resolver's handle from the open set because it is not
119 // under application control and does not affect isolate shutdown. 119 // under application control and does not affect isolate shutdown.
120 _hostResolver.impl.endpoint.handle.pass(); 120 _hostResolver.ctrl.endpoint.handle.pass();
121 return _hostResolver; 121 return _hostResolver;
122 } 122 }
123 123
124 /// Get the singleton FilesProxy. 124 /// Get the singleton FilesProxy.
125 FilesProxy _getFiles() { 125 FilesProxy _getFiles() {
126 if (_files != null) { 126 if (_files != null) {
127 return _files; 127 return _files;
128 } 128 }
129 _files = new FilesProxy.fromHandle( 129 _files = new FilesProxy.fromHandle(
130 new MojoHandle(_filesServiceHandle).pass()); 130 new MojoHandle(_filesServiceHandle).pass());
131 _filesServiceHandle = null; 131 _filesServiceHandle = null;
132 return _files; 132 return _files;
133 } 133 }
134 134
135 /// Get the singleton DirectoryProxy for the root directory. 135 /// Get the singleton DirectoryProxy for the root directory.
136 Future<DirectoryProxy> _getRootDirectory() async { 136 Future<DirectoryProxy> _getRootDirectory() async {
137 if (_rootDirectory != null) { 137 if (_rootDirectory != null) {
138 return _rootDirectory; 138 return _rootDirectory;
139 } 139 }
140 FilesProxy files = _getFiles(); 140 FilesProxy files = _getFiles();
141 assert(files != null); 141 assert(files != null);
142 _rootDirectory = new DirectoryProxy.unbound(); 142 _rootDirectory = new DirectoryProxy.unbound();
143 var response = 143 var response =
144 await files.ptr.openFileSystem(fileSystemName, _rootDirectory); 144 await files.openFileSystem(fileSystemName, _rootDirectory);
145 // Remove the root directory's handle from the open set because it is not 145 // Remove the root directory's handle from the open set because it is not
146 // under application control and does not affect isolate shutdown. 146 // under application control and does not affect isolate shutdown.
147 _rootDirectory.impl.endpoint.handle.pass(); 147 _rootDirectory.ctrl.endpoint.handle.pass();
148 148
149 // Ensure system temporary directory exists before returning the root 149 // Ensure system temporary directory exists before returning the root
150 // directory. 150 // directory.
151 await _getSystemTempDirectory(); 151 await _getSystemTempDirectory();
152 return _rootDirectory; 152 return _rootDirectory;
153 } 153 }
154 154
155 /// Get the singleton DirectoryProxy for the system temp directory. 155 /// Get the singleton DirectoryProxy for the system temp directory.
156 Future<DirectoryProxy> _getSystemTempDirectory() async { 156 Future<DirectoryProxy> _getSystemTempDirectory() async {
157 if (_systemTempDirectory != null) { 157 if (_systemTempDirectory != null) {
158 return _systempTempDirectory; 158 return _systempTempDirectory;
159 } 159 }
160 DirectoryProxy rootDirectory = await _getRootDirectory(); 160 DirectoryProxy rootDirectory = await _getRootDirectory();
161 int flags = types.kOpenFlagRead | 161 int flags = types.kOpenFlagRead |
162 types.kOpenFlagWrite | 162 types.kOpenFlagWrite |
163 types.kOpenFlagCreate; 163 types.kOpenFlagCreate;
164 _systemTempDirectory = new DirectoryProxy.unbound(); 164 _systemTempDirectory = new DirectoryProxy.unbound();
165 var response = 165 var response =
166 await rootDirectory.ptr.openDirectory(systemTempPath, 166 await rootDirectory.openDirectory(systemTempPath,
167 _systemTempDirectory, 167 _systemTempDirectory,
168 flags); 168 flags);
169 assert(response.error == types.Error.ok); 169 assert(response.error == types.Error.ok);
170 // Remove the system temp directory's handle from the open set because it 170 // Remove the system temp directory's handle from the open set because it
171 // is not under application control and does not affect isolate shutdown. 171 // is not under application control and does not affect isolate shutdown.
172 _systemTempDirectory.impl.endpoint.handle.pass(); 172 _systemTempDirectory.ctrl.endpoint.handle.pass();
173 return _systemTempDirectory; 173 return _systemTempDirectory;
174 } 174 }
175 175
176 /// Static utility methods for converting between 'dart:io' and 176 /// Static utility methods for converting between 'dart:io' and
177 /// 'mojo:network_service' structs. 177 /// 'mojo:network_service' structs.
178 class _NetworkServiceCodec { 178 class _NetworkServiceCodec {
179 /// Returns a string representation of an ip address encoded in [address]. 179 /// Returns a string representation of an ip address encoded in [address].
180 /// Supports both IPv4 and IPv6. 180 /// Supports both IPv4 and IPv6.
181 static String _addressToString(List<int> address) { 181 static String _addressToString(List<int> address) {
182 String r = ''; 182 String r = '';
(...skipping 111 matching lines...)
294 } 294 }
295 295
296 static _throwOnError(NetworkError error) { 296 static _throwOnError(NetworkError error) {
297 if (_okay(error)) { 297 if (_okay(error)) {
298 return; 298 return;
299 } 299 }
300 throw new OSError(error.description, error.code); 300 throw new OSError(error.description, error.code);
301 } 301 }
302 } 302 }
303 303
OLDNEW
« no previous file with comments | « mojo/dart/embedder/io/internet_address_patch.dart ('k') | mojo/dart/embedder/io/server_socket_patch.dart » ('j') | no next file with comments »

Powered by Google App Engine