| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 library analysis_server.src.server.http_server; | 5 library analysis_server.src.server.http_server; |
| 6 | 6 |
| 7 import 'dart:async'; | 7 import 'dart:async'; |
| 8 import 'dart:io'; | 8 import 'dart:io'; |
| 9 | 9 |
| 10 import 'package:analysis_server/src/channel/web_socket_channel.dart'; | 10 import 'package:analysis_server/src/channel/web_socket_channel.dart'; |
| 11 import 'package:analysis_server/src/socket_server.dart'; | 11 import 'package:analysis_server/src/socket_server.dart'; |
| 12 import 'package:analysis_server/src/status/get_handler.dart'; | 12 import 'package:analysis_server/src/status/get_handler.dart'; |
| 13 import 'package:analysis_server/src/status/get_handler2.dart'; |
| 13 | 14 |
| 14 /** | 15 /** |
| 15 * Instances of the class [HttpServer] implement a simple HTTP server. The | 16 * Instances of the class [HttpServer] implement a simple HTTP server. The |
| 16 * primary responsibility of this server is to listen for an UPGRADE request and | 17 * primary responsibility of this server is to listen for an UPGRADE request and |
| 17 * to start an analysis server. | 18 * to start an analysis server. |
| 18 */ | 19 */ |
| 19 class HttpAnalysisServer { | 20 class HttpAnalysisServer { |
| 20 /** | 21 /** |
| 21 * Number of lines of print output to capture. | 22 * Number of lines of print output to capture. |
| 22 */ | 23 */ |
| 23 static const int MAX_PRINT_BUFFER_LENGTH = 1000; | 24 static const int MAX_PRINT_BUFFER_LENGTH = 1000; |
| 24 | 25 |
| 25 /** | 26 /** |
| 26 * An object that can handle either a WebSocket connection or a connection | 27 * An object that can handle either a WebSocket connection or a connection |
| 27 * to the client over stdio. | 28 * to the client over stdio. |
| 28 */ | 29 */ |
| 29 SocketServer socketServer; | 30 SocketServer socketServer; |
| 30 | 31 |
| 31 /** | 32 /** |
| 32 * An object that can handle GET requests. | 33 * An object that can handle GET requests. |
| 33 */ | 34 */ |
| 34 GetHandler getHandler; | 35 AbstractGetHandler getHandler; |
| 35 | 36 |
| 36 /** | 37 /** |
| 37 * Future that is completed with the HTTP server once it is running. | 38 * Future that is completed with the HTTP server once it is running. |
| 38 */ | 39 */ |
| 39 Future<HttpServer> _server; | 40 Future<HttpServer> _server; |
| 40 | 41 |
| 41 /** | 42 /** |
| 42 * Last PRINT_BUFFER_LENGTH lines printed. | 43 * Last PRINT_BUFFER_LENGTH lines printed. |
| 43 */ | 44 */ |
| 44 List<String> _printBuffer = <String>[]; | 45 List<String> _printBuffer = <String>[]; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 71 void serveHttp(int port) { | 72 void serveHttp(int port) { |
| 72 _server = HttpServer.bind(InternetAddress.LOOPBACK_IP_V4, port); | 73 _server = HttpServer.bind(InternetAddress.LOOPBACK_IP_V4, port); |
| 73 _server.then(_handleServer).catchError((_) {/* Ignore errors. */}); | 74 _server.then(_handleServer).catchError((_) {/* Ignore errors. */}); |
| 74 } | 75 } |
| 75 | 76 |
| 76 /** | 77 /** |
| 77 * Handle a GET request received by the HTTP server. | 78 * Handle a GET request received by the HTTP server. |
| 78 */ | 79 */ |
| 79 void _handleGetRequest(HttpRequest request) { | 80 void _handleGetRequest(HttpRequest request) { |
| 80 if (getHandler == null) { | 81 if (getHandler == null) { |
| 81 getHandler = new GetHandler(socketServer, _printBuffer); | 82 if (socketServer.analysisServer.options.enableNewAnalysisDriver) { |
| 83 getHandler = new GetHandler2(socketServer, _printBuffer); |
| 84 } else { |
| 85 getHandler = new GetHandler(socketServer, _printBuffer); |
| 86 } |
| 82 } | 87 } |
| 83 getHandler.handleGetRequest(request); | 88 getHandler.handleGetRequest(request); |
| 84 } | 89 } |
| 85 | 90 |
| 86 /** | 91 /** |
| 87 * Attach a listener to a newly created HTTP server. | 92 * Attach a listener to a newly created HTTP server. |
| 88 */ | 93 */ |
| 89 void _handleServer(HttpServer httpServer) { | 94 void _handleServer(HttpServer httpServer) { |
| 90 httpServer.listen((HttpRequest request) { | 95 httpServer.listen((HttpRequest request) { |
| 91 List<String> updateValues = request.headers[HttpHeaders.UPGRADE]; | 96 List<String> updateValues = request.headers[HttpHeaders.UPGRADE]; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 116 */ | 121 */ |
| 117 void _returnUnknownRequest(HttpRequest request) { | 122 void _returnUnknownRequest(HttpRequest request) { |
| 118 HttpResponse response = request.response; | 123 HttpResponse response = request.response; |
| 119 response.statusCode = HttpStatus.NOT_FOUND; | 124 response.statusCode = HttpStatus.NOT_FOUND; |
| 120 response.headers.contentType = | 125 response.headers.contentType = |
| 121 new ContentType("text", "plain", charset: "utf-8"); | 126 new ContentType("text", "plain", charset: "utf-8"); |
| 122 response.write('Not found'); | 127 response.write('Not found'); |
| 123 response.close(); | 128 response.close(); |
| 124 } | 129 } |
| 125 } | 130 } |
| OLD | NEW |