// 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 _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? 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 shutdown() { return Future.wait(_services.map((s) => s.shutdown())); } }