Releases: smdn/Smdn.Net.MuninNode
Releases · smdn/Smdn.Net.MuninNode
Smdn.Net.MuninNode version 2.0.0
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2024-11-03 update assembly version
- 2024-11-03 require .NET SDK version 8.0 or later
- 2024-11-03 add support for 'graph_total' attribute
- 2024-11-03 improve LocalNode.Create to be able to accept the list of addresses allowed to access LocalNode
- 2024-11-03 introduce IPluginGraphAttributes to make configuring graph attributes more flexible
- 2024-10-31 introduce IAccessRule to allow access to NodeBase to be configured using with IServiceCollection
- 2024-10-28 make LocalNode abstract
- 2024-10-28 make NodeBase.HostName abstract
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...
Smdn.Net.MuninNode version 1.3.0
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2024-10-11 update assembly version
- 2024-10-11 add support for {fieldname}.negative field attribute
- 2024-10-11 change links to refer to HTTPS pages
- 2024-10-11 redefine PackageValidationBaselineVersion to fix broken API compat baseline
- 2024-10-11 improve package readme
- 2024-10-11 add target framework net8.0
- 2024-10-11 fix CA warnings
- 2024-10-11 bump Smdn.MSBuild.ProjectAssets.*
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...
Smdn.Net.MuninNode version 1.2.0
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2023-07-27 update assembly version
- 2023-07-27 revert deleting ctor overload and mark as obsolete
- 2023-07-27 make PluginGraphAttributes.UpdateRate optional
- 2023-07-24 add PluginGraphAttributes.Order to configure 'graph_order' attribute
- 2023-07-24 add overload of PluginFactory.CreateField
- 2023-07-24 introduce IPluginProvider and mark NodeBase.Plugins as obsolete
- 2023-07-24 expose NodeBase.Logger
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...
Smdn.Net.MuninNode version 1.1.0
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2023-05-22 fix renamed method
- 2023-05-22 update assembly version
- 2023-05-22 make ctor protected
- 2023-05-22 reduce code complexity
- 2023-05-22 suppress warning CA1033
- 2023-05-22 suppress warning CA1031
- 2023-05-22 avoid null reference
- 2023-05-22 make sure to call ConfigureAwait for awaiting task
- 2023-05-22 catch up the repository template updates
- 2023-04-20 enable package validation
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...
Smdn.Net.MuninNode version 1.0.0
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2023-04-20 update package version
- 2023-04-20 add package description
- 2023-04-20 add XML comment docs
- 2023-04-16 add support for field.warning and field.critical attributes
- 2023-04-15 bump Smdn.MSBuild.DefineConstants.NETSdkApi up to 1.3.11
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...
Smdn.Net.MuninNode version 1.0.0-rc1
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2023-04-04 update package version
- 2023-04-04 relax the lower version limit for dependent packages
- 2023-04-04 add AcceptAsync and AcceptSingleSessionAsync
- 2023-04-04 re-implement plugins using with new APIs
- 2023-04-04 add new plugin abstraction APIs
- 2023-04-02 improve disconnection
- 2023-04-02 implement IAsyncDisposable and improve dispose operations
- 2023-04-02 fix not to call Socket.Disconnect() inside of Dispose()
- 2023-04-02 add exception handling for sending banner
- 2023-04-02 delete NodeBase.Close()
- 2023-04-02 add PluginFieldConfiguration.Null
- 2023-04-02 enable dual mode if available
- 2023-03-31 treat OperationCanceledException properly
- 2023-03-31 delete unnecessary symbol
- 2023-03-31 re-enable warning CA2254
- 2023-03-30 improve logging
- 2023-03-30 use package Microsoft.Extensions.Logging.Abstractions instead
- 2023-03-30 fix propagating cancellationToken
- 2023-03-30 define abstract NodeBase class
- 2023-03-30 rename file
- 2023-03-30 create server socket on Start() instead of construction time
- 2023-03-30 add missing calling of ConfigureAwait()
- 2023-03-30 accept and propagate CancellationToken
- 2023-03-30 make lambda static
- 2023-03-30 use UTF-8 string literal
- 2023-03-30 use ValueTask instead of Task
- 2023-03-30 lower the log level for the expected exception
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,
+ ...
Smdn.Net.MuninNode version 1.0.0-beta5
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2023-03-10 update package version
- 2023-03-10 enable nullability annotations
- 2023-03-10 use Smdn.MSBuild.DefineConstants.NETSdkApi
- 2023-03-10 drop net5.0 from target frameworks
- 2023-03-10 improve handling and logging of exceptions
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...
Smdn.Net.MuninNode version 1.0.0-beta4
Released package
Release notes
The full release notes are available at gist.
Change log
Change log in this release:
- 2022-03-08 update assembly version
- 2022-03-08 add target framework net6.0
- 2022-03-08 suppress warning CA1848, CA2254
- 2022-03-08 bump System.IO.Pipelines and Microsoft.Extensions.Logging
- 2022-03-08 reduce unnecessary using of string interpolation
- 2022-03-08 fix version prefix
- 2022-03-08 use Smdn.MSBuild.ProjectAssets.* instead
- 2021-12-30 merge devel-apilist
- 2021-12-30 use Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks.GenerateApiList to generate API list
- 2021-12-17 fix code analyzer warnings
- 2021-12-16 use file-scoped namespace declaration
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...
version 1.0.0 beta 3
v1.0.0-beta3 warn if package is not release configuration
version 1.0.0 beta 2
v1.0.0-beta2 update assembly version