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

Unified Diff: pkg/analyzer_plugin/lib/plugin/plugin.dart

Issue 2877793002: Make the plugin request handling async (Closed)
Patch Set: Created 3 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | pkg/analyzer_plugin/test/plugin/plugin_test.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer_plugin/lib/plugin/plugin.dart
diff --git a/pkg/analyzer_plugin/lib/plugin/plugin.dart b/pkg/analyzer_plugin/lib/plugin/plugin.dart
index a5f3fa1b0d70cdd1577deaf5e494f875eb04df68..b1cef681ff61978ba7b4f72d9143eb4b7d4f42c9 100644
--- a/pkg/analyzer_plugin/lib/plugin/plugin.dart
+++ b/pkg/analyzer_plugin/lib/plugin/plugin.dart
@@ -2,6 +2,8 @@
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
+import 'dart:async';
+
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/file_system/physical_file_system.dart';
import 'package:analyzer/src/dart/analysis/driver.dart'
@@ -179,8 +181,8 @@ abstract class ServerPlugin {
/**
* Handle an 'analysis.handleWatchEvents' request.
*/
- AnalysisHandleWatchEventsResult handleAnalysisHandleWatchEvents(
- AnalysisHandleWatchEventsParams parameters) {
+ Future<AnalysisHandleWatchEventsResult> handleAnalysisHandleWatchEvents(
+ AnalysisHandleWatchEventsParams parameters) async {
for (WatchEvent event in parameters.events) {
switch (event.type) {
case WatchEventType.ADD:
@@ -203,9 +205,9 @@ abstract class ServerPlugin {
/**
* Handle an 'analysis.reanalyze' request.
*/
- AnalysisReanalyzeResult handleAnalysisReanalyze(
- AnalysisReanalyzeParams parameters) {
- var rootPaths = parameters.roots;
+ Future<AnalysisReanalyzeResult> handleAnalysisReanalyze(
+ AnalysisReanalyzeParams parameters) async {
+ List<String> rootPaths = parameters.roots;
if (rootPaths == null) {
//
// Reanalyze everything.
@@ -236,15 +238,16 @@ abstract class ServerPlugin {
/**
* Handle an 'analysis.setContextBuilderOptions' request.
*/
- AnalysisSetContextBuilderOptionsResult handleAnalysisSetContextBuilderOptions(
- AnalysisSetContextBuilderOptionsParams parameters) =>
- null;
+ Future<AnalysisSetContextBuilderOptionsResult>
+ handleAnalysisSetContextBuilderOptions(
+ AnalysisSetContextBuilderOptionsParams parameters) async =>
+ null;
/**
* Handle an 'analysis.setContextRoots' request.
*/
- AnalysisSetContextRootsResult handleAnalysisSetContextRoots(
- AnalysisSetContextRootsParams parameters) {
+ Future<AnalysisSetContextRootsResult> handleAnalysisSetContextRoots(
+ AnalysisSetContextRootsParams parameters) async {
List<ContextRoot> contextRoots = parameters.roots;
List<ContextRoot> oldRoots = driverMap.keys.toList();
for (ContextRoot contextRoot in contextRoots) {
@@ -268,8 +271,8 @@ abstract class ServerPlugin {
/**
* Handle an 'analysis.setPriorityFiles' request.
*/
- AnalysisSetPriorityFilesResult handleAnalysisSetPriorityFiles(
- AnalysisSetPriorityFilesParams parameters) {
+ Future<AnalysisSetPriorityFilesResult> handleAnalysisSetPriorityFiles(
+ AnalysisSetPriorityFilesParams parameters) async {
List<String> files = parameters.files;
Map<AnalysisDriverGeneric, List<String>> filesByDriver =
<AnalysisDriverGeneric, List<String>>{};
@@ -292,8 +295,8 @@ abstract class ServerPlugin {
* override this method, but should instead use the [subscriptionManager] to
* access the list of subscriptions for any given file.
*/
- AnalysisSetSubscriptionsResult handleAnalysisSetSubscriptions(
- AnalysisSetSubscriptionsParams parameters) {
+ Future<AnalysisSetSubscriptionsResult> handleAnalysisSetSubscriptions(
+ AnalysisSetSubscriptionsParams parameters) async {
Map<AnalysisService, List<String>> subscriptions = parameters.subscriptions;
Map<String, List<AnalysisService>> newSubscriptions =
subscriptionManager.setSubscriptions(subscriptions);
@@ -306,8 +309,8 @@ abstract class ServerPlugin {
* override this method, but should instead use the [contentCache] to access
* the current content of overlaid files.
*/
- AnalysisUpdateContentResult handleAnalysisUpdateContent(
- AnalysisUpdateContentParams parameters) {
+ Future<AnalysisUpdateContentResult> handleAnalysisUpdateContent(
+ AnalysisUpdateContentParams parameters) async {
Map<String, Object> files = parameters.files;
files.forEach((String filePath, Object overlay) {
// We don't need to get the correct URI because only the full path is
@@ -343,15 +346,16 @@ abstract class ServerPlugin {
/**
* Handle a 'completion.getSuggestions' request.
*/
- CompletionGetSuggestionsResult handleCompletionGetSuggestions(
- CompletionGetSuggestionsParams parameters) =>
+ Future<CompletionGetSuggestionsResult> handleCompletionGetSuggestions(
+ CompletionGetSuggestionsParams parameters) async =>
new CompletionGetSuggestionsResult(
-1, -1, const <CompletionSuggestion>[]);
/**
* Handle an 'edit.getAssists' request.
*/
- EditGetAssistsResult handleEditGetAssists(EditGetAssistsParams parameters) =>
+ Future<EditGetAssistsResult> handleEditGetAssists(
+ EditGetAssistsParams parameters) async =>
new EditGetAssistsResult(const <PrioritizedSourceChange>[]);
/**
@@ -359,21 +363,22 @@ abstract class ServerPlugin {
* this method in order to participate in refactorings must also override the
* method [handleEditGetRefactoring].
*/
- EditGetAvailableRefactoringsResult handleEditGetAvailableRefactorings(
- EditGetAvailableRefactoringsParams parameters) =>
+ Future<EditGetAvailableRefactoringsResult> handleEditGetAvailableRefactorings(
+ EditGetAvailableRefactoringsParams parameters) async =>
new EditGetAvailableRefactoringsResult(const <RefactoringKind>[]);
/**
* Handle an 'edit.getFixes' request.
*/
- EditGetFixesResult handleEditGetFixes(EditGetFixesParams parameters) =>
+ Future<EditGetFixesResult> handleEditGetFixes(
+ EditGetFixesParams parameters) async =>
new EditGetFixesResult(const <AnalysisErrorFixes>[]);
/**
* Handle an 'edit.getRefactoring' request.
*/
- EditGetRefactoringResult handleEditGetRefactoring(
- EditGetRefactoringParams parameters) =>
+ Future<EditGetRefactoringResult> handleEditGetRefactoring(
+ EditGetRefactoringParams parameters) async =>
null;
/**
@@ -381,14 +386,15 @@ abstract class ServerPlugin {
* perform any required clean-up, but cannot prevent the plugin from shutting
* down.
*/
- PluginShutdownResult handlePluginShutdown(PluginShutdownParams parameters) =>
+ Future<PluginShutdownResult> handlePluginShutdown(
+ PluginShutdownParams parameters) async =>
new PluginShutdownResult();
/**
* Handle a 'plugin.versionCheck' request.
*/
- PluginVersionCheckResult handlePluginVersionCheck(
- PluginVersionCheckParams parameters) {
+ Future<PluginVersionCheckResult> handlePluginVersionCheck(
+ PluginVersionCheckParams parameters) async {
String byteStorePath = parameters.byteStorePath;
String versionString = parameters.version;
Version serverVersion = new Version.parse(versionString);
@@ -441,68 +447,68 @@ abstract class ServerPlugin {
* Compute the response that should be returned for the given [request], or
* `null` if the response has already been sent.
*/
- Response _getResponse(Request request) {
+ Future<Response> _getResponse(Request request) async {
ResponseResult result = null;
switch (request.method) {
case ANALYSIS_REQUEST_HANDLE_WATCH_EVENTS:
var params = new AnalysisHandleWatchEventsParams.fromRequest(request);
- result = handleAnalysisHandleWatchEvents(params);
+ result = await handleAnalysisHandleWatchEvents(params);
break;
case ANALYSIS_REQUEST_REANALYZE:
var params = new AnalysisReanalyzeParams.fromRequest(request);
- result = handleAnalysisReanalyze(params);
+ result = await handleAnalysisReanalyze(params);
break;
case ANALYSIS_REQUEST_SET_CONTEXT_BUILDER_OPTIONS:
var params =
new AnalysisSetContextBuilderOptionsParams.fromRequest(request);
- result = handleAnalysisSetContextBuilderOptions(params);
+ result = await handleAnalysisSetContextBuilderOptions(params);
break;
case ANALYSIS_REQUEST_SET_CONTEXT_ROOTS:
var params = new AnalysisSetContextRootsParams.fromRequest(request);
- result = handleAnalysisSetContextRoots(params);
+ result = await handleAnalysisSetContextRoots(params);
break;
case ANALYSIS_REQUEST_SET_PRIORITY_FILES:
var params = new AnalysisSetPriorityFilesParams.fromRequest(request);
- result = handleAnalysisSetPriorityFiles(params);
+ result = await handleAnalysisSetPriorityFiles(params);
break;
case ANALYSIS_REQUEST_SET_SUBSCRIPTIONS:
var params = new AnalysisSetSubscriptionsParams.fromRequest(request);
- result = handleAnalysisSetSubscriptions(params);
+ result = await handleAnalysisSetSubscriptions(params);
break;
case ANALYSIS_REQUEST_UPDATE_CONTENT:
var params = new AnalysisUpdateContentParams.fromRequest(request);
- result = handleAnalysisUpdateContent(params);
+ result = await handleAnalysisUpdateContent(params);
break;
case COMPLETION_REQUEST_GET_SUGGESTIONS:
var params = new CompletionGetSuggestionsParams.fromRequest(request);
- result = handleCompletionGetSuggestions(params);
+ result = await handleCompletionGetSuggestions(params);
break;
case EDIT_REQUEST_GET_ASSISTS:
var params = new EditGetAssistsParams.fromRequest(request);
- result = handleEditGetAssists(params);
+ result = await handleEditGetAssists(params);
break;
case EDIT_REQUEST_GET_AVAILABLE_REFACTORINGS:
var params =
new EditGetAvailableRefactoringsParams.fromRequest(request);
- result = handleEditGetAvailableRefactorings(params);
+ result = await handleEditGetAvailableRefactorings(params);
break;
case EDIT_REQUEST_GET_FIXES:
var params = new EditGetFixesParams.fromRequest(request);
- result = handleEditGetFixes(params);
+ result = await handleEditGetFixes(params);
break;
case EDIT_REQUEST_GET_REFACTORING:
var params = new EditGetRefactoringParams.fromRequest(request);
- result = handleEditGetRefactoring(params);
+ result = await handleEditGetRefactoring(params);
break;
case PLUGIN_REQUEST_SHUTDOWN:
var params = new PluginShutdownParams();
- result = handlePluginShutdown(params);
+ result = await handlePluginShutdown(params);
_channel.sendResponse(result.toResponse(request.id));
_channel.close();
return null;
case PLUGIN_REQUEST_VERSION_CHECK:
var params = new PluginVersionCheckParams.fromRequest(request);
- result = handlePluginVersionCheck(params);
+ result = await handlePluginVersionCheck(params);
break;
}
if (result == null) {
@@ -516,13 +522,13 @@ abstract class ServerPlugin {
* The method that is called when a [request] is received from the analysis
* server.
*/
- void _onRequest(Request request) {
+ Future<Null> _onRequest(Request request) async {
String id = request.id;
Response response;
try {
- response = _getResponse(request);
+ response = await _getResponse(request);
} on RequestFailure catch (exception) {
- _channel.sendResponse(new Response(id, error: exception.error));
+ response = new Response(id, error: exception.error);
} catch (exception, stackTrace) {
response = new Response(id,
error: new RequestError(
« no previous file with comments | « no previous file | pkg/analyzer_plugin/test/plugin/plugin_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698