// ConnectionMonitorRegistry.cs
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2025 Catswords OSS and WelsonJS Contributors
// https://github.com/gnh1201/welsonjs
//
using System;
using System.Collections.Generic;
namespace WelsonJS.Launcher
{
///
/// Keeps track of connection providers that should appear in the monitor UI.
///
public static class ConnectionMonitorRegistry
{
private static readonly object _syncRoot = new object();
private static readonly List _providers = new List();
public static void RegisterProvider(IManagedConnectionProvider provider)
{
if (provider == null)
{
throw new ArgumentNullException(nameof(provider));
}
lock (_syncRoot)
{
if (!_providers.Contains(provider))
{
_providers.Add(provider);
}
}
}
public static void UnregisterProvider(IManagedConnectionProvider provider)
{
if (provider == null)
{
return;
}
lock (_syncRoot)
{
_providers.Remove(provider);
}
}
public static IReadOnlyList GetProviders()
{
lock (_syncRoot)
{
return _providers.ToArray();
}
}
}
}