| Index: pkg/analysis_server/lib/src/analysis_server.dart
|
| diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart
|
| index 4a1cb93bbe862c625c074a049ac90794ce9b6cbe..22a0fe1549ed10a1af18562a88a812d66e9c0bbd 100644
|
| --- a/pkg/analysis_server/lib/src/analysis_server.dart
|
| +++ b/pkg/analysis_server/lib/src/analysis_server.dart
|
| @@ -37,6 +37,7 @@ import 'package:analyzer/src/dart/analysis/byte_store.dart';
|
| import 'package:analyzer/src/dart/analysis/driver.dart' as nd;
|
| import 'package:analyzer/src/dart/analysis/file_byte_store.dart';
|
| import 'package:analyzer/src/dart/analysis/file_state.dart' as nd;
|
| +import 'package:analyzer/src/dart/analysis/status.dart' as nd;
|
| import 'package:analyzer/src/dart/ast/utilities.dart';
|
| import 'package:analyzer/src/generated/engine.dart';
|
| import 'package:analyzer/src/generated/sdk.dart';
|
| @@ -372,6 +373,7 @@ class AnalysisServer {
|
| 64 * 1024 * 1024);
|
| analysisDriverScheduler =
|
| new nd.AnalysisDriverScheduler(_analysisPerformanceLogger);
|
| + analysisDriverScheduler.status.listen(sendStatusNotificationNew);
|
| analysisDriverScheduler.start();
|
| if (useSingleContextManager) {
|
| contextManager = new SingleContextManager(resourceProvider, sdkManager,
|
| @@ -1125,6 +1127,25 @@ class AnalysisServer {
|
| }
|
|
|
| /**
|
| + * Send status notification to the client. The `operation` is the operation
|
| + * being performed or `null` if analysis is complete.
|
| + */
|
| + void sendStatusNotificationNew(nd.AnalysisStatus status) {
|
| + // Only send status when subscribed.
|
| + if (!serverServices.contains(ServerService.STATUS)) {
|
| + return;
|
| + }
|
| + // Only send status when it changes
|
| + if (statusAnalyzing == status.isAnalyzing) {
|
| + return;
|
| + }
|
| + statusAnalyzing = status.isAnalyzing;
|
| + AnalysisStatus analysis = new AnalysisStatus(status.isAnalyzing);
|
| + channel.sendNotification(
|
| + new ServerStatusParams(analysis: analysis).toNotification());
|
| + }
|
| +
|
| + /**
|
| * Implementation for `analysis.setAnalysisRoots`.
|
| *
|
| * TODO(scheglov) implement complete projects/contexts semantics.
|
|
|