blob: 7962f56eea4b63fdf12dc1531e61e7ca5c7a0409 [file] [log] [blame]
// 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()));
}
}