Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(411)

Side by Side Diff: pkg/analysis_server/lib/src/source/caching_pub_package_map_provider.dart

Issue 2198223002: Mark analysis_server as being strong-mode clean (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pkg/analysis_server/lib/src/channel/web_socket_channel.dart ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 library source.caching_pub_package_map_provider; 5 library source.caching_pub_package_map_provider;
6 6
7 import 'dart:convert'; 7 import 'dart:convert';
8 import 'dart:core' hide Resource; 8 import 'dart:core' hide Resource;
9 import 'dart:io' as io; 9 import 'dart:io' as io;
10 10
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
99 // cached result because folder may be only temporarily inaccessible 99 // cached result because folder may be only temporarily inaccessible
100 // 100 //
101 if (!folder.exists) { 101 if (!folder.exists) {
102 return computePackageMapError(folder); 102 return computePackageMapError(folder);
103 } 103 }
104 // Ensure cache is up to date 104 // Ensure cache is up to date
105 _readCache(); 105 _readCache();
106 // Check for cached entry 106 // Check for cached entry
107 Map entry = _cache[folder.path]; 107 Map entry = _cache[folder.path];
108 if (entry != null) { 108 if (entry != null) {
109 Map<String, int> modificationStamps = entry[modificationStampsKey]; 109 Map<String, int> modificationStamps =
110 entry[modificationStampsKey] as Map<String, int>;
110 if (modificationStamps != null) { 111 if (modificationStamps != null) {
111 // 112 //
112 // Check to see if any dependencies have changed 113 // Check to see if any dependencies have changed
113 // before returning cached result 114 // before returning cached result
114 // 115 //
115 if (!_haveDependenciesChanged(modificationStamps)) { 116 if (!_haveDependenciesChanged(modificationStamps)) {
116 return parsePackageMap(entry[pubListResultKey], folder); 117 return parsePackageMap(entry[pubListResultKey], folder);
117 } 118 }
118 } 119 }
119 } 120 }
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 // TODO(danrubel) This implementation assumes that 211 // TODO(danrubel) This implementation assumes that
211 // two separate processes are not accessing the cache file at the same time 212 // two separate processes are not accessing the cache file at the same time
212 Source source = cacheFile.createSource(); 213 Source source = cacheFile.createSource();
213 if (source.exists() && 214 if (source.exists() &&
214 (_cache == null || 215 (_cache == null ||
215 _cacheModificationTime != source.modificationStamp)) { 216 _cacheModificationTime != source.modificationStamp)) {
216 try { 217 try {
217 TimestampedData<String> data = source.contents; 218 TimestampedData<String> data = source.contents;
218 Map map = JSON.decode(data.data); 219 Map map = JSON.decode(data.data);
219 if (map[cacheVersionKey] == cacheVersion) { 220 if (map[cacheVersionKey] == cacheVersion) {
220 _cache = map[cacheKey]; 221 _cache = map[cacheKey] as Map<String, Map>;
221 _cacheModificationTime = data.modificationTime; 222 _cacheModificationTime = data.modificationTime;
222 } 223 }
223 } catch (exception, stackTrace) { 224 } catch (exception, stackTrace) {
224 AnalysisEngine.instance.logger.logInformation( 225 AnalysisEngine.instance.logger.logInformation(
225 'Exception reading $cacheFile\n$exception\n$stackTrace'); 226 'Exception reading $cacheFile\n$exception\n$stackTrace');
226 } 227 }
227 } 228 }
228 if (_cache == null) { 229 if (_cache == null) {
229 _cache = new Map<String, Map>(); 230 _cache = new Map<String, Map>();
230 } 231 }
(...skipping 19 matching lines...) Expand all
250 // TODO(danrubel) This implementation assumes that 251 // TODO(danrubel) This implementation assumes that
251 // two separate processes are not accessing the cache file at the same time 252 // two separate processes are not accessing the cache file at the same time
252 io.File file = new io.File(cacheFile.path); 253 io.File file = new io.File(cacheFile.path);
253 if (!file.parent.existsSync()) { 254 if (!file.parent.existsSync()) {
254 file.parent.createSync(recursive: true); 255 file.parent.createSync(recursive: true);
255 } 256 }
256 file.writeAsStringSync(content, flush: true); 257 file.writeAsStringSync(content, flush: true);
257 return file.lastModifiedSync().millisecondsSinceEpoch; 258 return file.lastModifiedSync().millisecondsSinceEpoch;
258 } 259 }
259 } 260 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/lib/src/channel/web_socket_channel.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698