| // Copyright (c) 2019, 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. |
| |
| import 'package:analyzer/instrumentation/plugin_data.dart'; |
| import 'package:analyzer/instrumentation/service.dart'; |
| |
| /// An [InstrumentationService] that sends messages to multiple services. |
| class MulticastInstrumentationService implements InstrumentationService { |
| final List<InstrumentationService> _services; |
| |
| MulticastInstrumentationService(this._services); |
| |
| @override |
| void logError(String message) { |
| for (var service in _services) { |
| service.logError(message); |
| } |
| } |
| |
| @override |
| void logException( |
| Object exception, [ |
| StackTrace? stackTrace, |
| List<InstrumentationServiceAttachment>? attachments, |
| ]) { |
| for (var service in _services) { |
| service.logException(exception, stackTrace, attachments); |
| } |
| } |
| |
| @override |
| void logInfo(String message, [dynamic exception]) { |
| for (var service in _services) { |
| service.logInfo(message, exception); |
| } |
| } |
| |
| @override |
| void logLogEntry( |
| String level, |
| DateTime time, |
| String message, |
| Object exception, |
| StackTrace stackTrace, |
| ) { |
| for (var service in _services) { |
| service.logLogEntry(level, time, message, exception, stackTrace); |
| } |
| } |
| |
| @override |
| void logNotification(String notification) { |
| for (var service in _services) { |
| service.logNotification(notification); |
| } |
| } |
| |
| @override |
| void logPluginError( |
| PluginData plugin, |
| String code, |
| String message, |
| String stackTrace, |
| ) { |
| for (var service in _services) { |
| service.logPluginError(plugin, code, message, stackTrace); |
| } |
| } |
| |
| @override |
| void logPluginException( |
| PluginData plugin, |
| Object exception, |
| StackTrace? stackTrace, |
| ) { |
| for (var service in _services) { |
| service.logPluginException(plugin, exception, stackTrace); |
| } |
| } |
| |
| @override |
| void logPluginNotification(String pluginId, String notification) { |
| for (var service in _services) { |
| service.logPluginNotification(pluginId, notification); |
| } |
| } |
| |
| @override |
| void logPluginRequest(String pluginId, String request) { |
| for (var service in _services) { |
| service.logPluginRequest(pluginId, request); |
| } |
| } |
| |
| @override |
| void logPluginResponse(String pluginId, String response) { |
| for (var service in _services) { |
| service.logPluginResponse(pluginId, response); |
| } |
| } |
| |
| @override |
| void logPluginTimeout(PluginData plugin, String request) { |
| for (var service in _services) { |
| service.logPluginTimeout(plugin, request); |
| } |
| } |
| |
| @override |
| void logRequest(String request) { |
| for (var service in _services) { |
| service.logRequest(request); |
| } |
| } |
| |
| @override |
| void logResponse(String response) { |
| for (var service in _services) { |
| service.logResponse(response); |
| } |
| } |
| |
| @override |
| void logVersion( |
| String uuid, |
| String clientId, |
| String clientVersion, |
| String serverVersion, |
| String sdkVersion, |
| ) { |
| for (var service in _services) { |
| service.logVersion( |
| uuid, |
| clientId, |
| clientVersion, |
| serverVersion, |
| sdkVersion, |
| ); |
| } |
| } |
| |
| @override |
| void logWatchEvent(String folderPath, String filePath, String changeType) { |
| for (var service in _services) { |
| service.logWatchEvent(folderPath, filePath, changeType); |
| } |
| } |
| |
| @override |
| Future<void> shutdown() { |
| return Future.wait(_services.map((s) => s.shutdown())); |
| } |
| } |