Skip to content

Releases: smdn/Smdn.Net.MuninNode

Smdn.Net.MuninNode version 2.0.0

03 Nov 14:06
a565585
Compare
Choose a tag to compare

Released package

Release notes

The full release notes are available at gist.

Change log

Change log in this release:

API changes

API changes in this release:
diff --git a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
index 130febd..62a4f2b 100644
--- a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
@@ -1,215 +1,221 @@
-// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-1.3.0)
+// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-2.0.0)
 //   Name: Smdn.Net.MuninNode
-//   AssemblyVersion: 1.3.0.0
-//   InformationalVersion: 1.3.0+191d215fe57392cb544e2ffea221644a1007cfc0
+//   AssemblyVersion: 2.0.0.0
+//   InformationalVersion: 2.0.0+0c4121c0bc87932e6486c3b38a123cb59460ac02
 //   TargetFramework: .NETCoreApp,Version=v6.0
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Smdn.Fundamental.Exception, Version=3.0.0.0, Culture=neutral
 //     System.Collections, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.ComponentModel, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.IO.Pipelines, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Linq, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Memory, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Net.Primitives, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Net.Sockets, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Security.Cryptography.Algorithms, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Text.RegularExpressions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 #nullable enable annotations
 
 using System;
 using System.Collections.Generic;
 using System.Net;
 using System.Net.Sockets;
 using System.Text;
 using System.Threading;
 using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Logging;
 using Smdn.Net.MuninNode;
 using Smdn.Net.MuninPlugin;
 
 namespace Smdn.Net.MuninNode {
-  public class LocalNode : NodeBase {
-    public LocalNode(IPluginProvider pluginProvider, string hostName, int port, ILogger? logger = null) {}
-    public LocalNode(IPluginProvider pluginProvider, string hostName, int port, IServiceProvider? serviceProvider = null) {}
-    public LocalNode(IReadOnlyCollection<IPlugin> plugins, int port, IServiceProvider? serviceProvider = null) {}
-    public LocalNode(IReadOnlyCollection<IPlugin> plugins, string hostName, int port, IServiceProvider? serviceProvider = null) {}
+  public interface IAccessRule {
+    bool IsAcceptable(IPEndPoint remoteEndPoint);
+  }
+
+  public static class IAccessRuleServiceCollectionExtensions {
+    public static IServiceCollection AddMuninNodeAccessRule(this IServiceCollection services, IAccessRule accessRule) {}
+    public static IServiceCollection AddMuninNodeAccessRule(this IServiceCollection services, IReadOnlyList<IPAddress> addressListAllowFrom) {}
+  }
 
-    public IPEndPoint LocalEndPoint { get; }
+  public abstract class LocalNode : NodeBase {
+    public static LocalNode Create(IPluginProvider pluginProvider, int port, string? hostName = null, IReadOnlyList<IPAddress>? addressListAllowFrom = null, IServiceProvider? serviceProvider = null) {}
+    public static LocalNode Create(IReadOnlyCollection<IPlugin> plugins, int port, string? hostName = null, IReadOnlyList<IPAddress>? addressListAllowFrom = null, IServiceProvider? serviceProvider = null) {}
+
+    protected LocalNode(IAccessRule? accessRule, ILogger? logger = null) {}
 
     protected override Socket CreateServerSocket() {}
-    protected override bool IsClientAcceptable(IPEndPoint remoteEndPoint) {}
+    protected virtual EndPoint GetLocalEndPointToBind() {}
   }
 
   public abstract class NodeBase :
     IAsyncDisposable,
     IDisposable
   {
-    private protected class PluginProvider : IPluginProvider {
-      public PluginProvider(IReadOnlyCollection<IPlugin> plugins) {}
-
-      public IReadOnlyCollection<IPlugin> Plugins { get; }
-      public INodeSessionCallback? SessionCallback { get; }
-    }
-
-    protected NodeBase(IPluginProvider pluginProvider, string hostName, ILogger? logger) {}
-    protected NodeBase(IReadOnlyCollection<IPlugin> plugins, string hostName, ILogger? logger) {}
+    protected NodeBase(IAccessRule? accessRule, ILogger? logger) {}
 
     public virtual Encoding Encoding { get; }
-    public string HostName { get; }
+    public abstract string HostName { get; }
+    public EndPoint LocalEndPoint { get; }
     protected ILogger? Logger { get; }
     public virtual Version NodeVersion { get; }
-    [Obsolete("This member will be deprecated in future version.")]
-    public IReadOnlyCollection<IPlugin> Plugins { get; }
+    public abstract IPluginProvider PluginProvider { get; }
 
     public async ValueTask AcceptAsync(bool throwIfCancellationRequested, CancellationToken cancellationToken) {}
     public async ValueTask AcceptSingleSessionAsync(CancellationToken cancellationToken = default) {}
     protected abstract Socket CreateServerSocket();
     protected virtual void Dispose(bool disposing) {}
     public void Dispose() {}
     public async ValueTask DisposeAsync() {}
     protected virtual async ValueTask DisposeAsyncCore() {}
-    protected abstract bool IsClientAcceptable(IPEndPoint remoteEndPoint);
     public void Start() {}
+    protected void ThrowIfPluginProviderIsNull() {}
   }
 }
 
 namespace Smdn.Net.MuninPlugin {
   public interface INodeSessionCallback {
     ValueTask ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken);
     ValueTask ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken);
   }
 
   public interface IPlugin {
     IPluginDataSource DataSource { get; }
-    PluginGraphAttributes GraphAttributes { get; }
+    IPluginGraphAttributes GraphAttributes { get; }
     string Name { get; }
     INodeSessionCallback? SessionCallback { get; }
   }
 
   public interface IPluginDataSource {
     IReadOnlyCollection<IPluginField> Fields { get; }
   }
 
   public interface IPluginField {
     PluginFieldAttributes Attributes { get; }
     string Name { get; }
 
     ValueTask<string> GetFormattedValueStringAsync(CancellationToken cancellationToken);
   }
 
+  public interface IPluginGraphAttributes {
+    IEnumerable<string> EnumerateAttributes();
+  }
+
   public interface IPluginProvider {
     IReadOnlyCollection<IPlugin> Plugins { get; }
     INodeSessionCallback? SessionCallback { get; }
   }
 
   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 class Plugin :
     INodeSessionCallback,
     IPlugin,
     IPluginDataSource
   {
     public Plugin(string name, PluginGraphAttributes graphAttributes, IReadOnlyCollection<IPluginField> fields) {}
 
     public IReadOnlyCollection<IPluginField> Fields { get; }
     public PluginGraphAttributes GraphAttributes { get; }
     public string Name { get; }
     IPluginDataSource IPlugin.DataSource { get; }
+    IPluginGraphAttributes IPlugin.GraphAttributes { get; }
     INodeSessionCallback? IPlugin.SessionCallback { get; }
     IReadOnlyCollection<IPluginField> IPluginDataSource.Fields { get; }
 
     protected virtual ValueTask ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken) {}
     protected virtual ValueTask ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken) {}
     ValueTask INodeSessionCallback.ReportSessionClosedAsync(string sessionId, CancellationToken cancellati...
Read more

Smdn.Net.MuninNode version 1.3.0

11 Oct 11:32
1e4f59b
Compare
Choose a tag to compare

Released package

Release notes

The full release notes are available at gist.

Change log

Change log in this release:

API changes

API changes in this release:
diff --git a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
index 4bf85bf..130febd 100644
--- a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
@@ -1,210 +1,215 @@
-// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-1.2.0)
+// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-1.3.0)
 //   Name: Smdn.Net.MuninNode
-//   AssemblyVersion: 1.2.0.0
-//   InformationalVersion: 1.2.0+b0e11cd6b408018ad93f29b49e58cab7e9ef6b1b
+//   AssemblyVersion: 1.3.0.0
+//   InformationalVersion: 1.3.0+191d215fe57392cb544e2ffea221644a1007cfc0
 //   TargetFramework: .NETCoreApp,Version=v6.0
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Smdn.Fundamental.Exception, Version=3.0.0.0, Culture=neutral
 //     System.Collections, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.ComponentModel, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.IO.Pipelines, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Linq, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Memory, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Net.Primitives, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Net.Sockets, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Security.Cryptography.Algorithms, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Text.RegularExpressions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 #nullable enable annotations
 
 using System;
 using System.Collections.Generic;
 using System.Net;
 using System.Net.Sockets;
 using System.Text;
 using System.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.Logging;
 using Smdn.Net.MuninNode;
 using Smdn.Net.MuninPlugin;
 
 namespace Smdn.Net.MuninNode {
   public class LocalNode : NodeBase {
     public LocalNode(IPluginProvider pluginProvider, string hostName, int port, ILogger? logger = null) {}
     public LocalNode(IPluginProvider pluginProvider, string hostName, int port, IServiceProvider? serviceProvider = null) {}
     public LocalNode(IReadOnlyCollection<IPlugin> plugins, int port, IServiceProvider? serviceProvider = null) {}
     public LocalNode(IReadOnlyCollection<IPlugin> plugins, string hostName, int port, IServiceProvider? serviceProvider = null) {}
 
     public IPEndPoint LocalEndPoint { get; }
 
     protected override Socket CreateServerSocket() {}
     protected override bool IsClientAcceptable(IPEndPoint remoteEndPoint) {}
   }
 
   public abstract class NodeBase :
     IAsyncDisposable,
     IDisposable
   {
     private protected class PluginProvider : IPluginProvider {
       public PluginProvider(IReadOnlyCollection<IPlugin> plugins) {}
 
       public IReadOnlyCollection<IPlugin> Plugins { get; }
       public INodeSessionCallback? SessionCallback { get; }
     }
 
     protected NodeBase(IPluginProvider pluginProvider, string hostName, ILogger? logger) {}
     protected NodeBase(IReadOnlyCollection<IPlugin> plugins, string hostName, ILogger? logger) {}
 
     public virtual Encoding Encoding { get; }
     public string HostName { get; }
     protected ILogger? Logger { get; }
     public virtual Version NodeVersion { get; }
     [Obsolete("This member will be deprecated in future version.")]
     public IReadOnlyCollection<IPlugin> Plugins { get; }
 
     public async ValueTask AcceptAsync(bool throwIfCancellationRequested, CancellationToken cancellationToken) {}
     public async ValueTask AcceptSingleSessionAsync(CancellationToken cancellationToken = default) {}
     protected abstract Socket CreateServerSocket();
     protected virtual void Dispose(bool disposing) {}
     public void Dispose() {}
     public async ValueTask DisposeAsync() {}
     protected virtual async ValueTask DisposeAsyncCore() {}
     protected abstract bool IsClientAcceptable(IPEndPoint remoteEndPoint);
     public void Start() {}
   }
 }
 
 namespace Smdn.Net.MuninPlugin {
   public interface INodeSessionCallback {
     ValueTask ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken);
     ValueTask ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken);
   }
 
   public interface IPlugin {
     IPluginDataSource DataSource { get; }
     PluginGraphAttributes GraphAttributes { get; }
     string Name { get; }
     INodeSessionCallback? SessionCallback { get; }
   }
 
   public interface IPluginDataSource {
     IReadOnlyCollection<IPluginField> Fields { get; }
   }
 
   public interface IPluginField {
     PluginFieldAttributes Attributes { get; }
     string Name { get; }
 
     ValueTask<string> GetFormattedValueStringAsync(CancellationToken cancellationToken);
   }
 
   public interface IPluginProvider {
     IReadOnlyCollection<IPlugin> Plugins { get; }
     INodeSessionCallback? SessionCallback { get; }
   }
 
   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 class Plugin :
     INodeSessionCallback,
     IPlugin,
     IPluginDataSource
   {
     public Plugin(string name, PluginGraphAttributes graphAttributes, IReadOnlyCollection<IPluginField> fields) {}
 
     public IReadOnlyCollection<IPluginField> Fields { get; }
     public PluginGraphAttributes GraphAttributes { get; }
     public string Name { get; }
     IPluginDataSource IPlugin.DataSource { get; }
     INodeSessionCallback? IPlugin.SessionCallback { get; }
     IReadOnlyCollection<IPluginField> IPluginDataSource.Fields { get; }
 
     protected virtual ValueTask ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken) {}
     protected virtual ValueTask ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken) {}
     ValueTask INodeSessionCallback.ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken) {}
     ValueTask INodeSessionCallback.ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken) {}
   }
 
   public static class PluginFactory {
     public static IPluginField CreateField(string label, Func<double?> fetchValue) {}
     public static IPluginField CreateField(string label, PluginFieldGraphStyle graphStyle, Func<double?> fetchValue) {}
     public static IPluginField CreateField(string label, PluginFieldGraphStyle graphStyle, PluginFieldNormalValueRange normalRangeForWarning, PluginFieldNormalValueRange normalRangeForCritical, Func<double?> fetchValue) {}
     public static IPluginField CreateField(string name, string label, PluginFieldGraphStyle graphStyle, PluginFieldNormalValueRange normalRangeForWarning, PluginFieldNormalValueRange normalRangeForCritical, Func<double?> fetchValue) {}
+    public static IPluginField CreateField(string name, string label, PluginFieldGraphStyle graphStyle, PluginFieldNormalValueRange normalRangeForWarning, PluginFieldNormalValueRange normalRangeForCritical, string? negativeFieldName, Func<double?> fetchValue) {}
     public static IPlugin CreatePlugin(string name, PluginGraphAttributes graphAttributes, IReadOnlyCollection<IPluginField> fields) {}
     public static IPlugin CreatePlugin(string name, PluginGraphAttributes graphAttributes, IReadOnlyCollection<PluginFieldBase> fields) {}
     public static IPlugin CreatePlugin(string name, PluginGraphAttributes graphAttributes, PluginFieldBase field) {}
     public static IPlugin CreatePlugin(string name, string fieldLabel, Func<double?> fetchFieldValue, PluginGraphAttributes graphAttributes) {}
     public static IPlugin CreatePlugin(string name, string fieldL...
Read more

Smdn.Net.MuninNode version 1.2.0

27 Jul 10:55
a648f49
Compare
Choose a tag to compare

Released package

Release notes

The full release notes are available at gist.

Change log

Change log in this release:

API changes

API changes in this release:
diff --git a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
index 421f9f1..4bf85bf 100644
--- a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
@@ -1,188 +1,210 @@
-// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-1.1.0)
+// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-1.2.0)
 //   Name: Smdn.Net.MuninNode
-//   AssemblyVersion: 1.1.0.0
-//   InformationalVersion: 1.1.0+8c512e91195981258988a30fdf9c0ff4c53a6acc
+//   AssemblyVersion: 1.2.0.0
+//   InformationalVersion: 1.2.0+b0e11cd6b408018ad93f29b49e58cab7e9ef6b1b
 //   TargetFramework: .NETCoreApp,Version=v6.0
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Smdn.Fundamental.Exception, Version=3.0.0.0, Culture=neutral
 //     System.Collections, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.ComponentModel, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.IO.Pipelines, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Linq, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Memory, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Net.Primitives, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Net.Sockets, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Security.Cryptography.Algorithms, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Text.RegularExpressions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 #nullable enable annotations
 
 using System;
 using System.Collections.Generic;
 using System.Net;
 using System.Net.Sockets;
 using System.Text;
 using System.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.Logging;
 using Smdn.Net.MuninNode;
 using Smdn.Net.MuninPlugin;
 
 namespace Smdn.Net.MuninNode {
   public class LocalNode : NodeBase {
+    public LocalNode(IPluginProvider pluginProvider, string hostName, int port, ILogger? logger = null) {}
+    public LocalNode(IPluginProvider pluginProvider, string hostName, int port, IServiceProvider? serviceProvider = null) {}
     public LocalNode(IReadOnlyCollection<IPlugin> plugins, int port, IServiceProvider? serviceProvider = null) {}
     public LocalNode(IReadOnlyCollection<IPlugin> plugins, string hostName, int port, IServiceProvider? serviceProvider = null) {}
 
     public IPEndPoint LocalEndPoint { get; }
 
     protected override Socket CreateServerSocket() {}
     protected override bool IsClientAcceptable(IPEndPoint remoteEndPoint) {}
   }
 
   public abstract class NodeBase :
     IAsyncDisposable,
     IDisposable
   {
+    private protected class PluginProvider : IPluginProvider {
+      public PluginProvider(IReadOnlyCollection<IPlugin> plugins) {}
+
+      public IReadOnlyCollection<IPlugin> Plugins { get; }
+      public INodeSessionCallback? SessionCallback { get; }
+    }
+
+    protected NodeBase(IPluginProvider pluginProvider, string hostName, ILogger? logger) {}
     protected NodeBase(IReadOnlyCollection<IPlugin> plugins, string hostName, ILogger? logger) {}
 
     public virtual Encoding Encoding { get; }
     public string HostName { get; }
+    protected ILogger? Logger { get; }
     public virtual Version NodeVersion { get; }
+    [Obsolete("This member will be deprecated in future version.")]
     public IReadOnlyCollection<IPlugin> Plugins { get; }
 
     public async ValueTask AcceptAsync(bool throwIfCancellationRequested, CancellationToken cancellationToken) {}
     public async ValueTask AcceptSingleSessionAsync(CancellationToken cancellationToken = default) {}
     protected abstract Socket CreateServerSocket();
     protected virtual void Dispose(bool disposing) {}
     public void Dispose() {}
     public async ValueTask DisposeAsync() {}
     protected virtual async ValueTask DisposeAsyncCore() {}
     protected abstract bool IsClientAcceptable(IPEndPoint remoteEndPoint);
     public void Start() {}
   }
 }
 
 namespace Smdn.Net.MuninPlugin {
   public interface INodeSessionCallback {
     ValueTask ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken);
     ValueTask ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken);
   }
 
   public interface IPlugin {
     IPluginDataSource DataSource { get; }
     PluginGraphAttributes GraphAttributes { get; }
     string Name { get; }
     INodeSessionCallback? SessionCallback { get; }
   }
 
   public interface IPluginDataSource {
     IReadOnlyCollection<IPluginField> Fields { get; }
   }
 
   public interface IPluginField {
     PluginFieldAttributes Attributes { get; }
     string Name { get; }
 
     ValueTask<string> GetFormattedValueStringAsync(CancellationToken cancellationToken);
   }
 
+  public interface IPluginProvider {
+    IReadOnlyCollection<IPlugin> Plugins { get; }
+    INodeSessionCallback? SessionCallback { get; }
+  }
+
   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 class Plugin :
     INodeSessionCallback,
     IPlugin,
     IPluginDataSource
   {
     public Plugin(string name, PluginGraphAttributes graphAttributes, IReadOnlyCollection<IPluginField> fields) {}
 
     public IReadOnlyCollection<IPluginField> Fields { get; }
     public PluginGraphAttributes GraphAttributes { get; }
     public string Name { get; }
     IPluginDataSource IPlugin.DataSource { get; }
     INodeSessionCallback? IPlugin.SessionCallback { get; }
     IReadOnlyCollection<IPluginField> IPluginDataSource.Fields { get; }
 
     protected virtual ValueTask ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken) {}
     protected virtual ValueTask ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken) {}
     ValueTask INodeSessionCallback.ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken) {}
     ValueTask INodeSessionCallback.ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken) {}
   }
 
   public static class PluginFactory {
     public static IPluginField CreateField(string label, Func<double?> fetchValue) {}
     public static IPluginField CreateField(string label, PluginFieldGraphStyle graphStyle, Func<double?> fetchValue) {}
     public static IPluginField CreateField(string label, PluginFieldGraphStyle graphStyle, PluginFieldNormalValueRange normalRangeForWarning, PluginFieldNormalValueRange normalRangeForCritical, Func<double?> fetchValue) {}
+    public static IPluginField CreateField(string name, string label, PluginFieldGraphStyle graphStyle, PluginFieldNormalValueRange normalRangeForWarning, PluginFieldNormalValueRange normalRangeForCritical, Func<double?> fetchValue) {}
     public static IPlugin CreatePlugin(string name, PluginGraphAttributes graphAttributes, IReadOnlyCollection<IPluginField> fields) {}
     public static IPlugin CreatePlugin(string name, PluginGraphAttributes graphAttributes, IReadOnlyCollection<PluginFieldBase> fields) {}
     public static IPlugin CreatePlugin(string name, PluginGraphAttributes graphAttributes, PluginFieldBase field) {}
     public static IPlugin CreatePlugin(string name, string fieldLabel, Func<double?> fetchFieldValue, PluginGraphAttributes graphAttributes) {}
     public static IPlugin CreatePlugin(string name, string fieldLabel, PluginFieldGraphStyle fieldGraphStyle, Func<double?> fetchFieldValue, PluginGraphAttributes graphAttributes) {}
   }
 
   public abstract class PluginFieldBase : IPluginField {
     protected PluginFieldBase(string label, string? name, PluginFieldGraphStyle graphStyle = PluginFieldGraphStyle.Default, PluginFieldNormalValueRa...
Read more

Smdn.Net.MuninNode version 1.1.0

22 May 12:30
107398a
Compare
Choose a tag to compare

Released package

Release notes

The full release notes are available at gist.

Change log

Change log in this release:

API changes

API changes in this release:
diff --git a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
index 3edc58c..421f9f1 100644
--- a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
@@ -1,188 +1,188 @@
-// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-1.0.0)
+// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-1.1.0)
 //   Name: Smdn.Net.MuninNode
-//   AssemblyVersion: 1.0.0.0
-//   InformationalVersion: 1.0.0+37a9c6955012b57d019d2c68b8fa9876540f0263
+//   AssemblyVersion: 1.1.0.0
+//   InformationalVersion: 1.1.0+8c512e91195981258988a30fdf9c0ff4c53a6acc
 //   TargetFramework: .NETCoreApp,Version=v6.0
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Smdn.Fundamental.Exception, Version=3.0.0.0, Culture=neutral
 //     System.Collections, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.ComponentModel, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.IO.Pipelines, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Linq, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Memory, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Net.Primitives, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Net.Sockets, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Security.Cryptography.Algorithms, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Text.RegularExpressions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 #nullable enable annotations
 
 using System;
 using System.Collections.Generic;
 using System.Net;
 using System.Net.Sockets;
 using System.Text;
 using System.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.Logging;
 using Smdn.Net.MuninNode;
 using Smdn.Net.MuninPlugin;
 
 namespace Smdn.Net.MuninNode {
   public class LocalNode : NodeBase {
     public LocalNode(IReadOnlyCollection<IPlugin> plugins, int port, IServiceProvider? serviceProvider = null) {}
     public LocalNode(IReadOnlyCollection<IPlugin> plugins, string hostName, int port, IServiceProvider? serviceProvider = null) {}
 
     public IPEndPoint LocalEndPoint { get; }
 
     protected override Socket CreateServerSocket() {}
     protected override bool IsClientAcceptable(IPEndPoint remoteEndPoint) {}
   }
 
   public abstract class NodeBase :
     IAsyncDisposable,
     IDisposable
   {
-    public NodeBase(IReadOnlyCollection<IPlugin> plugins, string hostName, ILogger? logger) {}
+    protected NodeBase(IReadOnlyCollection<IPlugin> plugins, string hostName, ILogger? logger) {}
 
     public virtual Encoding Encoding { get; }
     public string HostName { get; }
     public virtual Version NodeVersion { get; }
     public IReadOnlyCollection<IPlugin> Plugins { get; }
 
     public async ValueTask AcceptAsync(bool throwIfCancellationRequested, CancellationToken cancellationToken) {}
     public async ValueTask AcceptSingleSessionAsync(CancellationToken cancellationToken = default) {}
     protected abstract Socket CreateServerSocket();
     protected virtual void Dispose(bool disposing) {}
     public void Dispose() {}
     public async ValueTask DisposeAsync() {}
     protected virtual async ValueTask DisposeAsyncCore() {}
     protected abstract bool IsClientAcceptable(IPEndPoint remoteEndPoint);
     public void Start() {}
   }
 }
 
 namespace Smdn.Net.MuninPlugin {
   public interface INodeSessionCallback {
     ValueTask ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken);
     ValueTask ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken);
   }
 
   public interface IPlugin {
     IPluginDataSource DataSource { get; }
     PluginGraphAttributes GraphAttributes { get; }
     string Name { get; }
     INodeSessionCallback? SessionCallback { get; }
   }
 
   public interface IPluginDataSource {
     IReadOnlyCollection<IPluginField> Fields { get; }
   }
 
   public interface IPluginField {
     PluginFieldAttributes Attributes { get; }
     string Name { get; }
 
     ValueTask<string> GetFormattedValueStringAsync(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 class Plugin :
     INodeSessionCallback,
     IPlugin,
     IPluginDataSource
   {
     public Plugin(string name, PluginGraphAttributes graphAttributes, IReadOnlyCollection<IPluginField> fields) {}
 
     public IReadOnlyCollection<IPluginField> Fields { get; }
     public PluginGraphAttributes GraphAttributes { get; }
     public string Name { get; }
     IPluginDataSource IPlugin.DataSource { get; }
     INodeSessionCallback? IPlugin.SessionCallback { get; }
     IReadOnlyCollection<IPluginField> IPluginDataSource.Fields { get; }
 
     protected virtual ValueTask ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken) {}
     protected virtual ValueTask ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken) {}
     ValueTask INodeSessionCallback.ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken) {}
     ValueTask INodeSessionCallback.ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken) {}
   }
 
   public static class PluginFactory {
     public static IPluginField CreateField(string label, Func<double?> fetchValue) {}
     public static IPluginField CreateField(string label, PluginFieldGraphStyle graphStyle, Func<double?> fetchValue) {}
     public static IPluginField CreateField(string label, PluginFieldGraphStyle graphStyle, PluginFieldNormalValueRange normalRangeForWarning, PluginFieldNormalValueRange normalRangeForCritical, Func<double?> fetchValue) {}
     public static IPlugin CreatePlugin(string name, PluginGraphAttributes graphAttributes, IReadOnlyCollection<IPluginField> fields) {}
     public static IPlugin CreatePlugin(string name, PluginGraphAttributes graphAttributes, IReadOnlyCollection<PluginFieldBase> fields) {}
     public static IPlugin CreatePlugin(string name, PluginGraphAttributes graphAttributes, PluginFieldBase field) {}
     public static IPlugin CreatePlugin(string name, string fieldLabel, Func<double?> fetchFieldValue, PluginGraphAttributes graphAttributes) {}
     public static IPlugin CreatePlugin(string name, string fieldLabel, PluginFieldGraphStyle fieldGraphStyle, Func<double?> fetchFieldValue, PluginGraphAttributes graphAttributes) {}
   }
 
   public abstract class PluginFieldBase : IPluginField {
     protected PluginFieldBase(string label, string? name, PluginFieldGraphStyle graphStyle = PluginFieldGraphStyle.Default, PluginFieldNormalValueRange normalRangeForWarning = default, PluginFieldNormalValueRange normalRangeForCritical = default) {}
 
     public PluginFieldGraphStyle GraphStyle { get; }
     public string Label { get; }
     public string Name { get; }
     public PluginFieldNormalValueRange NormalRangeForCritical { get; }
     public PluginFieldNormalValueRange NormalRangeForWarning { get; }
     PluginFieldAttributes IPluginField.Attributes { get; }
 
     protected abstract ValueTask<double?> FetchValueAsync(CancellationToken cancellationToken);
     async ValueTask<string> IPluginField.GetFormattedValueStringAsync(CancellationToken cancellationToken) {}
   }
 
   public sealed class PluginGraphAttributes {
     public PluginGraphAttributes(s...
Read more

Smdn.Net.MuninNode version 1.0.0

20 Apr 12:06
b43a6cd
Compare
Choose a tag to compare

Released package

Release notes

The full release notes are available at gist.

Change log

Change log in this release:

API changes

API changes in this release:
diff --git a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
index a09646b..3edc58c 100644
--- a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
@@ -1,170 +1,188 @@
-// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-1.0.0-rc1)
+// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-1.0.0)
 //   Name: Smdn.Net.MuninNode
 //   AssemblyVersion: 1.0.0.0
-//   InformationalVersion: 1.0.0-rc1+80ea97d27d28014747f5ad977d2e4a58f2f50f3d
+//   InformationalVersion: 1.0.0+37a9c6955012b57d019d2c68b8fa9876540f0263
 //   TargetFramework: .NETCoreApp,Version=v6.0
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Smdn.Fundamental.Exception, Version=3.0.0.0, Culture=neutral
 //     System.Collections, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.ComponentModel, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.IO.Pipelines, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Linq, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Memory, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Net.Primitives, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Net.Sockets, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Security.Cryptography.Algorithms, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Text.RegularExpressions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 #nullable enable annotations
 
 using System;
 using System.Collections.Generic;
 using System.Net;
 using System.Net.Sockets;
 using System.Text;
 using System.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.Logging;
 using Smdn.Net.MuninNode;
 using Smdn.Net.MuninPlugin;
 
 namespace Smdn.Net.MuninNode {
   public class LocalNode : NodeBase {
     public LocalNode(IReadOnlyCollection<IPlugin> plugins, int port, IServiceProvider? serviceProvider = null) {}
     public LocalNode(IReadOnlyCollection<IPlugin> plugins, string hostName, int port, IServiceProvider? serviceProvider = null) {}
 
     public IPEndPoint LocalEndPoint { get; }
 
     protected override Socket CreateServerSocket() {}
     protected override bool IsClientAcceptable(IPEndPoint remoteEndPoint) {}
   }
 
   public abstract class NodeBase :
     IAsyncDisposable,
     IDisposable
   {
     public NodeBase(IReadOnlyCollection<IPlugin> plugins, string hostName, ILogger? logger) {}
 
     public virtual Encoding Encoding { get; }
     public string HostName { get; }
     public virtual Version NodeVersion { get; }
     public IReadOnlyCollection<IPlugin> Plugins { get; }
 
     public async ValueTask AcceptAsync(bool throwIfCancellationRequested, CancellationToken cancellationToken) {}
     public async ValueTask AcceptSingleSessionAsync(CancellationToken cancellationToken = default) {}
     protected abstract Socket CreateServerSocket();
     protected virtual void Dispose(bool disposing) {}
     public void Dispose() {}
     public async ValueTask DisposeAsync() {}
     protected virtual async ValueTask DisposeAsyncCore() {}
     protected abstract bool IsClientAcceptable(IPEndPoint remoteEndPoint);
     public void Start() {}
   }
 }
 
 namespace Smdn.Net.MuninPlugin {
   public interface INodeSessionCallback {
     ValueTask ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken);
     ValueTask ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken);
   }
 
   public interface IPlugin {
     IPluginDataSource DataSource { get; }
     PluginGraphAttributes GraphAttributes { get; }
     string Name { get; }
     INodeSessionCallback? SessionCallback { get; }
   }
 
   public interface IPluginDataSource {
     IReadOnlyCollection<IPluginField> Fields { get; }
   }
 
   public interface IPluginField {
     PluginFieldAttributes Attributes { get; }
     string Name { get; }
 
     ValueTask<string> GetFormattedValueStringAsync(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 class Plugin :
     INodeSessionCallback,
     IPlugin,
     IPluginDataSource
   {
     public Plugin(string name, PluginGraphAttributes graphAttributes, IReadOnlyCollection<IPluginField> fields) {}
 
     public IReadOnlyCollection<IPluginField> Fields { get; }
     public PluginGraphAttributes GraphAttributes { get; }
     public string Name { get; }
     IPluginDataSource IPlugin.DataSource { get; }
     INodeSessionCallback? IPlugin.SessionCallback { get; }
     IReadOnlyCollection<IPluginField> IPluginDataSource.Fields { get; }
 
     protected virtual ValueTask ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken) {}
     protected virtual ValueTask ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken) {}
     ValueTask INodeSessionCallback.ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken) {}
     ValueTask INodeSessionCallback.ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken) {}
   }
 
   public static class PluginFactory {
     public static IPluginField CreateField(string label, Func<double?> fetchValue) {}
     public static IPluginField CreateField(string label, PluginFieldGraphStyle graphStyle, Func<double?> fetchValue) {}
+    public static IPluginField CreateField(string label, PluginFieldGraphStyle graphStyle, PluginFieldNormalValueRange normalRangeForWarning, PluginFieldNormalValueRange normalRangeForCritical, Func<double?> fetchValue) {}
     public static IPlugin CreatePlugin(string name, PluginGraphAttributes graphAttributes, IReadOnlyCollection<IPluginField> fields) {}
     public static IPlugin CreatePlugin(string name, PluginGraphAttributes graphAttributes, IReadOnlyCollection<PluginFieldBase> fields) {}
     public static IPlugin CreatePlugin(string name, PluginGraphAttributes graphAttributes, PluginFieldBase field) {}
     public static IPlugin CreatePlugin(string name, string fieldLabel, Func<double?> fetchFieldValue, PluginGraphAttributes graphAttributes) {}
     public static IPlugin CreatePlugin(string name, string fieldLabel, PluginFieldGraphStyle fieldGraphStyle, Func<double?> fetchFieldValue, PluginGraphAttributes graphAttributes) {}
   }
 
   public abstract class PluginFieldBase : IPluginField {
-    protected PluginFieldBase(string label, string? name, PluginFieldGraphStyle graphStyle = PluginFieldGraphStyle.Default) {}
+    protected PluginFieldBase(string label, string? name, PluginFieldGraphStyle graphStyle = PluginFieldGraphStyle.Default, PluginFieldNormalValueRange normalRangeForWarning = default, PluginFieldNormalValueRange normalRangeForCritical = default) {}
 
     public PluginFieldGraphStyle GraphStyle { get; }
     public string Label { get; }
     public string Name { get; }
+    public PluginFieldNormalValueRange NormalRangeForCritical { get; }
+    public PluginFieldNormalValueRange NormalRangeForWarning { get; }
     PluginFieldAttributes IPluginField.Attributes { get; }
 
     protected abstract ValueTask<double?> FetchValueAsync(CancellationToken cancellationToken);
     async ValueTask<string> IPluginField.GetFormattedValueStringAsync(CancellationToken cancellationToken) {}
   }
 
   public sealed class PluginGraphAttributes {
     public PluginGraphAttributes(string title, string category, string verticalLabel, bool scale, string arguments, TimeSpan updateRate, int? width = null, int? height = null) {}
 
     public string Arguments { get; }
     public string Category { get; }
     public int? Height { get; }
     public bool Scale { get; }
     public string Title { get; }
     public TimeSpan UpdateRate { get; }
     public string VerticalLabel { get; }
     public int? Width { get; }
   }
 
   public readonly struct PluginFieldAttributes {
     public PluginFieldAttributes(string label, PluginFieldGraphStyle graphStyle = PluginFieldGraphStyle.Default) {}
+    pu...
Read more

Smdn.Net.MuninNode version 1.0.0-rc1

04 Apr 14:50
038f4b4
Compare
Choose a tag to compare
Pre-release

Released package

Release notes

The full release notes are available at gist.

Change log

Change log in this release:

API changes

API changes in this release:
diff --git a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
index 000c131..a09646b 100644
--- a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
@@ -1,91 +1,170 @@
-// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-1.0.0-beta5)
+// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-1.0.0-rc1)
 //   Name: Smdn.Net.MuninNode
 //   AssemblyVersion: 1.0.0.0
-//   InformationalVersion: 1.0.0-beta5+9c35db93d2d4c37becbd2bed7ecdb74bc254a9ad
+//   InformationalVersion: 1.0.0-rc1+80ea97d27d28014747f5ad977d2e4a58f2f50f3d
 //   TargetFramework: .NETCoreApp,Version=v6.0
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Smdn.Fundamental.Exception, Version=3.0.0.0, Culture=neutral
 //     System.Collections, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.ComponentModel, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.IO.Pipelines, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Linq, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Memory, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Net.Primitives, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Net.Sockets, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Security.Cryptography.Algorithms, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Text.RegularExpressions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 #nullable enable annotations
 
 using System;
 using System.Collections.Generic;
 using System.Net;
+using System.Net.Sockets;
+using System.Text;
+using System.Threading;
 using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Smdn.Net.MuninNode;
 using Smdn.Net.MuninPlugin;
 
 namespace Smdn.Net.MuninNode {
-  public class LocalNode : IDisposable {
-    public LocalNode(IReadOnlyList<Plugin> plugins, string hostName, TimeSpan timeout, int portNumber, Version? nodeVersion = null, IServiceProvider? serviceProvider = null) {}
+  public class LocalNode : NodeBase {
+    public LocalNode(IReadOnlyCollection<IPlugin> plugins, int port, IServiceProvider? serviceProvider = null) {}
+    public LocalNode(IReadOnlyCollection<IPlugin> plugins, string hostName, int port, IServiceProvider? serviceProvider = null) {}
 
-    public string HostName { get; }
     public IPEndPoint LocalEndPoint { get; }
-    public IReadOnlyList<Plugin> Plugins { get; }
-    public TimeSpan Timeout { get; }
 
-    public async Task AcceptClientAsync() {}
-    public void Close() {}
+    protected override Socket CreateServerSocket() {}
+    protected override bool IsClientAcceptable(IPEndPoint remoteEndPoint) {}
+  }
+
+  public abstract class NodeBase :
+    IAsyncDisposable,
+    IDisposable
+  {
+    public NodeBase(IReadOnlyCollection<IPlugin> plugins, string hostName, ILogger? logger) {}
+
+    public virtual Encoding Encoding { get; }
+    public string HostName { get; }
+    public virtual Version NodeVersion { get; }
+    public IReadOnlyCollection<IPlugin> Plugins { get; }
+
+    public async ValueTask AcceptAsync(bool throwIfCancellationRequested, CancellationToken cancellationToken) {}
+    public async ValueTask AcceptSingleSessionAsync(CancellationToken cancellationToken = default) {}
+    protected abstract Socket CreateServerSocket();
     protected virtual void Dispose(bool disposing) {}
     public void Dispose() {}
+    public async ValueTask DisposeAsync() {}
+    protected virtual async ValueTask DisposeAsyncCore() {}
+    protected abstract bool IsClientAcceptable(IPEndPoint remoteEndPoint);
     public void Start() {}
   }
 }
 
 namespace Smdn.Net.MuninPlugin {
-  public class Plugin {
-    public Plugin(string name, PluginGraphConfiguration graphConfiguration, PluginFieldConfiguration fieldConfiguration) {}
+  public interface INodeSessionCallback {
+    ValueTask ReportSessionClosedAsync(string sessionId, CancellationToken cancellationToken);
+    ValueTask ReportSessionStartedAsync(string sessionId, CancellationToken cancellationToken);
+  }
+
+  public interface IPlugin {
+    IPluginDataSource DataSource { get; }
+    PluginGraphAttributes GraphAttributes { get; }
+    string Name { get; }
+    INodeSessionCallback? SessionCallback { get; }
+  }
+
+  public interface IPluginDataSource {
+    IReadOnlyCollection<IPluginField> Fields { get; }
+  }
+
+  public interface IPluginField {
+    PluginFieldAttributes Attributes { get; }
+    string Name { get; }
 
-    public PluginFieldConfiguration FieldConfiguration { get; }
-    public PluginGraphConfiguration GraphConfiguration { get; }
+    ValueTask<string> GetFormattedValueStringAsync(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 class Plugin :
+    INodeSessionCallback,
+  ...
Read more

Smdn.Net.MuninNode version 1.0.0-beta5

10 Mar 14:04
595c8c9
Compare
Choose a tag to compare
Pre-release

Released package

Release notes

The full release notes are available at gist.

Change log

Change log in this release:

API changes

API changes in this release:
diff --git a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net5.0.apilist.cs b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net5.0.apilist.cs
deleted file mode 100644
index 1b9ef3b..0000000
--- a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net5.0.apilist.cs
+++ /dev/null
@@ -1,77 +0,0 @@
-// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-1.0.0-beta4)
-//   Name: Smdn.Net.MuninNode
-//   AssemblyVersion: 1.0.0.0
-//   InformationalVersion: 1.0.0-beta4+74ac45a2d17aefc7af0d7f2108fee3bf66ef7192
-//   TargetFramework: .NETCoreApp,Version=v5.0
-//   Configuration: Release
-
-using System;
-using System.Collections.Generic;
-using System.Net;
-using System.Threading.Tasks;
-using Smdn.Net.MuninPlugin;
-
-namespace Smdn.Net.MuninNode {
-  public class LocalNode : IDisposable {
-    public LocalNode(IReadOnlyList<Plugin> plugins, string hostName, TimeSpan timeout, int portNumber, Version nodeVersion = null, IServiceProvider serviceProvider = null) {}
-
-    public string HostName { get; }
-    public IPEndPoint LocalEndPoint { get; }
-    public IReadOnlyList<Plugin> Plugins { get; }
-    public TimeSpan Timeout { get; }
-
-    [AsyncStateMachine]
-    public Task AcceptClientAsync() {}
-    public void Close() {}
-    protected virtual void Dispose(bool disposing) {}
-    public void Dispose() {}
-    public void Start() {}
-  }
-}
-
-namespace Smdn.Net.MuninPlugin {
-  public class Plugin {
-    public Plugin(string name, PluginGraphConfiguration graphConfiguration, PluginFieldConfiguration fieldConfiguration) {}
-
-    public PluginFieldConfiguration FieldConfiguration { get; }
-    public PluginGraphConfiguration GraphConfiguration { get; }
-    public string Name { get; }
-  }
-
-  public abstract class PluginFieldConfiguration {
-    protected PluginFieldConfiguration(string defaultGraphStyle, Range? warningValueRange = null, Range? criticalValueRange = null) {}
-
-    public Range? CriticalValueRange { get; }
-    public string DefaultGraphStyle { get; }
-    public Range? WarningValueRange { get; }
-
-    public abstract IEnumerable<PluginField> FetchFields();
-  }
-
-  public class PluginGraphConfiguration {
-    public PluginGraphConfiguration(string title, string category, string verticalLabel, bool scale, string arguments, TimeSpan updateRate, int? width = null, int? height = null) {}
-
-    public string Arguments { get; }
-    public string Category { get; }
-    public int? Height { get; }
-    public bool Scale { get; }
-    public string Title { get; }
-    public TimeSpan UpdateRate { get; }
-    public string VerticalLabel { get; }
-    public int? Width { get; }
-  }
-
-  public readonly struct PluginField {
-    public PluginField(string label, double @value, string graphStyle = null) {}
-    public PluginField(string name, string label, double @value, string graphStyle = null) {}
-
-    public string GraphStyle { get; }
-    public string Label { get; }
-    public string Name { get; }
-    public double? Value { get; }
-
-    public static PluginField CreateUnknownValueField(string label, string graphStyle = null) {}
-    public static PluginField CreateUnknownValueField(string name, string label, string graphStyle = null) {}
-  }
-}
-
diff --git a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
index 3b7dc7e..000c131 100644
--- a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
@@ -1,90 +1,91 @@
-// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-1.0.0-beta4)
+// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-1.0.0-beta5)
 //   Name: Smdn.Net.MuninNode
 //   AssemblyVersion: 1.0.0.0
-//   InformationalVersion: 1.0.0-beta4+74ac45a2d17aefc7af0d7f2108fee3bf66ef7192
+//   InformationalVersion: 1.0.0-beta5+9c35db93d2d4c37becbd2bed7ecdb74bc254a9ad
 //   TargetFramework: .NETCoreApp,Version=v6.0
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Smdn.Fundamental.Exception, Version=3.0.0.0, Culture=neutral
 //     System.Collections, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.ComponentModel, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.IO.Pipelines, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Linq, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Memory, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Net.Primitives, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Net.Sockets, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Runtime, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Text.RegularExpressions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+#nullable enable annotations
 
 using System;
 using System.Collections.Generic;
 using System.Net;
 using System.Threading.Tasks;
 using Smdn.Net.MuninPlugin;
 
 namespace Smdn.Net.MuninNode {
   public class LocalNode : IDisposable {
-    public LocalNode(IReadOnlyList<Plugin> plugins, string hostName, TimeSpan timeout, int portNumber, Version nodeVersion = null, IServiceProvider serviceProvider = null) {}
+    public LocalNode(IReadOnlyList<Plugin> plugins, string hostName, TimeSpan timeout, int portNumber, Version? nodeVersion = null, IServiceProvider? serviceProvider = null) {}
 
     public string HostName { get; }
     public IPEndPoint LocalEndPoint { get; }
     public IReadOnlyList<Plugin> Plugins { get; }
     public TimeSpan Timeout { get; }
 
     public async Task AcceptClientAsync() {}
     public void Close() {}
     protected virtual void Dispose(bool disposing) {}
     public void Dispose() {}
     public void Start() {}
   }
 }
 
 namespace Smdn.Net.MuninPlugin {
   public class Plugin {
     public Plugin(string name, PluginGraphConfiguration graphConfiguration, PluginFieldConfiguration fieldConfiguration) {}
 
     public PluginFieldConfiguration FieldConfiguration { get; }
     public PluginGraphConfiguration GraphConfiguration { get; }
     public string Name { get; }
   }
 
   public abstract class PluginFieldConfiguration {
     protected PluginFieldConfiguration(string defaultGraphStyle, Range? warningValueRange = null, Range? criticalValueRange = null) {}
 
     public Range? CriticalValueRange { get; }
     public string DefaultGraphStyle { get; }
     public Range? WarningValueRange { get; }
 
     public abstract IEnumerable<PluginField> FetchFields();
   }
 
   public class PluginGraphConfiguration {
     public PluginGraphConfiguration(string title, string category, string verticalLabel, bool scale, string arguments, TimeSpan updateRate, int? width = null, int? height = null) {}
 
     public string Arguments { get; }
     public string Category { get; }
     public int? Height { get; }
     public bool Scale { get; }
     public string Title { get; }
     public TimeSpan UpdateRate { get; }
     public string VerticalLabel { get; }
     public int? Width { get; }
   }
 
   public readonly struct PluginField {
-    public static PluginField CreateUnknownValueField(string label, string graphStyle = null) {}
-    public static PluginField CreateUnknownValueField(string name, string label, string graphStyle = null) {}
+    public static PluginField CreateUnknownValueField(string label, string? graphStyle = null) {}
+    public static PluginField CreateUnknownValueField(string name, string label, string? graphStyle = null) {}
 
-    public PluginField(string label, double @value, string graphStyle = null) {}
-    public PluginField(string name, string label, double @value, string graphStyle = null) {}
+    public PluginField(string label, double @value, string? graphStyle = null) {}
+    public PluginField(string name, string label, double @value, string? graphStyle = null) {}
 
-    public string GraphStyle { get; }
+    public string? GraphStyle { get; }
     public string Label { get; }
     public string Name { get; }
     public double? Value { get; }
   }
 }
 // API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.2.1.0.
 // Smdn.Reflection.ReverseGenerating.ListApi.Core v1.2.0.0 (https://github.com/smdn/Smdn.Reflection.Re...
Read more

Smdn.Net.MuninNode version 1.0.0-beta4

08 Mar 13:13
f3bcebe
Compare
Choose a tag to compare
Pre-release

Released package

Release notes

The full release notes are available at gist.

Change log

Change log in this release:

API changes

API changes in this release:
diff --git a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net5.0.apilist.cs b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net5.0.apilist.cs
index 5cf8355..1b9ef3b 100644
--- a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net5.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net5.0.apilist.cs
@@ -1,76 +1,77 @@
-// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-1.0beta3 (net5.0))
+// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-1.0.0-beta4)
 //   Name: Smdn.Net.MuninNode
 //   AssemblyVersion: 1.0.0.0
-//   InformationalVersion: 1.0beta3 (net5.0)
+//   InformationalVersion: 1.0.0-beta4+74ac45a2d17aefc7af0d7f2108fee3bf66ef7192
 //   TargetFramework: .NETCoreApp,Version=v5.0
 //   Configuration: Release
 
 using System;
 using System.Collections.Generic;
 using System.Net;
 using System.Threading.Tasks;
 using Smdn.Net.MuninPlugin;
 
 namespace Smdn.Net.MuninNode {
   public class LocalNode : IDisposable {
     public LocalNode(IReadOnlyList<Plugin> plugins, string hostName, TimeSpan timeout, int portNumber, Version nodeVersion = null, IServiceProvider serviceProvider = null) {}
 
     public string HostName { get; }
     public IPEndPoint LocalEndPoint { get; }
     public IReadOnlyList<Plugin> Plugins { get; }
     public TimeSpan Timeout { get; }
 
     [AsyncStateMachine]
     public Task AcceptClientAsync() {}
     public void Close() {}
+    protected virtual void Dispose(bool disposing) {}
+    public void Dispose() {}
     public void Start() {}
-    void IDisposable.Dispose() {}
   }
 }
 
 namespace Smdn.Net.MuninPlugin {
   public class Plugin {
     public Plugin(string name, PluginGraphConfiguration graphConfiguration, PluginFieldConfiguration fieldConfiguration) {}
 
     public PluginFieldConfiguration FieldConfiguration { get; }
     public PluginGraphConfiguration GraphConfiguration { get; }
     public string Name { get; }
   }
 
   public abstract class PluginFieldConfiguration {
     protected PluginFieldConfiguration(string defaultGraphStyle, Range? warningValueRange = null, Range? criticalValueRange = null) {}
 
     public Range? CriticalValueRange { get; }
     public string DefaultGraphStyle { get; }
     public Range? WarningValueRange { get; }
 
     public abstract IEnumerable<PluginField> FetchFields();
   }
 
   public class PluginGraphConfiguration {
     public PluginGraphConfiguration(string title, string category, string verticalLabel, bool scale, string arguments, TimeSpan updateRate, int? width = null, int? height = null) {}
 
     public string Arguments { get; }
     public string Category { get; }
     public int? Height { get; }
     public bool Scale { get; }
     public string Title { get; }
     public TimeSpan UpdateRate { get; }
     public string VerticalLabel { get; }
     public int? Width { get; }
   }
 
   public readonly struct PluginField {
     public PluginField(string label, double @value, string graphStyle = null) {}
     public PluginField(string name, string label, double @value, string graphStyle = null) {}
 
     public string GraphStyle { get; }
     public string Label { get; }
     public string Name { get; }
     public double? Value { get; }
 
     public static PluginField CreateUnknownValueField(string label, string graphStyle = null) {}
     public static PluginField CreateUnknownValueField(string name, string label, string graphStyle = null) {}
   }
 }
 
diff --git a/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
new file mode 100644
index 0000000..ee9c41e
--- /dev/null
+++ b/doc/api-list/Smdn.Net.MuninNode/Smdn.Net.MuninNode-net6.0.apilist.cs
@@ -0,0 +1,77 @@
+// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-1.0.0-beta4)
+//   Name: Smdn.Net.MuninNode
+//   AssemblyVersion: 1.0.0.0
+//   InformationalVersion: 1.0.0-beta4+74ac45a2d17aefc7af0d7f2108fee3bf66ef7192
+//   TargetFramework: .NETCoreApp,Version=v6.0
+//   Configuration: Release
+
+using System;
+using System.Collections.Generic;
+using System.Net;
+using System.Threading.Tasks;
+using Smdn.Net.MuninPlugin;
+
+namespace Smdn.Net.MuninNode {
+  public class LocalNode : IDisposable {
+    public LocalNode(IReadOnlyList<Plugin> plugins, string hostName, TimeSpan timeout, int portNumber, Version nodeVersion = null, IServiceProvider serviceProvider = null) {}
+
+    public string HostName { get; }
+    public IPEndPoint LocalEndPoint { get; }
+    public IReadOnlyList<Plugin> Plugins { get; }
+    public TimeSpan Timeout { get; }
+
+    [AsyncStateMachine]
+    public Task AcceptClientAsync() {}
+    public void Close() {}
+    protected virtual void Dispose(bool disposing) {}
+    public void Dispose() {}
+    public void Start() {}
+  }
+}
+
+namespace Smdn.Net.MuninPlugin {
+  public class Plugin {
+    public Plugin(string name, PluginGraphConfiguration graphConfiguration, PluginFieldConfiguration fieldConfiguration) {}
+
+    public PluginFieldConfiguration FieldConfiguration { get; }
+    public PluginGraphConfiguration GraphConfiguration { get; }
+    public string Name { get; }
+  }
+
+  public abstract class PluginFieldConfiguration {
+    protected PluginFieldConfiguration(string defaultGraphStyle, Range? warningValueRange = null, Range? criticalValueRange = null) {}
+
+    public Range? CriticalValueRange { get; }
+    public string DefaultGraphStyle { get; }
+    public Range? WarningValueRange { get; }
+
+    public abstract IEnumerable<PluginField> FetchFields();
+  }
+
+  public class PluginGraphConfiguration {
+    public PluginGraphConfiguration(string title, string category, string verticalLabel, bool scale, string arguments, TimeSpan updateRate, int? width = null, int? height = null) {}
+
+    public string Arguments { get; }
+    public string Category { get; }
+    public int? Height { get; }
+    public bool Scale { get; }
+    public string Title { get; }
+    public TimeSpan UpdateRate { get; }
+    public string VerticalLabel { get; }
+    public int? Width { get; }
+  }
+
+  public readonly struct PluginField {
+    public PluginField(string label, double @value, string graphStyle = null) {}
+    public PluginField(string name, string label, double @value, string graphStyle = null) {}
+
+    public string GraphStyle { get; }
+    public string Label { get; }
+    public string Name { get; }
+    public double? Value { get; }
+
+    public static PluginField CreateUnknownValueField(string label, string graphStyle = null) {}
+    public static PluginField CreateUnknownValueField(string name, string label, string graphStyle = null) {}
+  }
+}
+
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 bedbc0d..64a85d9 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,76 +1,77 @@
-// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-1.0beta3 (netstandard2.1))
+// Smdn.Net.MuninNode.dll (Smdn.Net.MuninNode-1.0.0-beta4)
 //   Name: Smdn.Net.MuninNode
 //   AssemblyVersion: 1.0.0.0
-//   InformationalVersion: 1.0beta3 (netstandard2.1)
+//   InformationalVersion: 1.0.0-beta4+74ac45a2d17aefc7af0d7f2108fee3bf66ef7192
 //   TargetFramework: .NETStandard,Version=v2.1
 //   Configuration: Release
 
 using System;
 using System.Collections.Generic;
 using System.Net;
 using System.Threading.Tasks;
 using Smdn.Net.MuninPlugin;
 
 namespace Smdn.Net.MuninNode {
   public class LocalNode : IDisposable {
     public LocalNode(IReadOnlyList<Plugin> plugins, string hostName, TimeSpan timeout, int po...
Read more

version 1.0.0 beta 3

24 Nov 18:25
Compare
Choose a tag to compare
version 1.0.0 beta 3 Pre-release
Pre-release
v1.0.0-beta3

warn if package is not release configuration

version 1.0.0 beta 2

21 Aug 07:44
Compare
Choose a tag to compare
version 1.0.0 beta 2 Pre-release
Pre-release
v1.0.0-beta2

update assembly version