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

Side by Side Diff: runtime/bin/vmservice/server.dart

Issue 2715423002: Add SILENT_OBSERVATORY environment variable to Observatory web server (Closed)
Patch Set: Created 3 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 part of vmservice_io; 5 part of vmservice_io;
6 6
7 final bool silentObservatory =
8 const bool.fromEnvironment('SILENT_OBSERVATORY');
9
10 void serverPrint(String s) {
11 if (silentObservatory) {
12 // We've been requested to be silent.
13 return;
14 }
15 print(s);
16 }
17
7 class WebSocketClient extends Client { 18 class WebSocketClient extends Client {
8 static const int PARSE_ERROR_CODE = 4000; 19 static const int PARSE_ERROR_CODE = 4000;
9 static const int BINARY_MESSAGE_ERROR_CODE = 4001; 20 static const int BINARY_MESSAGE_ERROR_CODE = 4001;
10 static const int NOT_MAP_ERROR_CODE = 4002; 21 static const int NOT_MAP_ERROR_CODE = 4002;
11 static const int ID_ERROR_CODE = 4003; 22 static const int ID_ERROR_CODE = 4003;
12 final WebSocket socket; 23 final WebSocket socket;
13 24
14 WebSocketClient(this.socket, VMService service) : super(service) { 25 WebSocketClient(this.socket, VMService service) : super(service) {
15 socket.listen((message) => onWebSocketMessage(message)); 26 socket.listen((message) => onWebSocketMessage(message));
16 socket.done.then((_) => close()); 27 socket.done.then((_) => close());
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 try { 64 try {
54 if (result is String || result is Uint8List) { 65 if (result is String || result is Uint8List) {
55 socket.add(result); // String or binary message. 66 socket.add(result); // String or binary message.
56 } else { 67 } else {
57 // String message as external Uint8List. 68 // String message as external Uint8List.
58 assert(result is List); 69 assert(result is List);
59 Uint8List cstring = result[0]; 70 Uint8List cstring = result[0];
60 socket.addUtf8Text(cstring); 71 socket.addUtf8Text(cstring);
61 } 72 }
62 } catch (e, st) { 73 } catch (e, st) {
63 print("Ignoring error posting over WebSocket."); 74 serverPrint("Ignoring error posting over WebSocket.");
64 print(e); 75 serverPrint(e);
65 print(st); 76 serverPrint(st);
66 } 77 }
67 } 78 }
68 79
69 dynamic toJson() { 80 dynamic toJson() {
70 Map map = super.toJson(); 81 Map map = super.toJson();
71 map['type'] = 'WebSocketClient'; 82 map['type'] = 'WebSocketClient';
72 map['socket'] = '$socket'; 83 map['socket'] = '$socket';
73 return map; 84 return map;
74 } 85 }
75 } 86 }
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 request.response.add(asset.data); 296 request.response.add(asset.data);
286 request.response.close(); 297 request.response.close();
287 return; 298 return;
288 } 299 }
289 // HTTP based service request. 300 // HTTP based service request.
290 try { 301 try {
291 var client = new HttpRequestClient(request, _service); 302 var client = new HttpRequestClient(request, _service);
292 var message = new Message.fromUri(client, request.uri); 303 var message = new Message.fromUri(client, request.uri);
293 client.onMessage(null, message); 304 client.onMessage(null, message);
294 } catch (e) { 305 } catch (e) {
295 print('Unexpected error processing HTTP request uri: ' 306 serverPrint('Unexpected error processing HTTP request uri: '
296 '${request.uri}\n$e\n'); 307 '${request.uri}\n$e\n');
297 rethrow; 308 rethrow;
298 } 309 }
299 } 310 }
300 311
301 Future startup() async { 312 Future startup() async {
302 if (_server != null) { 313 if (_server != null) {
303 // Already running. 314 // Already running.
304 return this; 315 return this;
305 } 316 }
306 317
307 // Startup HTTP server. 318 // Startup HTTP server.
308 try { 319 try {
309 var address; 320 var address;
310 if (Platform.isFuchsia) { 321 if (Platform.isFuchsia) {
311 address = InternetAddress.ANY_IP_V6; 322 address = InternetAddress.ANY_IP_V6;
312 } else { 323 } else {
313 var addresses = await InternetAddress.lookup(_ip); 324 var addresses = await InternetAddress.lookup(_ip);
314 // Prefer IPv4 addresses. 325 // Prefer IPv4 addresses.
315 for (var i = 0; i < addresses.length; i++) { 326 for (var i = 0; i < addresses.length; i++) {
316 address = addresses[i]; 327 address = addresses[i];
317 if (address.type == InternetAddressType.IP_V4) break; 328 if (address.type == InternetAddressType.IP_V4) break;
318 } 329 }
319 } 330 }
320 _server = await HttpServer.bind(address, _port); 331 _server = await HttpServer.bind(address, _port);
321 _server.listen(_requestHandler, cancelOnError: true); 332 _server.listen(_requestHandler, cancelOnError: true);
322 print('Observatory listening on $serverAddress'); 333 serverPrint('Observatory listening on $serverAddress');
323 // Server is up and running. 334 // Server is up and running.
324 _notifyServerState(serverAddress.toString()); 335 _notifyServerState(serverAddress.toString());
325 onServerAddressChange('$serverAddress'); 336 onServerAddressChange('$serverAddress');
326 return this; 337 return this;
327 } catch (e, st) { 338 } catch (e, st) {
328 print('Could not start Observatory HTTP server:\n$e\n$st\n'); 339 serverPrint('Could not start Observatory HTTP server:\n$e\n$st\n');
329 _notifyServerState(""); 340 _notifyServerState("");
330 onServerAddressChange(null); 341 onServerAddressChange(null);
331 return this; 342 return this;
332 } 343 }
333 } 344 }
334 345
335 Future cleanup(bool force) { 346 Future cleanup(bool force) {
336 if (_server == null) { 347 if (_server == null) {
337 return new Future.value(null); 348 return new Future.value(null);
338 } 349 }
339 return _server.close(force: force); 350 return _server.close(force: force);
340 } 351 }
341 352
342 Future shutdown(bool forced) { 353 Future shutdown(bool forced) {
343 if (_server == null) { 354 if (_server == null) {
344 // Not started. 355 // Not started.
345 return new Future.value(this); 356 return new Future.value(this);
346 } 357 }
347 358
348 // Shutdown HTTP server and subscription. 359 // Shutdown HTTP server and subscription.
349 Uri oldServerAddress = serverAddress; 360 Uri oldServerAddress = serverAddress;
350 return cleanup(forced).then((_) { 361 return cleanup(forced).then((_) {
351 print('Observatory no longer listening on $oldServerAddress'); 362 serverPrint('Observatory no longer listening on $oldServerAddress');
352 _server = null; 363 _server = null;
353 _notifyServerState(""); 364 _notifyServerState("");
354 onServerAddressChange(null); 365 onServerAddressChange(null);
355 return this; 366 return this;
356 }).catchError((e, st) { 367 }).catchError((e, st) {
357 _server = null; 368 _server = null;
358 print('Could not shutdown Observatory HTTP server:\n$e\n$st\n'); 369 serverPrint('Could not shutdown Observatory HTTP server:\n$e\n$st\n');
359 _notifyServerState(""); 370 _notifyServerState("");
360 onServerAddressChange(null); 371 onServerAddressChange(null);
361 return this; 372 return this;
362 }); 373 });
363 } 374 }
364 375
365 } 376 }
366 377
367 void _notifyServerState(String uri) 378 void _notifyServerState(String uri)
368 native "VMServiceIO_NotifyServerState"; 379 native "VMServiceIO_NotifyServerState";
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698