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