OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 analysis.server; | 5 library analysis.server; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:collection'; | 8 import 'dart:collection'; |
9 import 'dart:core' hide Resource; | 9 import 'dart:core' hide Resource; |
10 import 'dart:math' show max; | 10 import 'dart:math' show max; |
(...skipping 1538 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1549 | 1549 |
1550 ServerContextManagerCallbacks(this.analysisServer, this.resourceProvider); | 1550 ServerContextManagerCallbacks(this.analysisServer, this.resourceProvider); |
1551 | 1551 |
1552 @override | 1552 @override |
1553 AnalysisContext addContext( | 1553 AnalysisContext addContext( |
1554 Folder folder, AnalysisOptions options, FolderDisposition disposition) { | 1554 Folder folder, AnalysisOptions options, FolderDisposition disposition) { |
1555 InternalAnalysisContext context = | 1555 InternalAnalysisContext context = |
1556 AnalysisEngine.instance.createAnalysisContext(); | 1556 AnalysisEngine.instance.createAnalysisContext(); |
1557 context.contentCache = analysisServer.overlayState; | 1557 context.contentCache = analysisServer.overlayState; |
1558 analysisServer.folderMap[folder] = context; | 1558 analysisServer.folderMap[folder] = context; |
1559 _locateEmbedderYamls(context, disposition); | |
1560 context.sourceFactory = | 1559 context.sourceFactory = |
1561 _createSourceFactory(context, options, disposition, folder); | 1560 _createSourceFactory(context, options, disposition, folder); |
1562 context.analysisOptions = options; | 1561 context.analysisOptions = options; |
1563 analysisServer._onContextsChangedController | 1562 analysisServer._onContextsChangedController |
1564 .add(new ContextsChangedEvent(added: [context])); | 1563 .add(new ContextsChangedEvent(added: [context])); |
1565 analysisServer.schedulePerformAnalysisOperation(context); | 1564 analysisServer.schedulePerformAnalysisOperation(context); |
1566 return context; | 1565 return context; |
1567 } | 1566 } |
1568 | 1567 |
1569 @override | 1568 @override |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1617 * Set up a [SourceFactory] that resolves packages as appropriate for the | 1616 * Set up a [SourceFactory] that resolves packages as appropriate for the |
1618 * given [disposition]. | 1617 * given [disposition]. |
1619 */ | 1618 */ |
1620 SourceFactory _createSourceFactory(InternalAnalysisContext context, | 1619 SourceFactory _createSourceFactory(InternalAnalysisContext context, |
1621 AnalysisOptions options, FolderDisposition disposition, Folder folder) { | 1620 AnalysisOptions options, FolderDisposition disposition, Folder folder) { |
1622 List<UriResolver> resolvers = []; | 1621 List<UriResolver> resolvers = []; |
1623 List<UriResolver> packageUriResolvers = | 1622 List<UriResolver> packageUriResolvers = |
1624 disposition.createPackageUriResolvers(resourceProvider); | 1623 disposition.createPackageUriResolvers(resourceProvider); |
1625 | 1624 |
1626 // If no embedded URI resolver was provided, defer to a locator-backed one. | 1625 // If no embedded URI resolver was provided, defer to a locator-backed one. |
1627 EmbedderSdk sdk = | 1626 EmbedderYamlLocator locator = |
1628 new EmbedderSdk(context.embedderYamlLocator.embedderYamls); | 1627 disposition.getEmbedderLocator(resourceProvider); |
| 1628 EmbedderSdk sdk = new EmbedderSdk(locator.embedderYamls); |
1629 if (sdk.libraryMap.size() == 0) { | 1629 if (sdk.libraryMap.size() == 0) { |
1630 // The embedder file has no mappings, so use the default Dart SDK. | 1630 // The embedder file has no mappings, so use the default Dart SDK. |
1631 resolvers.add(new DartUriResolver( | 1631 resolvers.add(new DartUriResolver( |
1632 analysisServer.sdkManager.getSdkForOptions(options))); | 1632 analysisServer.sdkManager.getSdkForOptions(options))); |
1633 } else { | 1633 } else { |
1634 // The embedder uri resolver has mappings, use it instead of the default | 1634 // The embedder uri resolver has mappings, use it instead of the default |
1635 // Dart SDK uri resolver. | 1635 // Dart SDK uri resolver. |
1636 resolvers.add(new DartUriResolver(sdk)); | 1636 resolvers.add(new DartUriResolver(sdk)); |
1637 } | 1637 } |
1638 | 1638 |
1639 resolvers.addAll(packageUriResolvers); | 1639 resolvers.addAll(packageUriResolvers); |
1640 resolvers.add(new ResourceUriResolver(resourceProvider)); | 1640 resolvers.add(new ResourceUriResolver(resourceProvider)); |
1641 return new SourceFactory(resolvers, disposition.packages); | 1641 return new SourceFactory(resolvers, disposition.packages); |
1642 } | 1642 } |
1643 | |
1644 /// If [disposition] has a package map, attempt to locate `_embedder.yaml` | |
1645 /// files. | |
1646 void _locateEmbedderYamls( | |
1647 InternalAnalysisContext context, FolderDisposition disposition) { | |
1648 Map<String, List<Folder>> packageMap; | |
1649 if (disposition is PackageMapDisposition) { | |
1650 packageMap = disposition.packageMap; | |
1651 } else if (disposition is PackagesFileDisposition) { | |
1652 packageMap = disposition.buildPackageMap(resourceProvider); | |
1653 } | |
1654 context.embedderYamlLocator.refresh(packageMap); | |
1655 } | |
1656 } | 1643 } |
1657 | 1644 |
1658 /** | 1645 /** |
1659 * A class used by [AnalysisServer] to record performance information | 1646 * A class used by [AnalysisServer] to record performance information |
1660 * such as request latency. | 1647 * such as request latency. |
1661 */ | 1648 */ |
1662 class ServerPerformance { | 1649 class ServerPerformance { |
1663 /** | 1650 /** |
1664 * The creation time and the time when performance information | 1651 * The creation time and the time when performance information |
1665 * started to be recorded here. | 1652 * started to be recorded here. |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1749 /** | 1736 /** |
1750 * The [PerformanceTag] for time spent in server request handlers. | 1737 * The [PerformanceTag] for time spent in server request handlers. |
1751 */ | 1738 */ |
1752 static PerformanceTag serverRequests = new PerformanceTag('serverRequests'); | 1739 static PerformanceTag serverRequests = new PerformanceTag('serverRequests'); |
1753 | 1740 |
1754 /** | 1741 /** |
1755 * The [PerformanceTag] for time spent in split store microtasks. | 1742 * The [PerformanceTag] for time spent in split store microtasks. |
1756 */ | 1743 */ |
1757 static PerformanceTag splitStore = new PerformanceTag('splitStore'); | 1744 static PerformanceTag splitStore = new PerformanceTag('splitStore'); |
1758 } | 1745 } |
OLD | NEW |