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. |