OLD | NEW |
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2017, 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 import 'package:analyzer/file_system/file_system.dart'; | 5 import 'package:analyzer/file_system/file_system.dart'; |
6 import 'package:analyzer/src/dart/analysis/byte_store.dart'; | 6 import 'package:analyzer/src/dart/analysis/byte_store.dart'; |
7 import 'package:analyzer/src/dart/analysis/driver.dart' | 7 import 'package:analyzer/src/dart/analysis/driver.dart' |
8 show AnalysisDriverScheduler, PerformanceLog; | 8 show AnalysisDriverScheduler, PerformanceLog; |
9 import 'package:analyzer/src/dart/analysis/file_byte_store.dart'; | 9 import 'package:analyzer/src/dart/analysis/file_byte_store.dart'; |
10 import 'package:analyzer/src/dart/analysis/file_state.dart'; | 10 import 'package:analyzer/src/dart/analysis/file_state.dart'; |
11 import 'package:analyzer/src/generated/source.dart'; | 11 import 'package:analyzer/src/generated/source.dart'; |
12 import 'package:analyzer_plugin/channel/channel.dart'; | 12 import 'package:analyzer_plugin/channel/channel.dart'; |
13 import 'package:analyzer_plugin/protocol/generated_protocol.dart'; | 13 import 'package:analyzer_plugin/protocol/generated_protocol.dart'; |
14 import 'package:analyzer_plugin/protocol/protocol.dart'; | 14 import 'package:analyzer_plugin/protocol/protocol.dart'; |
15 import 'package:analyzer_plugin/protocol/protocol_constants.dart'; | 15 import 'package:analyzer_plugin/protocol/protocol_constants.dart'; |
16 import 'package:analyzer_plugin/src/protocol/protocol_internal.dart'; | 16 import 'package:analyzer_plugin/src/protocol/protocol_internal.dart'; |
17 import 'package:analyzer_plugin/src/utilities/null_string_sink.dart'; | 17 import 'package:analyzer_plugin/src/utilities/null_string_sink.dart'; |
18 import 'package:analyzer_plugin/utilities/subscription_manager.dart'; | 18 import 'package:analyzer_plugin/utilities/subscription_manager.dart'; |
19 import 'package:pub_semver/pub_semver.dart'; | 19 import 'package:pub_semver/pub_semver.dart'; |
20 | 20 |
21 /** | 21 /** |
22 * The abstract superclass of any class implementing a plugin for the analysis | 22 * The abstract superclass of any class implementing a plugin for the analysis |
23 * server. | 23 * server. |
24 * | 24 * |
25 * Clients may not implement or mix-in this class, but are expected to extend | 25 * Clients may not implement or mix-in this class, but are expected to extend |
26 * it. | 26 * it. |
27 */ | 27 */ |
28 abstract class ServerPlugin { | 28 abstract class ServerPlugin { |
29 /** | 29 /** |
30 * A gigabyte. | |
31 */ | |
32 static const int G = 1024 * 1024 * 1024; | |
33 | |
34 /** | |
35 * A megabyte. | 30 * A megabyte. |
36 */ | 31 */ |
37 static const int M = 1024 * 1024; | 32 static const int M = 1024 * 1024; |
38 | 33 |
39 /** | 34 /** |
40 * The communication channel being used to communicate with the analysis | 35 * The communication channel being used to communicate with the analysis |
41 * server. | 36 * server. |
42 */ | 37 */ |
43 PluginCommunicationChannel _channel; | 38 PluginCommunicationChannel _channel; |
44 | 39 |
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 * Handle a 'plugin.versionCheck' request. | 258 * Handle a 'plugin.versionCheck' request. |
264 */ | 259 */ |
265 PluginVersionCheckResult handlePluginVersionCheck( | 260 PluginVersionCheckResult handlePluginVersionCheck( |
266 Map<String, Object> parameters) { | 261 Map<String, Object> parameters) { |
267 String byteStorePath = validateParameter(parameters, | 262 String byteStorePath = validateParameter(parameters, |
268 PLUGIN_REQUEST_VERSION_CHECK_BYTESTOREPATH, 'plugin.versionCheck'); | 263 PLUGIN_REQUEST_VERSION_CHECK_BYTESTOREPATH, 'plugin.versionCheck'); |
269 String versionString = validateParameter(parameters, | 264 String versionString = validateParameter(parameters, |
270 PLUGIN_REQUEST_VERSION_CHECK_VERSION, 'plugin.versionCheck'); | 265 PLUGIN_REQUEST_VERSION_CHECK_VERSION, 'plugin.versionCheck'); |
271 Version serverVersion = new Version.parse(versionString); | 266 Version serverVersion = new Version.parse(versionString); |
272 _byteStore = | 267 _byteStore = |
273 new MemoryCachingByteStore(new FileByteStore(byteStorePath, G), 64 * M); | 268 new MemoryCachingByteStore(new FileByteStore(byteStorePath), 64 * M); |
274 return new PluginVersionCheckResult( | 269 return new PluginVersionCheckResult( |
275 isCompatibleWith(serverVersion), name, version, fileGlobsToAnalyze, | 270 isCompatibleWith(serverVersion), name, version, fileGlobsToAnalyze, |
276 contactInfo: contactInfo); | 271 contactInfo: contactInfo); |
277 } | 272 } |
278 | 273 |
279 /** | 274 /** |
280 * Return `true` if this plugin is compatible with an analysis server that is | 275 * Return `true` if this plugin is compatible with an analysis server that is |
281 * using the given version of the plugin API. | 276 * using the given version of the plugin API. |
282 */ | 277 */ |
283 bool isCompatibleWith(Version serverVersion) => | 278 bool isCompatibleWith(Version serverVersion) => |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
401 response = new Response(id, | 396 response = new Response(id, |
402 error: new RequestError( | 397 error: new RequestError( |
403 RequestErrorCode.PLUGIN_ERROR, exception.toString(), | 398 RequestErrorCode.PLUGIN_ERROR, exception.toString(), |
404 stackTrace: stackTrace.toString())); | 399 stackTrace: stackTrace.toString())); |
405 } | 400 } |
406 if (response != null) { | 401 if (response != null) { |
407 _channel.sendResponse(response); | 402 _channel.sendResponse(response); |
408 } | 403 } |
409 } | 404 } |
410 } | 405 } |
OLD | NEW |