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 analyzer.instrumentation.instrumentation; | 5 library analyzer.instrumentation.instrumentation; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:convert'; | 8 import 'dart:convert'; |
9 | 9 |
10 import 'package:analyzer/task/model.dart'; | 10 import 'package:analyzer/task/model.dart'; |
11 | 11 |
12 /** | 12 /** |
13 * A container with analysis performance constants. | 13 * A container with analysis performance constants. |
14 */ | 14 */ |
15 class AnalysisPerformanceKind { | 15 class AnalysisPerformanceKind { |
16 static const String FULL = 'analysis_full'; | 16 static const String FULL = 'analysis_full'; |
17 static const String INCREMENTAL = 'analysis_incremental'; | 17 static const String INCREMENTAL = 'analysis_incremental'; |
18 } | 18 } |
19 | 19 |
20 /** | 20 /** |
21 * The interface used by client code to communicate with an instrumentation | 21 * The interface used by client code to communicate with an instrumentation |
22 * server. | 22 * server. |
23 */ | 23 */ |
24 abstract class InstrumentationServer { | 24 abstract class InstrumentationServer { |
25 /** | 25 /** |
| 26 * Return the identifier used to identify the current session. |
| 27 */ |
| 28 String get sessionId; |
| 29 |
| 30 /** |
26 * Pass the given [message] to the instrumentation server so that it will be | 31 * Pass the given [message] to the instrumentation server so that it will be |
27 * logged with other messages. | 32 * logged with other messages. |
28 * | 33 * |
29 * This method should be used for most logging. | 34 * This method should be used for most logging. |
30 */ | 35 */ |
31 void log(String message); | 36 void log(String message); |
32 | 37 |
33 /** | 38 /** |
34 * Pass the given [message] to the instrumentation server so that it will be | 39 * Pass the given [message] to the instrumentation server so that it will be |
35 * logged with other messages. | 40 * logged with other messages. |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 */ | 94 */ |
90 InstrumentationService(this._instrumentationServer); | 95 InstrumentationService(this._instrumentationServer); |
91 | 96 |
92 /** | 97 /** |
93 * Return `true` if this [InstrumentationService] was initialized with a | 98 * Return `true` if this [InstrumentationService] was initialized with a |
94 * non-`null` server (and hence instrumentation is active). | 99 * non-`null` server (and hence instrumentation is active). |
95 */ | 100 */ |
96 bool get isActive => _instrumentationServer != null; | 101 bool get isActive => _instrumentationServer != null; |
97 | 102 |
98 /** | 103 /** |
| 104 * Return the identifier used to identify the current session. |
| 105 */ |
| 106 String get sessionId => _instrumentationServer?.sessionId ?? ''; |
| 107 |
| 108 /** |
99 * The current time, expressed as a decimal encoded number of milliseconds. | 109 * The current time, expressed as a decimal encoded number of milliseconds. |
100 */ | 110 */ |
101 String get _timestamp => new DateTime.now().millisecondsSinceEpoch.toString(); | 111 String get _timestamp => new DateTime.now().millisecondsSinceEpoch.toString(); |
102 | 112 |
103 /** | 113 /** |
104 * Log that the given analysis [task] is being performed in the given | 114 * Log that the given analysis [task] is being performed in the given |
105 * [context]. | 115 * [context]. |
106 */ | 116 */ |
107 void logAnalysisTask(String context, AnalysisTask task) { | 117 void logAnalysisTask(String context, AnalysisTask task) { |
108 if (_instrumentationServer != null) { | 118 if (_instrumentationServer != null) { |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
350 | 360 |
351 /** | 361 /** |
352 * An [InstrumentationServer] that sends messages to multiple instances. | 362 * An [InstrumentationServer] that sends messages to multiple instances. |
353 */ | 363 */ |
354 class MulticastInstrumentationServer implements InstrumentationServer { | 364 class MulticastInstrumentationServer implements InstrumentationServer { |
355 final List<InstrumentationServer> _servers; | 365 final List<InstrumentationServer> _servers; |
356 | 366 |
357 MulticastInstrumentationServer(this._servers); | 367 MulticastInstrumentationServer(this._servers); |
358 | 368 |
359 @override | 369 @override |
| 370 String get sessionId => _servers[0].sessionId; |
| 371 |
| 372 @override |
360 void log(String message) { | 373 void log(String message) { |
361 for (InstrumentationServer server in _servers) { | 374 for (InstrumentationServer server in _servers) { |
362 server.log(message); | 375 server.log(message); |
363 } | 376 } |
364 } | 377 } |
365 | 378 |
366 @override | 379 @override |
367 void logWithPriority(String message) { | 380 void logWithPriority(String message) { |
368 for (InstrumentationServer server in _servers) { | 381 for (InstrumentationServer server in _servers) { |
369 server.logWithPriority(message); | 382 server.logWithPriority(message); |
370 } | 383 } |
371 } | 384 } |
372 | 385 |
373 @override | 386 @override |
374 Future shutdown() async { | 387 Future shutdown() async { |
375 for (InstrumentationServer server in _servers) { | 388 for (InstrumentationServer server in _servers) { |
376 await server.shutdown(); | 389 await server.shutdown(); |
377 } | 390 } |
378 } | 391 } |
379 } | 392 } |
OLD | NEW |