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

Side by Side Diff: pkg/analysis_server/lib/src/analysis_manager.dart

Issue 969113002: Reformat (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 9 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 import 'dart:async'; 5 import 'dart:async';
6 import 'dart:convert'; 6 import 'dart:convert';
7 import 'dart:io'; 7 import 'dart:io';
8 8
9 import 'package:analysis_server/src/channel/channel.dart'; 9 import 'package:analysis_server/src/channel/channel.dart';
10 import 'package:analysis_server/src/channel/web_socket_channel.dart'; 10 import 'package:analysis_server/src/channel/web_socket_channel.dart';
(...skipping 22 matching lines...) Expand all
33 * Stop the analysis server. 33 * Stop the analysis server.
34 * 34 *
35 * Returns `true` if the signal is successfully sent and process terminates. 35 * Returns `true` if the signal is successfully sent and process terminates.
36 * Otherwise there was no attached process or the signal could not be sent, 36 * Otherwise there was no attached process or the signal could not be sent,
37 * usually meaning that the process is already dead. 37 * usually meaning that the process is already dead.
38 */ 38 */
39 Future<bool> stop() { 39 Future<bool> stop() {
40 if (process == null) { 40 if (process == null) {
41 return channel.close().then((_) => false); 41 return channel.close().then((_) => false);
42 } 42 }
43 return channel.sendRequest( 43 return channel
44 new ServerShutdownParams().toRequest( 44 .sendRequest(new ServerShutdownParams().toRequest('0'))
45 '0')).timeout(new Duration(seconds: 2), onTimeout: () { 45 .timeout(new Duration(seconds: 2), onTimeout: () {
46 print('Expected shutdown response'); 46 print('Expected shutdown response');
47 }).then((Response response) { 47 }).then((Response response) {
48 return channel.close().then((_) => process.exitCode); 48 return channel.close().then((_) => process.exitCode);
49 }).timeout(new Duration(seconds: 2), onTimeout: () { 49 }).timeout(new Duration(seconds: 2), onTimeout: () {
50 print('Expected server to shutdown'); 50 print('Expected server to shutdown');
51 process.kill(); 51 process.kill();
52 }).then((int result) { 52 }).then((int result) {
53 if (result != null && result != 0) { 53 if (result != null && result != 0) {
54 exitCode = result; 54 exitCode = result;
55 } 55 }
(...skipping 19 matching lines...) Expand all
75 Future<AnalysisManager> _listenForPort(Process process) { 75 Future<AnalysisManager> _listenForPort(Process process) {
76 this.process = process; 76 this.process = process;
77 77
78 // Echo stdout and stderr 78 // Echo stdout and stderr
79 Stream out = process.stdout.transform(UTF8.decoder).asBroadcastStream(); 79 Stream out = process.stdout.transform(UTF8.decoder).asBroadcastStream();
80 out.listen((line) => print(line)); 80 out.listen((line) => print(line));
81 process.stderr.pipe(stderr); 81 process.stderr.pipe(stderr);
82 82
83 // Listen for port from server 83 // Listen for port from server
84 const String pattern = 'Listening on port '; 84 const String pattern = 'Listening on port ';
85 return out.firstWhere( 85 return out
86 (String line) => 86 .firstWhere((String line) => line.startsWith(pattern))
87 line.startsWith( 87 .timeout(new Duration(seconds: 10))
88 pattern)).timeout(new Duration(seconds: 10)).catchError((error) { 88 .catchError((error) {
89 exitCode = 1; 89 exitCode = 1;
90 process.kill(); 90 process.kill();
91 throw 'Expected port from analysis server'; 91 throw 'Expected port from analysis server';
92 }).then((String line) { 92 }).then((String line) {
93 String port = line.substring(pattern.length).trim(); 93 String port = line.substring(pattern.length).trim();
94 String url = 'ws://${InternetAddress.LOOPBACK_IP_V4.address}:$port/'; 94 String url = 'ws://${InternetAddress.LOOPBACK_IP_V4.address}:$port/';
95 return _openConnection(url); 95 return _openConnection(url);
96 }); 96 });
97 } 97 }
98 98
99 /** 99 /**
100 * Open a connection to the analysis server using the given URL. 100 * Open a connection to the analysis server using the given URL.
101 */ 101 */
102 Future<AnalysisManager> _openConnection(String serverUrl) { 102 Future<AnalysisManager> _openConnection(String serverUrl) {
103 Function onError = (error) { 103 Function onError = (error) {
104 exitCode = 1; 104 exitCode = 1;
105 if (process != null) { 105 if (process != null) {
106 process.kill(); 106 process.kill();
107 } 107 }
108 throw 'Failed to connect to analysis server at $serverUrl\n $error'; 108 throw 'Failed to connect to analysis server at $serverUrl\n $error';
109 }; 109 };
110 try { 110 try {
111 return WebSocket.connect( 111 return WebSocket
112 serverUrl).catchError(onError).then((WebSocket socket) { 112 .connect(serverUrl)
113 .catchError(onError)
114 .then((WebSocket socket) {
113 this.channel = new WebSocketClientChannel(socket); 115 this.channel = new WebSocketClientChannel(socket);
114 return this; 116 return this;
115 }); 117 });
116 } catch (error) { 118 } catch (error) {
117 onError(error); 119 onError(error);
118 } 120 }
119 } 121 }
120 122
121 /** 123 /**
122 * Open a connection to a running analysis server 124 * Open a connection to a running analysis server
123 * and return a future with a manager for that analysis server. 125 * and return a future with a manager for that analysis server.
124 */ 126 */
125 static Future<AnalysisManager> connect(String serverUrl) { 127 static Future<AnalysisManager> connect(String serverUrl) {
126 return new AnalysisManager()._openConnection(serverUrl); 128 return new AnalysisManager()._openConnection(serverUrl);
127 } 129 }
128 130
129 /** 131 /**
130 * Launch analysis server in a separate process 132 * Launch analysis server in a separate process
131 * and return a future with a manager for that analysis server. 133 * and return a future with a manager for that analysis server.
132 */ 134 */
133 static Future<AnalysisManager> start(String serverPath) { 135 static Future<AnalysisManager> start(String serverPath) {
134 return new AnalysisManager()._launchServer(serverPath); 136 return new AnalysisManager()._launchServer(serverPath);
135 } 137 }
136 } 138 }
OLDNEW
« no previous file with comments | « pkg/analysis_server/lib/src/analysis_logger.dart ('k') | pkg/analysis_server/lib/src/analysis_server.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698