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

Unified Diff: pkg/analysis_server/lib/driver.dart

Issue 795833005: Server clean-up (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 11 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 | « pkg/analysis_server/bin/server.dart ('k') | pkg/analysis_server/lib/http_server.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analysis_server/lib/driver.dart
diff --git a/pkg/analysis_server/lib/driver.dart b/pkg/analysis_server/lib/driver.dart
deleted file mode 100644
index 9018541abb828b538d3754162a5a4ba4aeea942b..0000000000000000000000000000000000000000
--- a/pkg/analysis_server/lib/driver.dart
+++ /dev/null
@@ -1,321 +0,0 @@
-// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
-// 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.
-
-library driver;
-
-import 'dart:async';
-import 'dart:io';
-
-import 'package:analysis_server/http_server.dart';
-import 'package:analysis_server/plugin/plugin.dart';
-import 'package:analysis_server/src/analysis_server.dart';
-import 'package:analysis_server/src/plugin/plugin_impl.dart';
-import 'package:analysis_server/src/plugin/server_plugin.dart';
-import 'package:analysis_server/src/socket_server.dart';
-import 'package:analysis_server/stdio_server.dart';
-import 'package:analyzer/instrumentation/instrumentation.dart';
-import 'package:analyzer/src/generated/engine.dart';
-import 'package:analyzer/src/generated/incremental_logger.dart';
-import 'package:analyzer/src/generated/java_io.dart';
-import 'package:analyzer/src/generated/sdk.dart';
-import 'package:analyzer/src/generated/sdk_io.dart';
-import 'package:args/args.dart';
-
-
-/**
- * Initializes incremental logger.
- *
- * Supports following formats of [spec]:
- *
- * "console" - log to the console;
- * "file:/some/file/name" - log to the file, overwritten on start.
- */
-void _initIncrementalLogger(String spec) {
- logger = NULL_LOGGER;
- if (spec == null) {
- return;
- }
- // create logger
- if (spec == 'console') {
- logger = new StringSinkLogger(console.log);
- }
- if (spec.startsWith('file:')) {
- String fileName = spec.substring('file:'.length);
- File file = new File(fileName);
- IOSink sink = file.openWrite();
- logger = new StringSinkLogger(sink);
- }
-}
-
-
-/**
- * The [Driver] class represents a single running instance of the analysis
- * server application. It is responsible for parsing command line options
- * and starting the HTTP and/or stdio servers.
- */
-class Driver {
- /**
- * The name of the application that is used to start a server.
- */
- static const BINARY_NAME = "server";
-
- /**
- * The name of the option used to set the identifier for the client.
- */
- static const String CLIENT_ID = "client-id";
-
- /**
- * The name of the option used to enable incremental resolution of API
- * changes.
- */
- static const String ENABLE_INCREMENTAL_RESOLUTION_API =
- "enable-incremental-resolution-api";
-
- /**
- * The name of the option used to describe the incremental resolution logger.
- */
- static const String INCREMENTAL_RESOLUTION_LOG = "incremental-resolution-log";
-
- /**
- * The name of the option used to enable validation of incremental resolution
- * results.
- */
- static const String INCREMENTAL_RESOLUTION_VALIDATION =
- "incremental-resolution-validation";
-
- /**
- * The name of the option used to enable instrumentation.
- */
- static const String ENABLE_INSTRUMENTATION_OPTION = "enable-instrumentation";
-
- /**
- * The name of the option used to print usage information.
- */
- static const String HELP_OPTION = "help";
-
- /**
- * The name of the option used to specify if [print] should print to the
- * console instead of being intercepted.
- */
- static const String INTERNAL_PRINT_TO_CONSOLE = "internal-print-to-console";
-
- /**
- * The name of the option used to specify the port to which the server will
- * connect.
- */
- static const String PORT_OPTION = "port";
-
- /**
- * The path to the SDK.
- * TODO(paulberry): get rid of this once the 'analysis.updateSdks' request is
- * operational.
- */
- static const String SDK_OPTION = "sdk";
-
- /**
- * The name of the option used to disable error notifications.
- */
- static const String NO_ERROR_NOTIFICATION = "no-error-notification";
-
- /**
- * The instrumentation server that is to be used by the analysis server.
- */
- InstrumentationServer instrumentationServer;
-
- /**
- * The plugins that are defined outside the analysis_server package.
- */
- List<Plugin> _userDefinedPlugins = <Plugin>[];
-
- SocketServer socketServer;
-
- HttpAnalysisServer httpServer;
-
- StdioAnalysisServer stdioServer;
-
- Driver();
-
- /**
- * Set the [plugins] that are defined outside the analysis_server package.
- */
- void set userDefinedPlugins(List<Plugin> plugins) {
- _userDefinedPlugins = plugins == null ? <Plugin>[] : plugins;
- }
-
- /**
- * Use the given command-line arguments to start this server.
- */
- void start(List<String> args) {
- ArgParser parser = new ArgParser();
- parser.addOption(
- CLIENT_ID,
- help: "an identifier used to identify the client");
- parser.addFlag(
- ENABLE_INCREMENTAL_RESOLUTION_API,
- help: "enable using incremental resolution for API changes",
- defaultsTo: false,
- negatable: false);
- parser.addFlag(
- ENABLE_INSTRUMENTATION_OPTION,
- help: "enable sending instrumentation information to a server",
- defaultsTo: false,
- negatable: false);
- parser.addFlag(
- HELP_OPTION,
- help: "print this help message without starting a server",
- defaultsTo: false,
- negatable: false);
- parser.addOption(
- INCREMENTAL_RESOLUTION_LOG,
- help: "the description of the incremental resolution log");
- parser.addFlag(
- INCREMENTAL_RESOLUTION_VALIDATION,
- help: "enable validation of incremental resolution results (slow)",
- defaultsTo: false,
- negatable: false);
- parser.addFlag(
- INTERNAL_PRINT_TO_CONSOLE,
- help: "enable sending `print` output to the console",
- defaultsTo: false,
- negatable: false);
- parser.addOption(
- PORT_OPTION,
- help: "[port] the port on which the server will listen");
- parser.addOption(SDK_OPTION, help: "[path] the path to the sdk");
- parser.addFlag(
- NO_ERROR_NOTIFICATION,
- help:
- "disable sending all analysis error notifications to the server (not yet implemented)",
- defaultsTo: false,
- negatable: false);
-
- ArgResults results = parser.parse(args);
- if (results[HELP_OPTION]) {
- _printUsage(parser);
- return;
- }
-
- // TODO(brianwilkerson) Enable this after it is possible for an
- // instrumentation server to be provided.
-// if (results[ENABLE_INSTRUMENTATION_OPTION]) {
-// if (instrumentationServer == null) {
-// print('Exiting server: enabled instrumentation without providing an instrumentation server');
-// print('');
-// _printUsage(parser);
-// return;
-// }
-// } else {
-// if (instrumentationServer != null) {
-// print('Exiting server: providing an instrumentation server without enabling instrumentation');
-// print('');
-// _printUsage(parser);
-// return;
-// }
-// }
-
- int port;
- bool serve_http = false;
- if (results[PORT_OPTION] != null) {
- serve_http = true;
- try {
- port = int.parse(results[PORT_OPTION]);
- } on FormatException {
- print('Invalid port number: ${results[PORT_OPTION]}');
- print('');
- _printUsage(parser);
- exitCode = 1;
- return;
- }
- }
-
- AnalysisServerOptions analysisServerOptions = new AnalysisServerOptions();
- analysisServerOptions.enableIncrementalResolutionApi =
- results[ENABLE_INCREMENTAL_RESOLUTION_API];
- analysisServerOptions.enableIncrementalResolutionValidation =
- results[INCREMENTAL_RESOLUTION_VALIDATION];
-
- _initIncrementalLogger(results[INCREMENTAL_RESOLUTION_LOG]);
-
- DartSdk defaultSdk;
- if (results[SDK_OPTION] != null) {
- defaultSdk = new DirectoryBasedDartSdk(new JavaFile(results[SDK_OPTION]));
- } else {
- // No path to the SDK provided; use DirectoryBasedDartSdk.defaultSdk,
- // which will make a guess.
- defaultSdk = DirectoryBasedDartSdk.defaultSdk;
- }
-
- InstrumentationService service =
- new InstrumentationService(instrumentationServer);
-// service.logVersion(results[CLIENT_ID], defaultSdk.sdkVersion);
- AnalysisEngine.instance.instrumentationService = service;
- //
- // Process all of the plugins so that extensions are registered.
- //
- ServerPlugin serverPlugin = new ServerPlugin();
- List<Plugin> plugins = <Plugin>[];
- plugins.add(serverPlugin);
- plugins.addAll(_userDefinedPlugins);
- ExtensionManager manager = new ExtensionManager();
- manager.processPlugins(plugins);
-
- socketServer =
- new SocketServer(analysisServerOptions, defaultSdk, service, serverPlugin);
- httpServer = new HttpAnalysisServer(socketServer);
- stdioServer = new StdioAnalysisServer(socketServer);
-
- if (serve_http) {
- httpServer.serveHttp(port);
- }
-
- _captureExceptions(service, () {
- stdioServer.serveStdio().then((_) {
- if (serve_http) {
- httpServer.close();
- }
- service.shutdown();
- exit(0);
- });
- },
- print: results[INTERNAL_PRINT_TO_CONSOLE] ? null : httpServer.recordPrint);
- }
-
- /**
- * Execute the given [callback] within a zone that will capture any unhandled
- * exceptions and both report them to the client and send them to the given
- * instrumentation [service]. If a [print] function is provided, then also
- * capture any data printed by the callback and redirect it to the function.
- */
- dynamic _captureExceptions(InstrumentationService service, dynamic callback(),
- {void print(String line)}) {
- Function errorFunction =
- (Zone self, ZoneDelegate parent, Zone zone, dynamic exception,
- StackTrace stackTrace) {
- service.logPriorityException(exception, stackTrace);
- socketServer.analysisServer.reportException(exception, stackTrace);
- throw exception;
- };
- Function printFunction = print == null ?
- null :
- (Zone self, ZoneDelegate parent, Zone zone, String line) {
- // Note: we don't pass the line on to stdout, because that is reserved
- // for communication to the client.
- print(line);
- };
- ZoneSpecification zoneSpecification = new ZoneSpecification(
- handleUncaughtError: errorFunction,
- print: printFunction);
- return runZoned(callback, zoneSpecification: zoneSpecification);
- }
-
- /**
- * Print information about how to use the server.
- */
- void _printUsage(ArgParser parser) {
- print('Usage: $BINARY_NAME [flags]');
- print('');
- print('Supported flags are:');
- print(parser.usage);
- }
-}
« no previous file with comments | « pkg/analysis_server/bin/server.dart ('k') | pkg/analysis_server/lib/http_server.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698