diff --git a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net10.0.apilist.cs b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net10.0.apilist.cs new file mode 100644 index 0000000..827fad2 --- /dev/null +++ b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net10.0.apilist.cs @@ -0,0 +1,582 @@ +// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-2.6.0) +// Name: Smdn.Net.MuninNode +// AssemblyVersion: 2.6.0.0 +// InformationalVersion: 2.6.0+e0dd656596dd5517e6360ee27212b5a87aa0228c +// TargetFramework: .NETCoreApp,Version=v10.0 +// Configuration: Release +// Metadata: IsTrimmable=True +// Metadata: RepositoryUrl=https://github.com/smdn/Smdn.Net.MuninNode +// Metadata: RepositoryBranch=main +// Metadata: RepositoryCommit=e0dd656596dd5517e6360ee27212b5a87aa0228c +// Referenced assemblies: +// Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60 +// Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60 +// Microsoft.Extensions.Options, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60 +// System.Collections, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a +// System.Collections.Concurrent, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a +// System.ComponentModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a +// System.IO.Pipelines, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 +// System.Linq, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a +// System.Memory, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51 +// System.Net.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a +// System.Net.Sockets, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a +// System.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a +// System.Security.Cryptography, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a +// System.Text.RegularExpressions, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a +// System.Threading, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a +#nullable enable annotations + +using System; +using System.Buffers; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Net; +using System.Net.Sockets; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading; +using System.Threading.Tasks; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Logging; +using Smdn.Net.MuninNode; +using Smdn.Net.MuninNode.DependencyInjection; +using Smdn.Net.MuninNode.Protocol; +using Smdn.Net.MuninNode.Transport; +using Smdn.Net.MuninPlugin; + +namespace Smdn.Net.MuninNode { + public interface IAccessRule { + bool IsAcceptable(IPEndPoint remoteEndPoint); + } + + public interface IMuninNode { + EndPoint EndPoint { get; } + string HostName { get; } + + Task RunAsync(CancellationToken cancellationToken); + } + + public static class IAccessRuleServiceCollectionExtensions { + public static IServiceCollection AddMuninNodeAccessRule(this IServiceCollection services, IAccessRule accessRule) {} + public static IServiceCollection AddMuninNodeAccessRule(this IServiceCollection services, IReadOnlyList addressListAllowFrom) {} + public static IServiceCollection AddMuninNodeAccessRule(this IServiceCollection services, IReadOnlyList addressListAllowFrom, bool shouldConsiderIPv4MappedIPv6Address) {} + public static IServiceCollection AddMuninNodeLoopbackOnlyAccessRule(this IServiceCollection services) {} + } + + public abstract class LocalNode : NodeBase { + public static LocalNode Create(IPluginProvider pluginProvider, int port, string? hostName = null, IReadOnlyList? addressListAllowFrom = null, IServiceProvider? serviceProvider = null) {} + public static LocalNode Create(IReadOnlyCollection plugins, int port, string? hostName = null, IReadOnlyList? addressListAllowFrom = null, IServiceProvider? serviceProvider = null) {} + + [Obsolete("Use a constructor overload that takes IMuninNodeListenerFactory as an argument.")] + protected LocalNode(IAccessRule? accessRule, ILogger? logger = null) {} + protected LocalNode(IMuninNodeListenerFactory? listenerFactory, IAccessRule? accessRule, ILogger? logger) {} + + [Obsolete("Use IMuninNodeListenerFactory and StartAsync instead.")] + protected override Socket CreateServerSocket() {} + } + + public class MuninNodeOptions { + public const string DefaultHostName = "munin-node.localhost"; + public const int DefaultPort = 4949; + + public static IPAddress DefaultAddress { get; } + + public MuninNodeOptions() {} + + public IAccessRule? AccessRule { get; set; } + public IPAddress Address { get; set; } + public string HostName { get; set; } + public int Port { get; set; } + + public MuninNodeOptions AllowFrom(IReadOnlyList addresses, bool shouldConsiderIPv4MappedIPv6Address = true) {} + public MuninNodeOptions AllowFromLoopbackOnly() {} + internal protected virtual void Configure(MuninNodeOptions baseOptions) {} + public MuninNodeOptions UseAnyAddress() {} + public MuninNodeOptions UseAnyAddress(int port) {} + public MuninNodeOptions UseLoopbackAddress() {} + public MuninNodeOptions UseLoopbackAddress(int port) {} + } + + public abstract class NodeBase : + IAsyncDisposable, + IDisposable, + IMuninNode, + IMuninNodeProfile + { + [Obsolete("Use a constructor overload that takes IMuninNodeListenerFactory as an argument.")] + protected NodeBase(IAccessRule? accessRule, ILogger? logger) {} + protected NodeBase(IMuninNodeListenerFactory listenerFactory, IAccessRule? accessRule, ILogger? logger) {} + protected NodeBase(IMuninProtocolHandlerFactory protocolHandlerFactory, IMuninNodeListenerFactory listenerFactory, IAccessRule? accessRule, ILogger? logger) {} + + public virtual Encoding Encoding { get; } + public EndPoint EndPoint { get; } + public abstract string HostName { get; } + protected IMuninNodeListener? Listener { get; } + [Obsolete("Use EndPoint instead.")] + public EndPoint LocalEndPoint { get; } + protected ILogger? Logger { get; } + public virtual Version NodeVersion { get; } + public abstract IPluginProvider PluginProvider { get; } + string IMuninNodeProfile.Version { get; } + + public async ValueTask AcceptAsync(bool throwIfCancellationRequested, CancellationToken cancellationToken) {} + public async ValueTask AcceptSingleSessionAsync(CancellationToken cancellationToken = default) {} + [Obsolete("Use IMuninNodeListenerFactory and StartAsync instead.")] + protected virtual Socket CreateServerSocket() {} + protected virtual void Dispose(bool disposing) {} + public void Dispose() {} + public async ValueTask DisposeAsync() {} + protected virtual async ValueTask DisposeAsyncCore() {} + protected virtual EndPoint GetLocalEndPointToBind() {} + protected virtual IMuninNodeProfile GetNodeProfile() {} + public Task RunAsync(CancellationToken cancellationToken) {} + [Obsolete("This method will be deprecated in the future.Use IMuninNodeListenerFactory and StartAsync instead.Make sure to override CreateServerSocket if you need to use this method.")] + public void Start() {} + public ValueTask StartAsync(CancellationToken cancellationToken = default) {} + protected virtual ValueTask StartedAsync(CancellationToken cancellationToken) {} + protected virtual ValueTask StartingAsync(CancellationToken cancellationToken) {} + public ValueTask StopAsync(CancellationToken cancellationToken = default) {} + protected virtual ValueTask StoppedAsync(CancellationToken cancellationToken) {} + protected virtual ValueTask StoppingAsync(CancellationToken cancellationToken) {} + protected void ThrowIfDisposed() {} + protected void ThrowIfPluginProviderIsNull() {} + } +} + +namespace Smdn.Net.MuninNode.DependencyInjection { + [Obsolete("Use or inherit MuninNodeBuilder instead.")] + public interface IMuninNodeBuilder { + string ServiceKey { get; } + IServiceCollection Services { get; } + + IMuninNode Build(IServiceProvider serviceProvider); + } + + public interface IMuninServiceBuilder { + IServiceCollection Services { get; } + } + + [Obsolete("Use MuninNodeBuilderExtensions instead.")] + public static class IMuninNodeBuilderExtensions { + public static IMuninNodeBuilder AddPlugin(this IMuninNodeBuilder builder, Func buildPlugin) {} + public static IMuninNodeBuilder AddPlugin(this IMuninNodeBuilder builder, IPlugin plugin) {} + public static IMuninNodeBuilder UseListenerFactory(this IMuninNodeBuilder builder, Func> createListenerAsyncFunc) {} + public static IMuninNodeBuilder UseListenerFactory(this IMuninNodeBuilder builder, Func buildListenerFactory) {} + public static IMuninNodeBuilder UseListenerFactory(this IMuninNodeBuilder builder, IMuninNodeListenerFactory listenerFactory) {} + public static IMuninNodeBuilder UsePluginProvider(this IMuninNodeBuilder builder, Func buildPluginProvider) {} + public static IMuninNodeBuilder UsePluginProvider(this IMuninNodeBuilder builder, IPluginProvider pluginProvider) {} + public static IMuninNodeBuilder UseSessionCallback(this IMuninNodeBuilder builder, Func buildSessionCallback) {} + public static IMuninNodeBuilder UseSessionCallback(this IMuninNodeBuilder builder, Func? reportSessionStartedAsyncFunc, Func? reportSessionClosedAsyncFunc) {} + public static IMuninNodeBuilder UseSessionCallback(this IMuninNodeBuilder builder, INodeSessionCallback sessionCallback) {} + public static IMuninNodeBuilder UseTransactionCallback(this IMuninNodeBuilder builder, Func? onStartTransactionAsyncFunc, Func? onEndTransactionAsyncFunc) {} + } + + public static class IMuninServiceBuilderExtensions { + public static IMuninNodeBuilder AddNode(this IMuninServiceBuilder builder) {} + public static IMuninNodeBuilder AddNode(this IMuninServiceBuilder builder, Action configure) {} + public static TMuninNodeBuilder AddNode(this IMuninServiceBuilder builder, Action configure, Func createBuilder) where TMuninNode : class, IMuninNode where TMuninNodeOptions : MuninNodeOptions, new() where TMuninNodeBuilder : MuninNodeBuilder {} + public static TMuninNodeBuilder AddNode(this IMuninServiceBuilder builder, Action configure, Func createBuilder) where TMuninNodeOptions : MuninNodeOptions, new() where TMuninNodeBuilder : MuninNodeBuilder {} + public static TMuninNodeBuilder AddNode(this IMuninServiceBuilder builder, Action configure, Func createBuilder) where TMuninNodeService : class, IMuninNode where TMuninNodeImplementation : class, TMuninNodeService where TMuninNodeOptions : MuninNodeOptions, new() where TMuninNodeBuilder : MuninNodeBuilder {} + } + + public static class IServiceCollectionExtensions { + public static IServiceCollection AddMunin(this IServiceCollection services, Action configure) {} + } + + public class MuninNodeBuilder : IMuninNodeBuilder { + internal protected MuninNodeBuilder(IMuninServiceBuilder serviceBuilder, string serviceKey) {} + + public string ServiceKey { get; } + public IServiceCollection Services { get; } + + protected virtual IMuninNode Build(IPluginProvider pluginProvider, IMuninNodeListenerFactory? listenerFactory, IServiceProvider serviceProvider) {} + public IMuninNode Build(IServiceProvider serviceProvider) {} + protected TMuninNodeOptions GetConfiguredOptions(IServiceProvider serviceProvider) where TMuninNodeOptions : MuninNodeOptions, new() {} + } + + public static class MuninNodeBuilderExtensions { + public static TMuninNodeBuilder AddPlugin(this TMuninNodeBuilder builder, Func buildPlugin) where TMuninNodeBuilder : MuninNodeBuilder {} + public static TMuninNodeBuilder AddPlugin(this TMuninNodeBuilder builder, IPlugin plugin) where TMuninNodeBuilder : MuninNodeBuilder {} + public static TMuninNode Build(this MuninNodeBuilder builder, IServiceProvider serviceProvider) where TMuninNode : IMuninNode {} + public static TMuninNodeBuilder UseListenerFactory(this TMuninNodeBuilder builder, Func> createListenerAsyncFunc) where TMuninNodeBuilder : MuninNodeBuilder {} + public static TMuninNodeBuilder UseListenerFactory(this TMuninNodeBuilder builder, Func buildListenerFactory) where TMuninNodeBuilder : MuninNodeBuilder {} + public static TMuninNodeBuilder UseListenerFactory(this TMuninNodeBuilder builder, IMuninNodeListenerFactory listenerFactory) where TMuninNodeBuilder : MuninNodeBuilder {} + public static TMuninNodeBuilder UsePluginProvider(this TMuninNodeBuilder builder, Func buildPluginProvider) where TMuninNodeBuilder : MuninNodeBuilder {} + public static TMuninNodeBuilder UsePluginProvider(this TMuninNodeBuilder builder, IPluginProvider pluginProvider) where TMuninNodeBuilder : MuninNodeBuilder {} + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Use UseTransactionCallback instead of UseSessionCallback.")] + public static TMuninNodeBuilder UseSessionCallback(this TMuninNodeBuilder builder, Func buildSessionCallback) where TMuninNodeBuilder : MuninNodeBuilder {} + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Use UseTransactionCallback instead of UseSessionCallback.")] + public static TMuninNodeBuilder UseSessionCallback(this TMuninNodeBuilder builder, Func? reportSessionStartedAsyncFunc, Func? reportSessionClosedAsyncFunc) where TMuninNodeBuilder : MuninNodeBuilder {} + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Use UseTransactionCallback instead of UseSessionCallback.")] + public static TMuninNodeBuilder UseSessionCallback(this TMuninNodeBuilder builder, INodeSessionCallback sessionCallback) where TMuninNodeBuilder : MuninNodeBuilder {} + public static TMuninNodeBuilder UseTransactionCallback(this TMuninNodeBuilder builder, Func? onStartTransactionAsyncFunc, Func? onEndTransactionAsyncFunc) where TMuninNodeBuilder : MuninNodeBuilder {} + } +} + +namespace Smdn.Net.MuninNode.Protocol { + public interface IMuninNodeProfile { + Encoding Encoding { get; } + string HostName { get; } + IPluginProvider PluginProvider { get; } + string Version { get; } + } + + public interface IMuninProtocolHandler { + ValueTask HandleCommandAsync(IMuninNodeClient client, ReadOnlySequence commandLine, CancellationToken cancellationToken); + ValueTask HandleTransactionEndAsync(IMuninNodeClient client, CancellationToken cancellationToken); + ValueTask HandleTransactionStartAsync(IMuninNodeClient client, CancellationToken cancellationToken); + } + + public interface IMuninProtocolHandlerFactory { + ValueTask CreateAsync(IMuninNodeProfile profile, CancellationToken cancellationToken); + } + + public class MuninProtocolHandler : IMuninProtocolHandler { + public MuninProtocolHandler(IMuninNodeProfile profile) {} + + protected bool IsDirtyConfigEnabled { get; } + protected bool IsMultigraphEnabled { get; } + + protected virtual ValueTask HandleCapCommandAsync(IMuninNodeClient client, ReadOnlySequence arguments, CancellationToken cancellationToken) {} + public ValueTask HandleCommandAsync(IMuninNodeClient client, ReadOnlySequence commandLine, CancellationToken cancellationToken = default) {} + protected virtual ValueTask HandleCommandAsyncCore(IMuninNodeClient client, ReadOnlySequence commandLine, CancellationToken cancellationToken) {} + protected virtual ValueTask HandleConfigCommandAsync(IMuninNodeClient client, ReadOnlySequence arguments, CancellationToken cancellationToken) {} + protected virtual async ValueTask HandleFetchCommandAsync(IMuninNodeClient client, ReadOnlySequence arguments, CancellationToken cancellationToken) {} + protected virtual ValueTask HandleListCommandAsync(IMuninNodeClient client, ReadOnlySequence arguments, CancellationToken cancellationToken) {} + protected virtual ValueTask HandleNodesCommandAsync(IMuninNodeClient client, CancellationToken cancellationToken) {} + protected virtual ValueTask HandleQuitCommandAsync(IMuninNodeClient client, CancellationToken cancellationToken) {} + public ValueTask HandleTransactionEndAsync(IMuninNodeClient client, CancellationToken cancellationToken = default) {} + protected virtual async ValueTask HandleTransactionEndAsyncCore(IMuninNodeClient client, CancellationToken cancellationToken) {} + public ValueTask HandleTransactionStartAsync(IMuninNodeClient client, CancellationToken cancellationToken = default) {} + protected virtual async ValueTask HandleTransactionStartAsyncCore(IMuninNodeClient client, CancellationToken cancellationToken) {} + protected virtual ValueTask HandleVersionCommandAsync(IMuninNodeClient client, CancellationToken cancellationToken) {} + protected ValueTask SendResponseAsync(IMuninNodeClient client, IEnumerable responseLines, CancellationToken cancellationToken) {} + } + + public static class MuninProtocolHandlerFactory { + public static IMuninProtocolHandlerFactory Default { get; } + } +} + +namespace Smdn.Net.MuninNode.Transport { + public interface IMuninNodeClient : + IAsyncDisposable, + IDisposable + { + EndPoint? EndPoint { get; } + + ValueTask DisconnectAsync(CancellationToken cancellationToken); + ValueTask ReceiveAsync(IBufferWriter buffer, CancellationToken cancellationToken); + ValueTask SendAsync(ReadOnlyMemory buffer, CancellationToken cancellationToken); + } + + public interface IMuninNodeListener : + IAsyncDisposable, + IDisposable + { + EndPoint? EndPoint { get; } + + ValueTask AcceptAsync(CancellationToken cancellationToken); + ValueTask StartAsync(CancellationToken cancellationToken); + } + + public interface IMuninNodeListenerFactory { + ValueTask CreateAsync(EndPoint endPoint, IMuninNode node, CancellationToken cancellationToken); + } + + public sealed class MuninNodeClientDisconnectedException : InvalidOperationException { + public MuninNodeClientDisconnectedException() {} + public MuninNodeClientDisconnectedException(string message) {} + public MuninNodeClientDisconnectedException(string message, Exception innerException) {} + } +} + +namespace Smdn.Net.MuninPlugin { + public interface IMultigraphPlugin : IPlugin { + IReadOnlyCollection Plugins { get; } + } + + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Use ITransactionCallback interface instead.")] + public interface INodeSessionCallback { + ValueTask ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken); + ValueTask ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken); + } + + public interface IPlugin { + IPluginDataSource DataSource { get; } + IPluginGraphAttributes GraphAttributes { get; } + string Name { get; } + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Instead of setting an object that implements $INodeSessionCallback to the property, implement the ITransactionCallback interface to the type itself.")] + INodeSessionCallback? SessionCallback { get; } + } + + public interface IPluginDataSource { + IReadOnlyCollection Fields { get; } + } + + public interface IPluginField { + PluginFieldAttributes Attributes { get; } + string Name { get; } + + ValueTask GetFormattedValueStringAsync(CancellationToken cancellationToken); + } + + public interface IPluginGraphAttributes { + IEnumerable EnumerateAttributes(); + } + + public interface IPluginProvider { + IReadOnlyCollection Plugins { get; } + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Instead of setting an object that implements $INodeSessionCallback to the property, implement the ITransactionCallback interface to the type itself.")] + INodeSessionCallback? SessionCallback { get; } + } + + public interface ITransactionCallback { + ValueTask EndTransactionAsync(CancellationToken cancellationToken); + ValueTask StartTransactionAsync(CancellationToken cancellationToken); + } + + public enum PluginFieldGraphStyle : int { + Area = 1, + AreaStack = 3, + Default = 0, + Line = 100, + LineStack = 200, + LineStackWidth1 = 201, + LineStackWidth2 = 202, + LineStackWidth3 = 203, + LineWidth1 = 101, + LineWidth2 = 102, + LineWidth3 = 103, + Stack = 2, + } + + public enum WellKnownCategory : int { + AntiVirus = 2, + ApplicationServer = 3, + AuthenticationServer = 4, + Backup = 5, + Cloud = 7, + ContentManagementSystem = 8, + Cpu = 9, + DatabaseServer = 10, + DevelopmentTool = 11, + Disk = 12, + Dns = 13, + FileSystem = 16, + FileTransfer = 14, + Forum = 15, + GameServer = 18, + HighThroughputComputing = 19, + LoadBalancer = 20, + Mail = 21, + MailingList = 22, + Memory = 23, + MessagingServer = 6, + Munin = 24, + Network = 25, + NetworkFiltering = 17, + OneSec = 1, + Other = 0, + Printing = 26, + Process = 27, + Radio = 28, + Search = 30, + Security = 31, + Sensor = 32, + SpamFilter = 33, + StorageAreaNetwork = 29, + Streaming = 34, + System = 35, + TimeSynchronization = 36, + Video = 37, + Virtualization = 38, + VoIP = 39, + WebServer = 40, + Wiki = 41, + Wireless = 42, + } + + public sealed class AggregatePluginProvider : + ReadOnlyCollection, + INodeSessionCallback, + IPluginProvider, + ITransactionCallback + { + public AggregatePluginProvider(IList pluginProviders) {} + + public IReadOnlyCollection Plugins { get; } + [Obsolete] + INodeSessionCallback? IPluginProvider.SessionCallback { get; } + + async ValueTask INodeSessionCallback.ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken) {} + async ValueTask INodeSessionCallback.ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken) {} + async ValueTask ITransactionCallback.EndTransactionAsync(CancellationToken cancellationToken) {} + async ValueTask ITransactionCallback.StartTransactionAsync(CancellationToken cancellationToken) {} + } + + public class MultigraphPlugin : IMultigraphPlugin { + public MultigraphPlugin(string name, IReadOnlyCollection plugins) {} + + public IPluginDataSource DataSource { get; } + public IPluginGraphAttributes GraphAttributes { get; } + public string Name { get; } + public IReadOnlyCollection Plugins { get; } + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Instead of setting an object that implements $INodeSessionCallback to the property, implement the ITransactionCallback interface to the type itself.")] + public INodeSessionCallback? SessionCallback { get; } + } + + public class Plugin : + INodeSessionCallback, + IPlugin, + IPluginDataSource, + ITransactionCallback + { + public Plugin(string name, PluginGraphAttributes graphAttributes, IReadOnlyCollection fields) {} + + public IReadOnlyCollection Fields { get; } + public PluginGraphAttributes GraphAttributes { get; } + public string Name { get; } + IPluginDataSource IPlugin.DataSource { get; } + IPluginGraphAttributes IPlugin.GraphAttributes { get; } + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Instead of setting an object that implements $INodeSessionCallback to the property, implement the ITransactionCallback interface to the type itself.")] + INodeSessionCallback? IPlugin.SessionCallback { get; } + IReadOnlyCollection IPluginDataSource.Fields { get; } + + protected virtual ValueTask EndTransactionAsync(CancellationToken cancellationToken) {} + [Obsolete("This method will be removed in the next major version release. Override EndTransactionAsync instead.")] + protected virtual ValueTask ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken) {} + [Obsolete("This method will be removed in the next major version release. Override StartTransactionAsync instead.")] + protected virtual ValueTask ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken) {} + [Obsolete] + ValueTask INodeSessionCallback.ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken) {} + [Obsolete] + ValueTask INodeSessionCallback.ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken) {} + ValueTask ITransactionCallback.EndTransactionAsync(CancellationToken cancellationToken) {} + ValueTask ITransactionCallback.StartTransactionAsync(CancellationToken cancellationToken) {} + protected virtual ValueTask StartTransactionAsync(CancellationToken cancellationToken) {} + } + + public static class PluginFactory { + public static IPluginField CreateField(string label, Func fetchValue) {} + public static IPluginField CreateField(string label, PluginFieldGraphStyle graphStyle, Func fetchValue) {} + public static IPluginField CreateField(string label, PluginFieldGraphStyle graphStyle, PluginFieldNormalValueRange normalRangeForWarning, PluginFieldNormalValueRange normalRangeForCritical, Func fetchValue) {} + public static IPluginField CreateField(string name, string label, PluginFieldGraphStyle graphStyle, PluginFieldNormalValueRange normalRangeForWarning, PluginFieldNormalValueRange normalRangeForCritical, Func fetchValue) {} + public static IPluginField CreateField(string name, string label, PluginFieldGraphStyle graphStyle, PluginFieldNormalValueRange normalRangeForWarning, PluginFieldNormalValueRange normalRangeForCritical, string? negativeFieldName, Func fetchValue) {} + public static IPlugin CreatePlugin(string name, IPluginGraphAttributes graphAttributes, IReadOnlyCollection fields) {} + public static IPlugin CreatePlugin(string name, IPluginGraphAttributes graphAttributes, IReadOnlyCollection fields) {} + public static IPlugin CreatePlugin(string name, IPluginGraphAttributes graphAttributes, PluginFieldBase field) {} + [Obsolete("Use overloads that accept IPluginGraphAttributes instead.")] + public static IPlugin CreatePlugin(string name, PluginGraphAttributes graphAttributes, IReadOnlyCollection fields) {} + [Obsolete("Use overloads that accept IPluginGraphAttributes instead.")] + public static IPlugin CreatePlugin(string name, PluginGraphAttributes graphAttributes, IReadOnlyCollection fields) {} + [Obsolete("Use overloads that accept IPluginGraphAttributes instead.")] + public static IPlugin CreatePlugin(string name, PluginGraphAttributes graphAttributes, PluginFieldBase field) {} + public static IPlugin CreatePlugin(string name, string fieldLabel, Func fetchFieldValue, IPluginGraphAttributes graphAttributes) {} + [Obsolete("Use overloads that accept IPluginGraphAttributes instead.")] + public static IPlugin CreatePlugin(string name, string fieldLabel, Func fetchFieldValue, PluginGraphAttributes graphAttributes) {} + public static IPlugin CreatePlugin(string name, string fieldLabel, PluginFieldGraphStyle fieldGraphStyle, Func fetchFieldValue, IPluginGraphAttributes graphAttributes) {} + [Obsolete("Use overloads that accept IPluginGraphAttributes instead.")] + public static IPlugin CreatePlugin(string name, string fieldLabel, PluginFieldGraphStyle fieldGraphStyle, Func fetchFieldValue, PluginGraphAttributes graphAttributes) {} + } + + public abstract class PluginFieldBase : IPluginField { + protected PluginFieldBase(string label, string? name, PluginFieldGraphStyle graphStyle = PluginFieldGraphStyle.Default, PluginFieldNormalValueRange normalRangeForWarning = default, PluginFieldNormalValueRange normalRangeForCritical = default) {} + protected PluginFieldBase(string label, string? name, PluginFieldGraphStyle graphStyle, PluginFieldNormalValueRange normalRangeForWarning, PluginFieldNormalValueRange normalRangeForCritical, string? negativeFieldName) {} + + public PluginFieldGraphStyle GraphStyle { get; } + public string Label { get; } + public string Name { get; } + public string? NegativeFieldName { get; } + public PluginFieldNormalValueRange NormalRangeForCritical { get; } + public PluginFieldNormalValueRange NormalRangeForWarning { get; } + PluginFieldAttributes IPluginField.Attributes { get; } + + protected abstract ValueTask FetchValueAsync(CancellationToken cancellationToken); + async ValueTask IPluginField.GetFormattedValueStringAsync(CancellationToken cancellationToken) {} + } + + public sealed class PluginGraphAttributes : IPluginGraphAttributes { + public PluginGraphAttributes(string title, string category, string verticalLabel, bool scale, string arguments) {} + public PluginGraphAttributes(string title, string category, string verticalLabel, bool scale, string arguments, TimeSpan? updateRate, int? width, int? height, IEnumerable? order, string? totalValueLabel) {} + + public string Arguments { get; } + public string Category { get; } + public int? Height { get; } + public string? Order { get; } + public bool Scale { get; } + public string Title { get; } + public string? TotalValueLabel { get; } + public TimeSpan? UpdateRate { get; } + public string VerticalLabel { get; } + public int? Width { get; } + + public IEnumerable EnumerateAttributes() {} + } + + public class PluginGraphAttributesBuilder { + [GeneratedCode("System.Text.RegularExpressions.Generator", "10.0.13.7005")] + [GeneratedRegex("^[a-z0-9-.]+\z", (RegexOptions)536)] + public static Regex RegexCategory { get; } + [GeneratedCode("System.Text.RegularExpressions.Generator", "10.0.13.7005")] + [GeneratedRegex("^\P{C}+\z", (RegexOptions)536)] + public static Regex RegexTitle { get; } + + public PluginGraphAttributesBuilder(string title) {} + public PluginGraphAttributesBuilder(string title, PluginGraphAttributesBuilder baseBuilder) {} + + public PluginGraphAttributesBuilder AddGraphArgument(string argument) {} + public IPluginGraphAttributes Build() {} + public PluginGraphAttributesBuilder ClearGraphArguments() {} + public PluginGraphAttributesBuilder DisableUnitScaling() {} + public PluginGraphAttributesBuilder EnableUnitScaling() {} + public PluginGraphAttributesBuilder HideGraph() {} + public PluginGraphAttributesBuilder ShowGraph() {} + public PluginGraphAttributesBuilder WithCategory(WellKnownCategory category) {} + public PluginGraphAttributesBuilder WithCategory(string category) {} + public PluginGraphAttributesBuilder WithCategoryOther() {} + public PluginGraphAttributesBuilder WithFieldOrder(IEnumerable order) {} + public PluginGraphAttributesBuilder WithFormatString(string printf) {} + public PluginGraphAttributesBuilder WithGraphBinaryBase() {} + public PluginGraphAttributesBuilder WithGraphDataSize(string graphDataSize) {} + public PluginGraphAttributesBuilder WithGraphDecimalBase() {} + public PluginGraphAttributesBuilder WithGraphLimit(double lowerLimitValue, double upperLimitValue) {} + public PluginGraphAttributesBuilder WithGraphLogarithmic() {} + public PluginGraphAttributesBuilder WithGraphLowerLimit(double @value) {} + public PluginGraphAttributesBuilder WithGraphRigid() {} + public PluginGraphAttributesBuilder WithGraphUpperLimit(double @value) {} + public PluginGraphAttributesBuilder WithHeight(int height) {} + public PluginGraphAttributesBuilder WithSize(int width, int height) {} + public PluginGraphAttributesBuilder WithTitle(string title) {} + public PluginGraphAttributesBuilder WithTotal(string labelForTotal) {} + public PluginGraphAttributesBuilder WithUpdateRate(TimeSpan updateRate) {} + public PluginGraphAttributesBuilder WithVerticalLabel(string verticalLabel) {} + public PluginGraphAttributesBuilder WithWidth(int width) {} + } + + public readonly struct PluginFieldAttributes { + public PluginFieldAttributes(string label, PluginFieldGraphStyle graphStyle = PluginFieldGraphStyle.Default) {} + public PluginFieldAttributes(string label, PluginFieldGraphStyle graphStyle = PluginFieldGraphStyle.Default, PluginFieldNormalValueRange normalRangeForWarning = default, PluginFieldNormalValueRange normalRangeForCritical = default) {} + public PluginFieldAttributes(string label, PluginFieldGraphStyle graphStyle, PluginFieldNormalValueRange normalRangeForWarning, PluginFieldNormalValueRange normalRangeForCritical, string? negativeFieldName) {} + + public PluginFieldGraphStyle GraphStyle { get; } + public string Label { get; } + public string? NegativeFieldName { get; } + public PluginFieldNormalValueRange NormalRangeForCritical { get; } + public PluginFieldNormalValueRange NormalRangeForWarning { get; } + } + + public readonly struct PluginFieldNormalValueRange { + public static readonly PluginFieldNormalValueRange None; // = "Smdn.Net.MuninPlugin.PluginFieldNormalValueRange" + + public static PluginFieldNormalValueRange CreateMax(double max) {} + public static PluginFieldNormalValueRange CreateMin(double min) {} + public static PluginFieldNormalValueRange CreateRange(double min, double max) {} + + public bool HasValue { get; } + public double? Max { get; } + public double? Min { get; } + } +} +// API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.7.1.0. +// Smdn.Reflection.ReverseGenerating.ListApi.Core v1.5.0.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating) diff --git a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net8.0.apilist.cs b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net8.0.apilist.cs index 65f8e37..67514ee 100644 --- a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net8.0.apilist.cs +++ b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net8.0.apilist.cs @@ -1,9 +1,13 @@ -// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-2.5.0) +// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-2.6.0) // Name: Smdn.Net.MuninNode -// AssemblyVersion: 2.5.0.0 -// InformationalVersion: 2.5.0+41ff114bf69b864033a05a389896010d3eefe4d5 +// AssemblyVersion: 2.6.0.0 +// InformationalVersion: 2.6.0+e0dd656596dd5517e6360ee27212b5a87aa0228c // TargetFramework: .NETCoreApp,Version=v8.0 // Configuration: Release +// Metadata: IsTrimmable=True +// Metadata: RepositoryUrl=https://github.com/smdn/Smdn.Net.MuninNode +// Metadata: RepositoryBranch=main +// Metadata: RepositoryCommit=e0dd656596dd5517e6360ee27212b5a87aa0228c // Referenced assemblies: // Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60 // Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60 @@ -164,6 +168,7 @@ public static IMuninNodeBuilder UsePluginProvider(this IMuninNodeBuilder builder public static IMuninNodeBuilder UseSessionCallback(this IMuninNodeBuilder builder, Func buildSessionCallback) {} public static IMuninNodeBuilder UseSessionCallback(this IMuninNodeBuilder builder, Func? reportSessionStartedAsyncFunc, Func? reportSessionClosedAsyncFunc) {} public static IMuninNodeBuilder UseSessionCallback(this IMuninNodeBuilder builder, INodeSessionCallback sessionCallback) {} + public static IMuninNodeBuilder UseTransactionCallback(this IMuninNodeBuilder builder, Func? onStartTransactionAsyncFunc, Func? onEndTransactionAsyncFunc) {} } public static class IMuninServiceBuilderExtensions { @@ -186,7 +191,7 @@ internal protected MuninNodeBuilder(IMuninServiceBuilder serviceBuilder, string protected virtual IMuninNode Build(IPluginProvider pluginProvider, IMuninNodeListenerFactory? listenerFactory, IServiceProvider serviceProvider) {} public IMuninNode Build(IServiceProvider serviceProvider) {} - protected TMuninNodeOptions GetConfiguredOptions(IServiceProvider serviceProvider) where TMuninNodeOptions : MuninNodeOptions {} + protected TMuninNodeOptions GetConfiguredOptions(IServiceProvider serviceProvider) where TMuninNodeOptions : MuninNodeOptions, new() {} } public static class MuninNodeBuilderExtensions { @@ -198,9 +203,13 @@ public static TMuninNodeBuilder UseListenerFactory(this TMuni public static TMuninNodeBuilder UseListenerFactory(this TMuninNodeBuilder builder, IMuninNodeListenerFactory listenerFactory) where TMuninNodeBuilder : MuninNodeBuilder {} public static TMuninNodeBuilder UsePluginProvider(this TMuninNodeBuilder builder, Func buildPluginProvider) where TMuninNodeBuilder : MuninNodeBuilder {} public static TMuninNodeBuilder UsePluginProvider(this TMuninNodeBuilder builder, IPluginProvider pluginProvider) where TMuninNodeBuilder : MuninNodeBuilder {} + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Use UseTransactionCallback instead of UseSessionCallback.")] public static TMuninNodeBuilder UseSessionCallback(this TMuninNodeBuilder builder, Func buildSessionCallback) where TMuninNodeBuilder : MuninNodeBuilder {} + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Use UseTransactionCallback instead of UseSessionCallback.")] public static TMuninNodeBuilder UseSessionCallback(this TMuninNodeBuilder builder, Func? reportSessionStartedAsyncFunc, Func? reportSessionClosedAsyncFunc) where TMuninNodeBuilder : MuninNodeBuilder {} + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Use UseTransactionCallback instead of UseSessionCallback.")] public static TMuninNodeBuilder UseSessionCallback(this TMuninNodeBuilder builder, INodeSessionCallback sessionCallback) where TMuninNodeBuilder : MuninNodeBuilder {} + public static TMuninNodeBuilder UseTransactionCallback(this TMuninNodeBuilder builder, Func? onStartTransactionAsyncFunc, Func? onEndTransactionAsyncFunc) where TMuninNodeBuilder : MuninNodeBuilder {} } } @@ -237,9 +246,9 @@ protected virtual ValueTask HandleListCommandAsync(IMuninNodeClient client, Read protected virtual ValueTask HandleNodesCommandAsync(IMuninNodeClient client, CancellationToken cancellationToken) {} protected virtual ValueTask HandleQuitCommandAsync(IMuninNodeClient client, CancellationToken cancellationToken) {} public ValueTask HandleTransactionEndAsync(IMuninNodeClient client, CancellationToken cancellationToken = default) {} - protected virtual ValueTask HandleTransactionEndAsyncCore(IMuninNodeClient client, CancellationToken cancellationToken) {} + protected virtual async ValueTask HandleTransactionEndAsyncCore(IMuninNodeClient client, CancellationToken cancellationToken) {} public ValueTask HandleTransactionStartAsync(IMuninNodeClient client, CancellationToken cancellationToken = default) {} - protected virtual ValueTask HandleTransactionStartAsyncCore(IMuninNodeClient client, CancellationToken cancellationToken) {} + protected virtual async ValueTask HandleTransactionStartAsyncCore(IMuninNodeClient client, CancellationToken cancellationToken) {} protected virtual ValueTask HandleVersionCommandAsync(IMuninNodeClient client, CancellationToken cancellationToken) {} protected ValueTask SendResponseAsync(IMuninNodeClient client, IEnumerable responseLines, CancellationToken cancellationToken) {} } @@ -287,6 +296,7 @@ public interface IMultigraphPlugin : IPlugin { IReadOnlyCollection Plugins { get; } } + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Use ITransactionCallback interface instead.")] public interface INodeSessionCallback { ValueTask ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken); ValueTask ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken); @@ -296,6 +306,7 @@ public interface IPlugin { IPluginDataSource DataSource { get; } IPluginGraphAttributes GraphAttributes { get; } string Name { get; } + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Instead of setting an object that implements $INodeSessionCallback to the property, implement the ITransactionCallback interface to the type itself.")] INodeSessionCallback? SessionCallback { get; } } @@ -316,9 +327,15 @@ public interface IPluginGraphAttributes { public interface IPluginProvider { IReadOnlyCollection Plugins { get; } + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Instead of setting an object that implements $INodeSessionCallback to the property, implement the ITransactionCallback interface to the type itself.")] INodeSessionCallback? SessionCallback { get; } } + public interface ITransactionCallback { + ValueTask EndTransactionAsync(CancellationToken cancellationToken); + ValueTask StartTransactionAsync(CancellationToken cancellationToken); + } + public enum PluginFieldGraphStyle : int { Area = 1, AreaStack = 3, @@ -383,15 +400,19 @@ public enum WellKnownCategory : int { public sealed class AggregatePluginProvider : ReadOnlyCollection, INodeSessionCallback, - IPluginProvider + IPluginProvider, + ITransactionCallback { public AggregatePluginProvider(IList pluginProviders) {} public IReadOnlyCollection Plugins { get; } + [Obsolete] INodeSessionCallback? IPluginProvider.SessionCallback { get; } async ValueTask INodeSessionCallback.ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken) {} async ValueTask INodeSessionCallback.ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken) {} + async ValueTask ITransactionCallback.EndTransactionAsync(CancellationToken cancellationToken) {} + async ValueTask ITransactionCallback.StartTransactionAsync(CancellationToken cancellationToken) {} } public class MultigraphPlugin : IMultigraphPlugin { @@ -401,13 +422,15 @@ public MultigraphPlugin(string name, IReadOnlyCollection plugins) {} public IPluginGraphAttributes GraphAttributes { get; } public string Name { get; } public IReadOnlyCollection Plugins { get; } + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Instead of setting an object that implements $INodeSessionCallback to the property, implement the ITransactionCallback interface to the type itself.")] public INodeSessionCallback? SessionCallback { get; } } public class Plugin : INodeSessionCallback, IPlugin, - IPluginDataSource + IPluginDataSource, + ITransactionCallback { public Plugin(string name, PluginGraphAttributes graphAttributes, IReadOnlyCollection fields) {} @@ -416,13 +439,22 @@ public Plugin(string name, PluginGraphAttributes graphAttributes, IReadOnlyColle public string Name { get; } IPluginDataSource IPlugin.DataSource { get; } IPluginGraphAttributes IPlugin.GraphAttributes { get; } + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Instead of setting an object that implements $INodeSessionCallback to the property, implement the ITransactionCallback interface to the type itself.")] INodeSessionCallback? IPlugin.SessionCallback { get; } IReadOnlyCollection IPluginDataSource.Fields { get; } + protected virtual ValueTask EndTransactionAsync(CancellationToken cancellationToken) {} + [Obsolete("This method will be removed in the next major version release. Override EndTransactionAsync instead.")] protected virtual ValueTask ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken) {} + [Obsolete("This method will be removed in the next major version release. Override StartTransactionAsync instead.")] protected virtual ValueTask ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken) {} + [Obsolete] ValueTask INodeSessionCallback.ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken) {} + [Obsolete] ValueTask INodeSessionCallback.ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken) {} + ValueTask ITransactionCallback.EndTransactionAsync(CancellationToken cancellationToken) {} + ValueTask ITransactionCallback.StartTransactionAsync(CancellationToken cancellationToken) {} + protected virtual ValueTask StartTransactionAsync(CancellationToken cancellationToken) {} } public static class PluginFactory { @@ -502,6 +534,7 @@ public PluginGraphAttributesBuilder WithCategoryOther() {} public PluginGraphAttributesBuilder WithFieldOrder(IEnumerable order) {} public PluginGraphAttributesBuilder WithFormatString(string printf) {} public PluginGraphAttributesBuilder WithGraphBinaryBase() {} + public PluginGraphAttributesBuilder WithGraphDataSize(string graphDataSize) {} public PluginGraphAttributesBuilder WithGraphDecimalBase() {} public PluginGraphAttributesBuilder WithGraphLimit(double lowerLimitValue, double upperLimitValue) {} public PluginGraphAttributesBuilder WithGraphLogarithmic() {} @@ -541,5 +574,5 @@ public static PluginFieldNormalValueRange CreateRange(double min, double max) {} public double? Min { get; } } } -// API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.6.0.0. -// Smdn.Reflection.ReverseGenerating.ListApi.Core v1.4.0.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating) +// API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.7.1.0. +// Smdn.Reflection.ReverseGenerating.ListApi.Core v1.5.0.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating) diff --git a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-netstandard2.1.apilist.cs b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-netstandard2.1.apilist.cs index c86ff11..2e463b0 100644 --- a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-netstandard2.1.apilist.cs +++ b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-netstandard2.1.apilist.cs @@ -1,9 +1,12 @@ -// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-2.5.0) +// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-2.6.0) // Name: Smdn.Net.MuninNode -// AssemblyVersion: 2.5.0.0 -// InformationalVersion: 2.5.0+41ff114bf69b864033a05a389896010d3eefe4d5 +// AssemblyVersion: 2.6.0.0 +// InformationalVersion: 2.6.0+e0dd656596dd5517e6360ee27212b5a87aa0228c // TargetFramework: .NETStandard,Version=v2.1 // Configuration: Release +// Metadata: RepositoryUrl=https://github.com/smdn/Smdn.Net.MuninNode +// Metadata: RepositoryBranch=main +// Metadata: RepositoryCommit=e0dd656596dd5517e6360ee27212b5a87aa0228c // Referenced assemblies: // Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60 // Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60 @@ -156,6 +159,7 @@ public static IMuninNodeBuilder UsePluginProvider(this IMuninNodeBuilder builder public static IMuninNodeBuilder UseSessionCallback(this IMuninNodeBuilder builder, Func buildSessionCallback) {} public static IMuninNodeBuilder UseSessionCallback(this IMuninNodeBuilder builder, Func? reportSessionStartedAsyncFunc, Func? reportSessionClosedAsyncFunc) {} public static IMuninNodeBuilder UseSessionCallback(this IMuninNodeBuilder builder, INodeSessionCallback sessionCallback) {} + public static IMuninNodeBuilder UseTransactionCallback(this IMuninNodeBuilder builder, Func? onStartTransactionAsyncFunc, Func? onEndTransactionAsyncFunc) {} } public static class IMuninServiceBuilderExtensions { @@ -178,7 +182,7 @@ internal protected MuninNodeBuilder(IMuninServiceBuilder serviceBuilder, string protected virtual IMuninNode Build(IPluginProvider pluginProvider, IMuninNodeListenerFactory? listenerFactory, IServiceProvider serviceProvider) {} public IMuninNode Build(IServiceProvider serviceProvider) {} - protected TMuninNodeOptions GetConfiguredOptions(IServiceProvider serviceProvider) where TMuninNodeOptions : MuninNodeOptions {} + protected TMuninNodeOptions GetConfiguredOptions(IServiceProvider serviceProvider) where TMuninNodeOptions : MuninNodeOptions, new() {} } public static class MuninNodeBuilderExtensions { @@ -190,9 +194,13 @@ public static TMuninNodeBuilder UseListenerFactory(this TMuni public static TMuninNodeBuilder UseListenerFactory(this TMuninNodeBuilder builder, IMuninNodeListenerFactory listenerFactory) where TMuninNodeBuilder : MuninNodeBuilder {} public static TMuninNodeBuilder UsePluginProvider(this TMuninNodeBuilder builder, Func buildPluginProvider) where TMuninNodeBuilder : MuninNodeBuilder {} public static TMuninNodeBuilder UsePluginProvider(this TMuninNodeBuilder builder, IPluginProvider pluginProvider) where TMuninNodeBuilder : MuninNodeBuilder {} + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Use UseTransactionCallback instead of UseSessionCallback.")] public static TMuninNodeBuilder UseSessionCallback(this TMuninNodeBuilder builder, Func buildSessionCallback) where TMuninNodeBuilder : MuninNodeBuilder {} + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Use UseTransactionCallback instead of UseSessionCallback.")] public static TMuninNodeBuilder UseSessionCallback(this TMuninNodeBuilder builder, Func? reportSessionStartedAsyncFunc, Func? reportSessionClosedAsyncFunc) where TMuninNodeBuilder : MuninNodeBuilder {} + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Use UseTransactionCallback instead of UseSessionCallback.")] public static TMuninNodeBuilder UseSessionCallback(this TMuninNodeBuilder builder, INodeSessionCallback sessionCallback) where TMuninNodeBuilder : MuninNodeBuilder {} + public static TMuninNodeBuilder UseTransactionCallback(this TMuninNodeBuilder builder, Func? onStartTransactionAsyncFunc, Func? onEndTransactionAsyncFunc) where TMuninNodeBuilder : MuninNodeBuilder {} } } @@ -229,9 +237,9 @@ protected virtual ValueTask HandleListCommandAsync(IMuninNodeClient client, Read protected virtual ValueTask HandleNodesCommandAsync(IMuninNodeClient client, CancellationToken cancellationToken) {} protected virtual ValueTask HandleQuitCommandAsync(IMuninNodeClient client, CancellationToken cancellationToken) {} public ValueTask HandleTransactionEndAsync(IMuninNodeClient client, CancellationToken cancellationToken = default) {} - protected virtual ValueTask HandleTransactionEndAsyncCore(IMuninNodeClient client, CancellationToken cancellationToken) {} + protected virtual async ValueTask HandleTransactionEndAsyncCore(IMuninNodeClient client, CancellationToken cancellationToken) {} public ValueTask HandleTransactionStartAsync(IMuninNodeClient client, CancellationToken cancellationToken = default) {} - protected virtual ValueTask HandleTransactionStartAsyncCore(IMuninNodeClient client, CancellationToken cancellationToken) {} + protected virtual async ValueTask HandleTransactionStartAsyncCore(IMuninNodeClient client, CancellationToken cancellationToken) {} protected virtual ValueTask HandleVersionCommandAsync(IMuninNodeClient client, CancellationToken cancellationToken) {} protected ValueTask SendResponseAsync(IMuninNodeClient client, IEnumerable responseLines, CancellationToken cancellationToken) {} } @@ -279,6 +287,7 @@ public interface IMultigraphPlugin : IPlugin { IReadOnlyCollection Plugins { get; } } + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Use ITransactionCallback interface instead.")] public interface INodeSessionCallback { ValueTask ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken); ValueTask ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken); @@ -288,6 +297,7 @@ public interface IPlugin { IPluginDataSource DataSource { get; } IPluginGraphAttributes GraphAttributes { get; } string Name { get; } + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Instead of setting an object that implements $INodeSessionCallback to the property, implement the ITransactionCallback interface to the type itself.")] INodeSessionCallback? SessionCallback { get; } } @@ -308,9 +318,15 @@ public interface IPluginGraphAttributes { public interface IPluginProvider { IReadOnlyCollection Plugins { get; } + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Instead of setting an object that implements $INodeSessionCallback to the property, implement the ITransactionCallback interface to the type itself.")] INodeSessionCallback? SessionCallback { get; } } + public interface ITransactionCallback { + ValueTask EndTransactionAsync(CancellationToken cancellationToken); + ValueTask StartTransactionAsync(CancellationToken cancellationToken); + } + public enum PluginFieldGraphStyle : int { Area = 1, AreaStack = 3, @@ -375,15 +391,19 @@ public enum WellKnownCategory : int { public sealed class AggregatePluginProvider : ReadOnlyCollection, INodeSessionCallback, - IPluginProvider + IPluginProvider, + ITransactionCallback { public AggregatePluginProvider(IList pluginProviders) {} public IReadOnlyCollection Plugins { get; } + [Obsolete] INodeSessionCallback? IPluginProvider.SessionCallback { get; } async ValueTask INodeSessionCallback.ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken) {} async ValueTask INodeSessionCallback.ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken) {} + async ValueTask ITransactionCallback.EndTransactionAsync(CancellationToken cancellationToken) {} + async ValueTask ITransactionCallback.StartTransactionAsync(CancellationToken cancellationToken) {} } public class MultigraphPlugin : IMultigraphPlugin { @@ -393,13 +413,15 @@ public MultigraphPlugin(string name, IReadOnlyCollection plugins) {} public IPluginGraphAttributes GraphAttributes { get; } public string Name { get; } public IReadOnlyCollection Plugins { get; } + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Instead of setting an object that implements $INodeSessionCallback to the property, implement the ITransactionCallback interface to the type itself.")] public INodeSessionCallback? SessionCallback { get; } } public class Plugin : INodeSessionCallback, IPlugin, - IPluginDataSource + IPluginDataSource, + ITransactionCallback { public Plugin(string name, PluginGraphAttributes graphAttributes, IReadOnlyCollection fields) {} @@ -408,13 +430,22 @@ public Plugin(string name, PluginGraphAttributes graphAttributes, IReadOnlyColle public string Name { get; } IPluginDataSource IPlugin.DataSource { get; } IPluginGraphAttributes IPlugin.GraphAttributes { get; } + [Obsolete("INodeSessionCallback is deprecated and will be removed in the next major version release. Instead of setting an object that implements $INodeSessionCallback to the property, implement the ITransactionCallback interface to the type itself.")] INodeSessionCallback? IPlugin.SessionCallback { get; } IReadOnlyCollection IPluginDataSource.Fields { get; } + protected virtual ValueTask EndTransactionAsync(CancellationToken cancellationToken) {} + [Obsolete("This method will be removed in the next major version release. Override EndTransactionAsync instead.")] protected virtual ValueTask ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken) {} + [Obsolete("This method will be removed in the next major version release. Override StartTransactionAsync instead.")] protected virtual ValueTask ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken) {} + [Obsolete] ValueTask INodeSessionCallback.ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken) {} + [Obsolete] ValueTask INodeSessionCallback.ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken) {} + ValueTask ITransactionCallback.EndTransactionAsync(CancellationToken cancellationToken) {} + ValueTask ITransactionCallback.StartTransactionAsync(CancellationToken cancellationToken) {} + protected virtual ValueTask StartTransactionAsync(CancellationToken cancellationToken) {} } public static class PluginFactory { @@ -494,6 +525,7 @@ public PluginGraphAttributesBuilder WithCategoryOther() {} public PluginGraphAttributesBuilder WithFieldOrder(IEnumerable order) {} public PluginGraphAttributesBuilder WithFormatString(string printf) {} public PluginGraphAttributesBuilder WithGraphBinaryBase() {} + public PluginGraphAttributesBuilder WithGraphDataSize(string graphDataSize) {} public PluginGraphAttributesBuilder WithGraphDecimalBase() {} public PluginGraphAttributesBuilder WithGraphLimit(double lowerLimitValue, double upperLimitValue) {} public PluginGraphAttributesBuilder WithGraphLogarithmic() {} @@ -533,5 +565,5 @@ public static PluginFieldNormalValueRange CreateRange(double min, double max) {} public double? Min { get; } } } -// API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.6.0.0. -// Smdn.Reflection.ReverseGenerating.ListApi.Core v1.4.0.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating) +// API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.7.1.0. +// Smdn.Reflection.ReverseGenerating.ListApi.Core v1.5.0.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)