Skip to content

Releases: smdn/Smdn.Net.EchonetLite

Smdn.Net.EchonetLite.RouteB.SkStackIP version 2.1.0

23 Dec 13:54
Immutable release. Only release title and notes can be modified.
31ce605

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.EchonetLite.RouteB.SkStackIP/Smdn.Net.EchonetLite.RouteB.SkStackIP-net10.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.SkStackIP/Smdn.Net.EchonetLite.RouteB.SkStackIP-net10.0.apilist.cs
new file mode 100644
index 0000000..8000b76
--- /dev/null
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.SkStackIP/Smdn.Net.EchonetLite.RouteB.SkStackIP-net10.0.apilist.cs
@@ -0,0 +1,151 @@
+// Smdn.Net.EchonetLite.RouteB.SkStackIP.dll (Smdn.Net.EchonetLite.RouteB.SkStackIP-2.1.0)
+//   Name: Smdn.Net.EchonetLite.RouteB.SkStackIP
+//   AssemblyVersion: 2.1.0.0
+//   InformationalVersion: 2.1.0+eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
+//   TargetFramework: .NETCoreApp,Version=v10.0
+//   Configuration: Release
+//   Metadata: IsTrimmable=True
+//   Metadata: RepositoryUrl=https://github.com/smdn/Smdn.Net.EchonetLite
+//   Metadata: RepositoryBranch=main
+//   Metadata: RepositoryCommit=eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
+//   Referenced assemblies:
+//     Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Microsoft.Extensions.Logging.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Microsoft.Extensions.Options, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Polly.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=c8a3ffc3f8f825cc
+//     Polly.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=c8a3ffc3f8f825cc
+//     Smdn.Extensions.Polly.KeyedRegistry, Version=1.2.0.0, Culture=neutral
+//     Smdn.Net.EchonetLite.Primitives, Version=2.0.0.0, Culture=neutral
+//     Smdn.Net.EchonetLite.RouteB.Primitives, Version=2.1.0.0, Culture=neutral
+//     Smdn.Net.SkStackIP, Version=1.5.2.0, Culture=neutral
+//     System.Collections, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.ComponentModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Memory, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
+//     System.Net.NetworkInformation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Net.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Threading, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+#nullable enable annotations
+
+using System;
+using System.Buffers;
+using System.Diagnostics.CodeAnalysis;
+using System.Net;
+using System.Net.NetworkInformation;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using Polly;
+using Polly.DependencyInjection;
+using Polly.Registry;
+using Polly.Registry.KeyedRegistry;
+using Smdn.Net.EchonetLite.RouteB.Credentials;
+using Smdn.Net.EchonetLite.RouteB.DependencyInjection;
+using Smdn.Net.EchonetLite.RouteB.Transport;
+using Smdn.Net.EchonetLite.RouteB.Transport.SkStackIP;
+using Smdn.Net.SkStackIP;
+
+namespace Smdn.Net.EchonetLite.RouteB.DependencyInjection {
+  public static class SkStackRouteBHandlerFactoryBuilderExtensions {
+    public static TSkStackRouteBHandlerFactoryBuilder PostConfigureClient<TSkStackRouteBHandlerFactoryBuilder, TServiceKey>(this TSkStackRouteBHandlerFactoryBuilder builder, Action<SkStackClient> postConfigureClient) where TSkStackRouteBHandlerFactoryBuilder : SkStackRouteBHandlerFactoryBuilder<TServiceKey> {}
+  }
+
+  public abstract class SkStackRouteBHandlerFactoryBuilder<TServiceKey> {
+    internal protected SkStackRouteBHandlerFactoryBuilder(IServiceCollection services, TServiceKey serviceKey, Func<TServiceKey, string?> selectOptionsNameForServiceKey) {}
+
+    public TServiceKey ServiceKey { get; }
+    public IServiceCollection Services { get; }
+
+    protected abstract SkStackRouteBHandlerFactory Build(IServiceProvider serviceProvider, SkStackRouteBSessionOptions sessionOptions, Action<SkStackClient>? postConfigureClient);
+    public SkStackRouteBHandlerFactory Build(IServiceProvider serviceProvider) {}
+    protected TOption GetOption<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor)] TOption>(IServiceProvider serviceProvider) {}
+  }
+
+  public static class SkStackRouteBServiceBuilderExtensions {
+    public static IRouteBServiceBuilder<TServiceKey> AddResiliencePipelineSkStackHandlerAuthenticate<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, Action<ResiliencePipelineBuilder, AddResiliencePipelineContext<SkStackRouteBHandler.ResiliencePipelineKeyPair<TServiceKey>>> configure) {}
+    public static IRouteBServiceBuilder<TServiceKey> AddResiliencePipelineSkStackHandlerSendFrame<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, Action<ResiliencePipelineBuilder, AddResiliencePipelineContext<SkStackRouteBHandler.ResiliencePipelineKeyPair<TServiceKey>>> configure) {}
+    public static IRouteBServiceBuilder<TServiceKey> AddSkStackHandler<TServiceKey, THandlerFactoryBuilder>(this IRouteBServiceBuilder<TServiceKey> builder, Action<SkStackRouteBSessionOptions> configureSessionOptions, Func<IServiceCollection, TServiceKey, Func<TServiceKey, string?>, THandlerFactoryBuilder> createHandlerFactoryBuilder) where THandlerFactoryBuilder : SkStackRouteBHandlerFactoryBuilder<TServiceKey> {}
+  }
+}
+
+namespace Smdn.Net.EchonetLite.RouteB.Transport.SkStackIP {
+  public abstract class SkStackRouteBHandler : RouteBEchonetLiteHandler {
+    public static class ResiliencePipelineKeys {
+      public static readonly string Authenticate = "SkStackRouteBHandler.resiliencePipelineAuthenticate";
+      public static readonly string Send = "SkStackRouteBHandler.resiliencePipelineSend";
+    }
+
+    public readonly record struct ResiliencePipelineKeyPair<TServiceKey> : IResiliencePipelineKeyPair<TServiceKey, string> {
+      public ResiliencePipelineKeyPair(TServiceKey serviceKey, string pipelineKey) {}
+
+      public string PipelineKey { get; }
+      public TServiceKey ServiceKey { get; }
+
+      public override string ToString() {}
+    }
+
+    public static readonly ResiliencePropertyKey<SkStackRouteBHandler?> ResiliencePropertyKeyForInstance; // = "SkStackRouteBHandler.ResiliencePropertyKeyForInstance"
+
+    protected SkStackClient Client { get; }
+    public override IPAddress? LocalAddress { get; }
+    public override IPAddress? PeerAddress { get; }
+    protected SkStackRouteBSessionOptions SessionOptions { get; }
+
+    protected override async ValueTask ConnectAsyncCore(IRouteBCredential credential, CancellationToken cancellationToken) {}
+    protected override async ValueTask DisconnectAsyncCore(CancellationToken cancellationToken) {}
+    protected override void Dispose(bool disposing) {}
+    protected override async ValueTask DisposeAsyncCore() {}
+    protected override ValueTask<IPAddress> ReceiveAsyncCore(IBufferWriter<byte> buffer, CancellationToken cancellationToken) {}
+    protected override ValueTask SendAsyncCore(ReadOnlyMemory<byte> buffer, CancellationToken cancellationToken) {}
+    protected override ValueTask SendToAsyncCore(IPAddress remoteAddress, ReadOnlyMemory<byte> buffer, CancellationToken cancellationToken) {}
+    protected override void ThrowIfDisposed() {}
+  }
+
+  public abstract class SkStackRouteBHandlerFactory : IRouteBEchonetLiteHandlerFactory {
+    protected SkStackRouteBHandlerFactory(IServiceProvider serviceProvider, object? routeBServiceKey, SkStackRouteBSessionOptions sessionOptions, Action<SkStackClient>? postConfigureClient) {}
+
+    protected Action<SkStackClient>? PostConfigureClient { get; }
+    public object? RouteBServiceKey { get; }
+    public IServiceProvider ServiceProvider { get; }
+    protected SkStackRouteBSessionOptions SessionOptions { get; }
+
+    public ValueTask<RouteBEchonetLiteHandler> CreateAsync(CancellationToken cancellationToken) {}
+    protected abstract ValueTask<RouteBEchonetLiteHandler> CreateAsyncCore(CancellationToken cancellationToken);
+  }
+
+  public static class SkStackRouteBHandlerServiceCollectionExtensions {
+    public static IServiceCollection AddResiliencePipelineForAuthentication(this IServiceCollection services, Action<ResiliencePipelineBuilder, AddResiliencePipelineContext<string>> configure) {}
+    public static IServiceCollection AddResiliencePipelineForAuthentication<TServiceKey>(this IServiceCollection services, TServiceKey serviceKey, Action<ResiliencePipelineBuilder, AddResiliencePipelineContext<SkStackRouteBHandler.ResiliencePipelineKeyPair<TServiceKey>>> configure) {}
+    public static IServic...
Read more

Smdn.Net.EchonetLite.RouteB.Primitives version 2.2.0

23 Dec 13:45
Immutable release. Only release title and notes can be modified.
9093b92

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.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-net10.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-net10.0.apilist.cs
new file mode 100644
index 0000000..27f28b6
--- /dev/null
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-net10.0.apilist.cs
@@ -0,0 +1,85 @@
+// Smdn.Net.EchonetLite.RouteB.Primitives.dll (Smdn.Net.EchonetLite.RouteB.Primitives-2.2.0)
+//   Name: Smdn.Net.EchonetLite.RouteB.Primitives
+//   AssemblyVersion: 2.2.0.0
+//   InformationalVersion: 2.2.0+eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
+//   TargetFramework: .NETCoreApp,Version=v10.0
+//   Configuration: Release
+//   Metadata: IsTrimmable=True
+//   Metadata: RepositoryUrl=https://github.com/smdn/Smdn.Net.EchonetLite
+//   Metadata: RepositoryBranch=main
+//   Metadata: RepositoryCommit=eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
+//   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.Net.EchonetLite.Primitives, Version=2.0.0.0, Culture=neutral
+//     System.ComponentModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Memory, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
+//     System.Net.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+#nullable enable annotations
+
+using System;
+using System.Buffers;
+using System.Net;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using Smdn.Net.EchonetLite.RouteB.Credentials;
+using Smdn.Net.EchonetLite.RouteB.Transport;
+using Smdn.Net.EchonetLite.Transport;
+
+namespace Smdn.Net.EchonetLite.RouteB.Credentials {
+  public interface IRouteBCredential : IDisposable {
+    void WriteIdTo(IBufferWriter<byte> buffer);
+    void WritePasswordTo(IBufferWriter<byte> buffer);
+  }
+
+  public interface IRouteBCredentialIdentity {
+  }
+
+  public interface IRouteBCredentialProvider {
+    IRouteBCredential GetCredential(IRouteBCredentialIdentity identity);
+  }
+
+  public static class RouteBCredentials {
+    public const int AuthenticationIdLength = 32;
+    public const int PasswordLength = 12;
+  }
+}
+
+namespace Smdn.Net.EchonetLite.RouteB.DependencyInjection {
+  public interface IRouteBServiceBuilder<TServiceKey> {
+    Func<TServiceKey, string?>? OptionsNameSelector { get; }
+    TServiceKey ServiceKey { get; }
+    IServiceCollection Services { get; }
+  }
+
+  public static class IRouteBServiceBuilderExtensions {
+    public static string? GetOptionsName<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder) {}
+  }
+}
+
+namespace Smdn.Net.EchonetLite.RouteB.Transport {
+  [Obsolete("Use IRouteBServiceBuilder instead.")]
+  public interface IRouteBEchonetLiteHandlerBuilder {
+    IServiceCollection Services { get; }
+  }
+
+  public interface IRouteBEchonetLiteHandlerFactory {
+    ValueTask<RouteBEchonetLiteHandler> CreateAsync(CancellationToken cancellationToken);
+  }
+
+  public abstract class RouteBEchonetLiteHandler : EchonetLiteHandler {
+    protected RouteBEchonetLiteHandler(ILogger? logger, IServiceProvider? serviceProvider) {}
+
+    public abstract IPAddress? PeerAddress { get; }
+
+    public ValueTask ConnectAsync(IRouteBCredential credential, CancellationToken cancellationToken = default) {}
+    protected abstract ValueTask ConnectAsyncCore(IRouteBCredential credential, CancellationToken cancellationToken);
+    public ValueTask DisconnectAsync(CancellationToken cancellationToken = default) {}
+    protected abstract ValueTask DisconnectAsyncCore(CancellationToken cancellationToken);
+  }
+}
+// API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.7.1.0.
+// Smdn.Reflection.ReverseGenerating.ListApi.Core v1.5.0.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-net8.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-net8.0.apilist.cs
index aeefe55..a69e48e 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-net8.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.Primitives/Smdn.Net.EchonetLite.RouteB.Primitives-net8.0.apilist.cs
@@ -1,81 +1,85 @@
-// Smdn.Net.EchonetLite.RouteB.Primitives.dll (Smdn.Net.EchonetLite.RouteB.Primitives-2.1.0)
+// Smdn.Net.EchonetLite.RouteB.Primitives.dll (Smdn.Net.EchonetLite.RouteB.Primitives-2.2.0)
 //   Name: Smdn.Net.EchonetLite.RouteB.Primitives
-//   AssemblyVersion: 2.1.0.0
-//   InformationalVersion: 2.1.0+8350a1992a3cc375c86febf128c7a1ab32401211
+//   AssemblyVersion: 2.2.0.0
+//   InformationalVersion: 2.2.0+eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
 //   TargetFramework: .NETCoreApp,Version=v8.0
 //   Configuration: Release
+//   Metadata: IsTrimmable=True
+//   Metadata: RepositoryUrl=https://github.com/smdn/Smdn.Net.EchonetLite
+//   Metadata: RepositoryBranch=main
+//   Metadata: RepositoryCommit=eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
 //   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.Net.EchonetLite.Primitives, Version=2.0.0.0, Culture=neutral
 //     System.ComponentModel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Memory, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Net.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 #nullable enable annotations
 
 using System;
 using System.Buffers;
 using System.Net;
 using System.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Logging;
 using Smdn.Net.EchonetLite.RouteB.Credentials;
 using Smdn.Net.EchonetLite.RouteB.Transport;
 using Smdn.Net.EchonetLite.Transport;
 
 namespace Smdn.Net.EchonetLite.RouteB.Credentials {
   public interface IRouteBCredential : IDisposable {
     void WriteIdTo(IBufferWriter<byte> buffer);
     void WritePasswordTo(IBufferWriter<byte> buffer);
   }
 
   public interface IRouteBCredentialIdentity {
   }
 
   public interface IRouteBCredentialProvider {
     IRouteBCredential GetCredential(IRouteBCredentialIdentity identity);
   }
 
   public static class RouteBCredentials {
     public const int AuthenticationIdLength = 32;
     public const int PasswordLength = 12;
   }
 }
 
 namespace Smdn.Net.EchonetLite.RouteB.DependencyInjection {
   public interface IRouteBServiceBuilder<TServiceKey> {
     Func<TServiceKey, string?>? OptionsNameSelector { get; }
     TServiceKey ServiceKey { get; }
     IServiceCollection Services { get; }
   }
 
   public static class IRouteBServiceBuilderExtensions {
     public static string? GetOptionsName<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder) {}
   }
 }
 
 namespace Smdn.Net.EchonetLite.RouteB.Transport {
   [Obsolete("Use IRouteBServiceBuilder instead.")]
   public interface IRouteBEchonetLiteHandlerBuilder {
     IServiceCollection Services { get; }
   }
 
   public interface IRouteBEchonetLiteHandlerFactory {
     ValueTask<RouteBEchonetLiteHandler> CreateAsync(CancellationToken cancellationToken);
   }
 
   public abstract class RouteBEchonetLiteHandler : EchonetLiteHandler {
     protected RouteBEchonetLiteHandler(ILogger? logger, IServiceProvider? serviceProvider) {}
 
     public abstract IPAddress? PeerAddress { get; }
 
     public ValueTask ConnectAsync(IRouteBCredential credential, CancellationToken cancellationToken = default) {}
     protected abstract ValueTask ConnectAsyncCore(IRouteBCredential credential, CancellationToken cancellationToken);
     public ValueTask DisconnectAsync(CancellationToken cancellationToken = default) {}
     protected abstract ValueTask DisconnectAsyncCore(CancellationToken cancellationToken);
   }
 }
-// API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.6.0.0.
-// Smdn.Reflection.ReverseGenerating.ListApi.Core v1.4.0.0 (https://github.com/smdn/Smdn.Reflection.ReverseGene...
Read more

Smdn.Net.EchonetLite.RouteB version 2.2.0

23 Dec 13:50
Immutable release. Only release title and notes can be modified.
87e4b85

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.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-net10.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-net10.0.apilist.cs
new file mode 100644
index 0000000..e96b449
--- /dev/null
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB/Smdn.Net.EchonetLite.RouteB-net10.0.apilist.cs
@@ -0,0 +1,173 @@
+// Smdn.Net.EchonetLite.RouteB.dll (Smdn.Net.EchonetLite.RouteB-2.2.0)
+//   Name: Smdn.Net.EchonetLite.RouteB
+//   AssemblyVersion: 2.2.0.0
+//   InformationalVersion: 2.2.0+eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
+//   TargetFramework: .NETCoreApp,Version=v10.0
+//   Configuration: Release
+//   Metadata: IsTrimmable=True
+//   Metadata: RepositoryUrl=https://github.com/smdn/Smdn.Net.EchonetLite
+//   Metadata: RepositoryBranch=main
+//   Metadata: RepositoryCommit=eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
+//   Referenced assemblies:
+//     Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Polly.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=c8a3ffc3f8f825cc
+//     Smdn.Net.EchonetLite, Version=2.1.0.0, Culture=neutral
+//     Smdn.Net.EchonetLite.Primitives, Version=2.0.0.0, Culture=neutral
+//     Smdn.Net.EchonetLite.RouteB.Primitives, Version=2.1.0.0, Culture=neutral
+//     System.Collections, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.ComponentModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.ComponentModel.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Linq, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Memory, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
+//     System.Net.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+#nullable enable annotations
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using Polly;
+using Smdn.Net.EchonetLite;
+using Smdn.Net.EchonetLite.ObjectModel;
+using Smdn.Net.EchonetLite.RouteB;
+using Smdn.Net.EchonetLite.RouteB.Credentials;
+using Smdn.Net.EchonetLite.RouteB.DependencyInjection;
+using Smdn.Net.EchonetLite.RouteB.Transport;
+
+namespace Smdn.Net.EchonetLite.RouteB {
+  public class HemsController :
+    IAsyncDisposable,
+    IDisposable,
+    IRouteBCredentialIdentity
+  {
+    public HemsController(IRouteBEchonetLiteHandlerFactory echonetLiteHandlerFactory, IRouteBCredentialProvider routeBCredentialProvider, ILogger? logger, ILoggerFactory? loggerFactoryForEchonetClient) {}
+    public HemsController(IServiceProvider serviceProvider) {}
+
+    protected EchonetClient Client { get; }
+    public EchonetObject Controller { get; }
+    public bool IsConnected { get; }
+    protected bool IsDisposed { get; }
+    protected ILogger? Logger { get; }
+    public LowVoltageSmartElectricEnergyMeter SmartMeter { get; }
+    public ISynchronizeInvoke? SynchronizingObject { get; set; }
+    public TimeSpan TimeoutWaitingProactiveNotification { get; set; }
+    public TimeSpan TimeoutWaitingResponse1 { get; set; }
+    public TimeSpan TimeoutWaitingResponse2 { get; set; }
+
+    public ValueTask ConnectAsync(ResiliencePipeline? resiliencePipelineForServiceRequest = null, CancellationToken cancellationToken = default) {}
+    public async ValueTask DisconnectAsync(CancellationToken cancellationToken = default) {}
+    protected virtual void Dispose(bool disposing) {}
+    public void Dispose() {}
+    public async ValueTask DisposeAsync() {}
+    protected virtual async ValueTask DisposeAsyncCore() {}
+    public ValueTask<TResult> RunWithResponseWaitTimer1Async<TResult>(Func<CancellationToken, ValueTask<TResult>> asyncAction, TResult resultForTimeout, CancellationToken cancellationToken = default) {}
+    public ValueTask<TResult> RunWithResponseWaitTimer1Async<TResult>(Func<CancellationToken, ValueTask<TResult>> asyncAction, string? messageForTimeoutException = null, CancellationToken cancellationToken = default) {}
+    public ValueTask<TResult> RunWithResponseWaitTimer2Async<TResult>(Func<CancellationToken, ValueTask<TResult>> asyncAction, string? messageForTimeoutException = null, CancellationToken cancellationToken = default) {}
+    protected void ThrowIfDisconnected() {}
+    protected void ThrowIfDisposed() {}
+  }
+
+  public sealed class LowVoltageSmartElectricEnergyMeter : DeviceSuperClass {
+    public IEchonetPropertyGetAccessor<int> Coefficient { get; }
+    public IEchonetPropertyGetAccessor<IReadOnlyList<(MeasurementValue<ElectricEnergyValue> NormalDirection, MeasurementValue<ElectricEnergyValue> ReverseDirection)>> CumulativeElectricEnergyLog2 { get; }
+    public IEchonetPropertySetGetAccessor<DateTime> DayForTheHistoricalDataOfCumulativeElectricEnergy1 { get; }
+    public IEchonetPropertySetGetAccessor<(DateTime DateAndTime, int NumberOfItems)> DayForTheHistoricalDataOfCumulativeElectricEnergy2 { get; }
+    public IEchonetPropertyGetAccessor<(ElectricCurrentValue RPhase, ElectricCurrentValue TPhase)> InstantaneousCurrent { get; }
+    public IEchonetPropertyGetAccessor<int> InstantaneousElectricPower { get; }
+    public IEchonetPropertyGetAccessor<ElectricEnergyValue> NormalDirectionCumulativeElectricEnergy { get; }
+    public IEchonetPropertyGetAccessor<MeasurementValue<ElectricEnergyValue>> NormalDirectionCumulativeElectricEnergyAtEvery30Min { get; }
+    public IEchonetPropertyGetAccessor<IReadOnlyList<MeasurementValue<ElectricEnergyValue>>> NormalDirectionCumulativeElectricEnergyLog1 { get; }
+    public IEchonetPropertyGetAccessor<int> NumberOfEffectiveDigitsCumulativeElectricEnergy { get; }
+    public IEchonetPropertyGetAccessor<(MeasurementValue<ElectricEnergyValue> NormalDirection, MeasurementValue<ElectricEnergyValue> ReverseDirection)> OneMinuteMeasuredCumulativeAmountsOfElectricEnergy { get; }
+    public IEchonetPropertyGetAccessor<ElectricEnergyValue> ReverseDirectionCumulativeElectricEnergy { get; }
+    public IEchonetPropertyGetAccessor<MeasurementValue<ElectricEnergyValue>> ReverseDirectionCumulativeElectricEnergyAtEvery30Min { get; }
+    public IEchonetPropertyGetAccessor<IReadOnlyList<MeasurementValue<ElectricEnergyValue>>> ReverseDirectionCumulativeElectricEnergyLog1 { get; }
+    public IEchonetPropertyGetAccessor<ReadOnlyMemory<byte>> RouteBIdentificationNumber { get; }
+    public IEchonetPropertyGetAccessor<decimal> UnitForCumulativeElectricEnergy { get; }
+  }
+
+  public static class MeasurementValue {
+    public static MeasurementValue<TValue> Create<TValue>(TValue @value, DateTime measuredAt) where TValue : struct {}
+  }
+
+  public sealed class RouteBDeviceFactory : IEchonetDeviceFactory {
+    public static RouteBDeviceFactory Instance { get; }
+
+    public RouteBDeviceFactory() {}
+
+    public EchonetDevice? Create(byte classGroupCode, byte classCode, byte instanceCode) {}
+  }
+
+  public readonly struct ElectricCurrentValue {
+    public ElectricCurrentValue(short rawValue) {}
+
+    public decimal Amperes { get; }
+    public bool IsValid { get; }
+    public short RawValue { get; }
+
+    public override string ToString() {}
+  }
+
+  public readonly struct ElectricEnergyValue {
+    public static readonly ElectricEnergyValue NoMeasurementData; // = "(no data)"
+    public static readonly ElectricEnergyValue Zero; // = "0 [kWh]"
+
+    public ElectricEnergyValue(int rawValue, decimal multiplierToKiloWattHours) {}
+
+    public bool IsValid { get; }
+    public decimal KiloWattHours { get; }
+    public int RawValue { get; }
+    public decimal WattHours { get; }
+
+    public override string ToString() {}
+    public bool TryGetValueAsKiloWattHours(out decimal @value) {}
+  }
+
+  public readonly struct MeasurementValue<TValue> where TValue : struct {
+    public MeasurementValue(TValue @value, DateTime measuredAt) {}
+
+    public DateTime MeasuredAt { get; }
+    public TValue Value { get; }
+
+    public void Deconstruct(out TValue @value, out DateTime measuredAt) {}
+    public override string ToString() {}
+  }
+}
+
+namespace Smdn.Net.EchonetLite.RouteB.Credentials {
+  public static class RouteBCredentialServiceCollectionExtensions {
+    public static IServiceCollection AddRouteBCredential(this IServiceCollection services, object? serviceKey, string id, string password) {}
+    public static IServiceCollection AddRouteBCredential(this ISe...
Read more

Smdn.Net.EchonetLite.Primitives version 2.1.0

23 Dec 13:38
Immutable release. Only release title and notes can be modified.
9b99426

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.EchonetLite.Primitives/Smdn.Net.EchonetLite.Primitives-net10.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.Primitives/Smdn.Net.EchonetLite.Primitives-net10.0.apilist.cs
new file mode 100644
index 0000000..776466d
--- /dev/null
+++ b/doc/api-list/Smdn.Net.EchonetLite.Primitives/Smdn.Net.EchonetLite.Primitives-net10.0.apilist.cs
@@ -0,0 +1,93 @@
+// Smdn.Net.EchonetLite.Primitives.dll (Smdn.Net.EchonetLite.Primitives-2.1.0)
+//   Name: Smdn.Net.EchonetLite.Primitives
+//   AssemblyVersion: 2.1.0.0
+//   InformationalVersion: 2.1.0+eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
+//   TargetFramework: .NETCoreApp,Version=v10.0
+//   Configuration: Release
+//   Metadata: IsTrimmable=True
+//   Metadata: RepositoryUrl=https://github.com/smdn/Smdn.Net.EchonetLite
+//   Metadata: RepositoryBranch=main
+//   Metadata: RepositoryCommit=eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
+//   Referenced assemblies:
+//     Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     System.ComponentModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Memory, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
+//     System.Net.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+#nullable enable annotations
+
+using System;
+using System.Buffers;
+using System.Collections.Generic;
+using System.Net;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Smdn.Net.EchonetLite;
+
+namespace Smdn.Net.EchonetLite {
+  public interface IEchonetLiteHandler {
+    Func<IPAddress, ReadOnlyMemory<byte>, CancellationToken, ValueTask>? ReceiveCallback { get; set; }
+
+    ValueTask SendAsync(ReadOnlyMemory<byte> data, CancellationToken cancellationToken);
+    ValueTask SendToAsync(IPAddress remoteAddress, ReadOnlyMemory<byte> data, CancellationToken cancellationToken);
+  }
+
+  public interface IEchonetObjectSpecification {
+    byte ClassCode { get; }
+    byte ClassGroupCode { get; }
+    IEnumerable<IEchonetPropertySpecification> Properties { get; }
+  }
+
+  public interface IEchonetPropertySpecification {
+    bool CanAnnounceStatusChange { get; }
+    bool CanGet { get; }
+    bool CanSet { get; }
+    byte Code { get; }
+
+    bool IsAcceptableValue(ReadOnlySpan<byte> edt);
+  }
+}
+
+namespace Smdn.Net.EchonetLite.Transport {
+  public abstract class EchonetLiteHandler :
+    IAsyncDisposable,
+    IDisposable,
+    IEchonetLiteHandler
+  {
+    protected class ReceivedFromUnknownAddressException : InvalidOperationException {
+      public ReceivedFromUnknownAddressException() {}
+      public ReceivedFromUnknownAddressException(string message) {}
+      public ReceivedFromUnknownAddressException(string message, Exception? innerException) {}
+    }
+
+    public const int DefaultPort = 3610;
+
+    protected EchonetLiteHandler(ILogger? logger, IServiceProvider? serviceProvider) {}
+
+    protected bool IsDisposed { get; }
+    protected bool IsReceiving { get; }
+    public abstract IPAddress? LocalAddress { get; }
+    protected ILogger? Logger { get; }
+    public Func<IPAddress, ReadOnlyMemory<byte>, CancellationToken, ValueTask>? ReceiveCallback { get; set; }
+
+    protected virtual void Dispose(bool disposing) {}
+    public void Dispose() {}
+    public async ValueTask DisposeAsync() {}
+    protected virtual async ValueTask DisposeAsyncCore() {}
+    protected virtual bool HandleReceiveTaskException(Exception exception) {}
+    protected abstract ValueTask<IPAddress> ReceiveAsyncCore(IBufferWriter<byte> buffer, CancellationToken cancellationToken);
+    public ValueTask SendAsync(ReadOnlyMemory<byte> data, CancellationToken cancellationToken) {}
+    protected abstract ValueTask SendAsyncCore(ReadOnlyMemory<byte> buffer, CancellationToken cancellationToken);
+    public ValueTask SendToAsync(IPAddress remoteAddress, ReadOnlyMemory<byte> data, CancellationToken cancellationToken) {}
+    protected abstract ValueTask SendToAsyncCore(IPAddress remoteAddress, ReadOnlyMemory<byte> buffer, CancellationToken cancellationToken);
+    protected void StartReceiving() {}
+    protected void StartReceiving(TaskFactory? taskFactoryForReceiving) {}
+    protected async ValueTask StopReceivingAsync() {}
+    protected virtual void ThrowIfDisposed() {}
+    protected void ThrowIfNotReceiving() {}
+    protected void ThrowIfReceiving() {}
+  }
+}
+// API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.7.1.0.
+// Smdn.Reflection.ReverseGenerating.ListApi.Core v1.5.0.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
diff --git a/doc/api-list/Smdn.Net.EchonetLite.Primitives/Smdn.Net.EchonetLite.Primitives-net8.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.Primitives/Smdn.Net.EchonetLite.Primitives-net8.0.apilist.cs
index a4740db..dec444c 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.Primitives/Smdn.Net.EchonetLite.Primitives-net8.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.Primitives/Smdn.Net.EchonetLite.Primitives-net8.0.apilist.cs
@@ -1,89 +1,93 @@
-// Smdn.Net.EchonetLite.Primitives.dll (Smdn.Net.EchonetLite.Primitives-2.0.2)
+// Smdn.Net.EchonetLite.Primitives.dll (Smdn.Net.EchonetLite.Primitives-2.1.0)
 //   Name: Smdn.Net.EchonetLite.Primitives
-//   AssemblyVersion: 2.0.2.0
-//   InformationalVersion: 2.0.2+10cb847a99b6c2ad30297280debeb56a41a346bb
+//   AssemblyVersion: 2.1.0.0
+//   InformationalVersion: 2.1.0+eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
 //   TargetFramework: .NETCoreApp,Version=v8.0
 //   Configuration: Release
+//   Metadata: IsTrimmable=True
+//   Metadata: RepositoryUrl=https://github.com/smdn/Smdn.Net.EchonetLite
+//   Metadata: RepositoryBranch=main
+//   Metadata: RepositoryCommit=eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
 //   Referenced assemblies:
 //     Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     System.ComponentModel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Memory, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Net.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 #nullable enable annotations
 
 using System;
 using System.Buffers;
 using System.Collections.Generic;
 using System.Net;
 using System.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.Logging;
 using Smdn.Net.EchonetLite;
 
 namespace Smdn.Net.EchonetLite {
   public interface IEchonetLiteHandler {
     Func<IPAddress, ReadOnlyMemory<byte>, CancellationToken, ValueTask>? ReceiveCallback { get; set; }
 
     ValueTask SendAsync(ReadOnlyMemory<byte> data, CancellationToken cancellationToken);
     ValueTask SendToAsync(IPAddress remoteAddress, ReadOnlyMemory<byte> data, CancellationToken cancellationToken);
   }
 
   public interface IEchonetObjectSpecification {
     byte ClassCode { get; }
     byte ClassGroupCode { get; }
     IEnumerable<IEchonetPropertySpecification> Properties { get; }
   }
 
   public interface IEchonetPropertySpecification {
     bool CanAnnounceStatusChange { get; }
     bool CanGet { get; }
     bool CanSet { get; }
     byte Code { get; }
 
     bool IsAcceptableValue(ReadOnlySpan<byte> edt);
   }
 }
 
 namespace Smdn.Net.EchonetLite.Transport {
   public abstract class EchonetLiteHandler :
     IAsyncDisposable,
     IDisposable,
     IEchonetLiteHandler
   {
     protected class ReceivedFromUnknownAddressException : InvalidOperationException {
       public ReceivedFromUnknownAddressException() {}
       public ReceivedFromUnknownAddressException(string message) {}
       public ReceivedFromUnknownAddressException(string message, Exception? innerException) {}
     }
 
     public const int DefaultPort = 3610;
 
     protected EchonetLiteHandler(ILogger? logger, IServiceProvider? serviceProvider) {}
 
     protected bool IsDisposed { get; }
     protected bool IsReceiving { get; }
     public abstract IPAddress? LocalAddress { get; }
     protected ILogger? Logger { get; }
     public Func<IPAddress, ReadOnlyMemory<byte>, CancellationToken, ValueTask>? ReceiveCallback { get; set; }
 
     protected virtual void Dispose(bool disposing) {}
     public void Dispose() {}
     public async ValueTask DisposeAsync() {}
     protected virtual async ValueTask DisposeAsyncCore() {}
     protected virtual bool HandleReceiveTaskException(Exception exception) {}
     protected abstract ValueTask<IPAddress> ReceiveAsyncCore(IBufferWriter<byte> buffer, CancellationToken cancellationToken);
     public ValueTask SendAsync(ReadOnlyMemory<byte> data, CancellationToken cancellationToken) {}
     protected abstract ValueTask SendAsyncCore(ReadOnlyMemory<byte> buffer, CancellationToken cancellationToken);
     public V...
Read more

Smdn.Net.EchonetLite version 2.2.0

23 Dec 13:40
Immutable release. Only release title and notes can be modified.
dda7e1e

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.EchonetLite/Smdn.Net.EchonetLite-net10.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite/Smdn.Net.EchonetLite-net10.0.apilist.cs
new file mode 100644
index 0000000..33b0361
--- /dev/null
+++ b/doc/api-list/Smdn.Net.EchonetLite/Smdn.Net.EchonetLite-net10.0.apilist.cs
@@ -0,0 +1,420 @@
+// Smdn.Net.EchonetLite.dll (Smdn.Net.EchonetLite-2.2.0)
+//   Name: Smdn.Net.EchonetLite
+//   AssemblyVersion: 2.2.0.0
+//   InformationalVersion: 2.2.0+eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
+//   TargetFramework: .NETCoreApp,Version=v10.0
+//   Configuration: Release
+//   Metadata: IsTrimmable=True
+//   Metadata: RepositoryUrl=https://github.com/smdn/Smdn.Net.EchonetLite
+//   Metadata: RepositoryBranch=main
+//   Metadata: RepositoryCommit=eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
+//   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
+//     Polly.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=c8a3ffc3f8f825cc
+//     Smdn.Net.EchonetLite.Primitives, Version=2.0.0.0, Culture=neutral
+//     System.Collections, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Collections.Concurrent, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.ComponentModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.ComponentModel.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Linq, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Memory, Version=10.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
+//     System.Net.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Threading, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+#nullable enable annotations
+
+using System;
+using System.Buffers;
+using System.Collections.Generic;
+using System.Collections.Specialized;
+using System.ComponentModel;
+using System.Diagnostics.CodeAnalysis;
+using System.Net;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Logging;
+using Polly;
+using Smdn.Net.EchonetLite;
+using Smdn.Net.EchonetLite.ObjectModel;
+using Smdn.Net.EchonetLite.Protocol;
+
+namespace Smdn.Net.EchonetLite {
+  public interface IEchonetDeviceFactory {
+    EchonetDevice? Create(byte classGroupCode, byte classCode, byte instanceCode);
+  }
+
+  public enum EchonetServicePropertyResult : int {
+    Accepted = 1,
+    NotAccepted = 2,
+    Unavailable = 0,
+  }
+
+  public class EchonetClient :
+    IAsyncDisposable,
+    IDisposable
+  {
+    public static readonly ResiliencePropertyKey<ILogger?> ResiliencePropertyKeyForLogger; // = "EchonetClient.ResiliencePropertyKeyForLogger"
+    public static readonly ResiliencePropertyKey<ESV> ResiliencePropertyKeyForRequestServiceCode; // = "EchonetClient.ResiliencePropertyKeyForRequestServiceCode"
+    public static readonly ResiliencePropertyKey<ESV> ResiliencePropertyKeyForResponseServiceCode; // = "EchonetClient.ResiliencePropertyKeyForResponseServiceCode"
+
+    public static ILogger? GetLoggerForResiliencePipeline(ResilienceContext resilienceContext) {}
+    public static bool TryGetRequestServiceCodeForResiliencePipeline(ResilienceContext resilienceContext, out ESV serviceCode) {}
+    public static bool TryGetResponseServiceCodeForResiliencePipeline(ResilienceContext resilienceContext, out ESV serviceCode) {}
+
+    public event EventHandler<EchonetNodeEventArgs>? InstanceListUpdated;
+    public event EventHandler<EchonetNodeEventArgs>? InstanceListUpdating;
+    public event EventHandler<EchonetObjectEventArgs>? PropertyMapAcquired;
+    public event EventHandler<EchonetObjectEventArgs>? PropertyMapAcquiring;
+
+    public EchonetClient(EchonetNode selfNode, IEchonetLiteHandler echonetLiteHandler, bool shouldDisposeEchonetLiteHandler = false, EchonetNodeRegistry? nodeRegistry = null, IEchonetDeviceFactory? deviceFactory = null, ResiliencePipeline? resiliencePipelineForSendingResponseFrame = null, ILogger? logger = null, IServiceProvider? serviceProvider = null) {}
+    public EchonetClient(IEchonetLiteHandler echonetLiteHandler, bool shouldDisposeEchonetLiteHandler = false, IServiceProvider? serviceProvider = null) {}
+    public EchonetClient(IEchonetLiteHandler echonetLiteHandler, bool shouldDisposeEchonetLiteHandler, EchonetNodeRegistry? nodeRegistry, IEchonetDeviceFactory? deviceFactory, IServiceProvider? serviceProvider = null) {}
+
+    protected ILogger? Logger { get; }
+    public EchonetNodeRegistry NodeRegistry { get; }
+    public EchonetNode SelfNode { get; }
+    public ISynchronizeInvoke? SynchronizingObject { get; set; }
+
+    public async ValueTask<EchonetServiceResponse> AcquirePropertyMapsAsync(EchonetObject device, IEnumerable<byte>? extraPropertyCodes = null, ResiliencePipeline? resiliencePipelineForServiceRequest = null, CancellationToken cancellationToken = default) {}
+    protected virtual void Dispose(bool disposing) {}
+    public void Dispose() {}
+    public async ValueTask DisposeAsync() {}
+    protected virtual async ValueTask DisposeAsyncCore() {}
+    internal protected IPAddress? GetSelfNodeAddress() {}
+    protected virtual async ValueTask HandleFormat1MessageAsync(IPAddress address, int id, Format1Message message, CancellationToken cancellationToken) {}
+    protected virtual ValueTask HandleFormat2MessageAsync(IPAddress address, int id, ReadOnlyMemory<byte> edata, CancellationToken cancellationToken) {}
+    protected void InvokeEvent<TEventArgs>(EventHandler<TEventArgs>? eventHandler, TEventArgs e) where TEventArgs : EventArgs {}
+    public async ValueTask<EchonetServiceResponse> NotifyAsync(EOJ sourceObject, IEnumerable<PropertyValue> properties, IPAddress destinationNodeAddress, EOJ destinationObject, ResiliencePipeline? resiliencePipeline = null, CancellationToken cancellationToken = default) {}
+    public async ValueTask NotifyInstanceListAsync(ResiliencePipeline? resiliencePipelineForServiceRequest = null, CancellationToken cancellationToken = default) {}
+    public async ValueTask NotifyOneWayAsync(EOJ sourceObject, IEnumerable<PropertyValue> properties, IPAddress? destinationNodeAddress, EOJ destinationObject, ResiliencePipeline? resiliencePipeline = null, CancellationToken cancellationToken = default) {}
+    protected virtual void OnInstanceListUpdated(EchonetNodeEventArgs e) {}
+    protected virtual void OnInstanceListUpdating(EchonetNodeEventArgs e) {}
+    protected virtual void OnPropertyMapAcquired(EchonetObjectEventArgs e) {}
+    protected virtual void OnPropertyMapAcquiring(EchonetObjectEventArgs e) {}
+    public Task RequestNotifyInstanceListAsync(IPAddress? destinationNodeAddress, Func<EchonetNode, bool> onInstanceListUpdated, ResiliencePipeline? resiliencePipelineForServiceRequest = null, CancellationToken cancellationToken = default) {}
+    public ValueTask RequestNotifyInstanceListAsync(IPAddress? destinationNodeAddress = null, ResiliencePipeline? resiliencePipelineForServiceRequest = null, CancellationToken cancellationToken = default) {}
+    public async Task RequestNotifyInstanceListAsync<TState>(IPAddress? destinationNodeAddress, Func<EchonetNode, TState, bool> onInstanceListUpdated, TState state, ResiliencePipeline? resiliencePipelineForServiceRequest = null, CancellationToken cancellationToken = default) {}
+    public async ValueTask RequestNotifyOneWayAsync(EOJ sourceObject, IPAddress? destinationNodeAddress, EOJ destinationObject, IEnumerable<byte> propertyCodes, ResiliencePipeline? resiliencePipeline = null, CancellationToken cancellationToken = default) {}
+    public async ValueTask<EchonetServiceResponse> RequestReadAsync(EOJ sourceObject, IPAddress destinationNodeAddress, EOJ destinationObject, IEnumerable<byte> propertyCodes, ResiliencePipeline? resiliencePipeline = null, CancellationToken cancellationToken = default) {}
+    public async ValueTask RequestReadMulticastAsync(EOJ sourceObject, EOJ destinationObject, IEnumerable<byte> propertyCodes, ResiliencePipeline? resiliencePipeline = null, CancellationToken cancellationToken = default) {}
+    public async ValueTask<EchonetServiceResponse> RequestWriteAsync(EOJ sourceObject, IPAddress destinationNodeAddress, EOJ destinationObject, IEnumerable<PropertyValue> properties, ResiliencePipeline? resiliencePipeline = null, CancellationToken cancellationToken = default...
Read more

Smdn.Net.EchonetLite.RouteB.BP35XX version 2.0.0-preview6

23 Dec 13:57
Immutable release. Only release title and notes can be modified.
3088925

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.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net10.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net10.0.apilist.cs
new file mode 100644
index 0000000..2bf6674
--- /dev/null
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net10.0.apilist.cs
@@ -0,0 +1,73 @@
+// Smdn.Net.EchonetLite.RouteB.BP35XX.dll (Smdn.Net.EchonetLite.RouteB.BP35XX-2.0.0-preview6)
+//   Name: Smdn.Net.EchonetLite.RouteB.BP35XX
+//   AssemblyVersion: 2.0.0.0
+//   InformationalVersion: 2.0.0-preview6+eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
+//   TargetFramework: .NETCoreApp,Version=v10.0
+//   Configuration: Release
+//   Metadata: IsTrimmable=True
+//   Metadata: RepositoryUrl=https://github.com/smdn/Smdn.Net.EchonetLite
+//   Metadata: RepositoryBranch=main
+//   Metadata: RepositoryCommit=eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
+//   Referenced assemblies:
+//     Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Microsoft.Extensions.Logging.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Microsoft.Extensions.Options, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Polly.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=c8a3ffc3f8f825cc
+//     Polly.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=c8a3ffc3f8f825cc
+//     Smdn.Devices.BP35XX, Version=2.2.0.0, Culture=neutral
+//     Smdn.Net.EchonetLite.Primitives, Version=2.0.0.0, Culture=neutral
+//     Smdn.Net.EchonetLite.RouteB.Primitives, Version=2.1.0.0, Culture=neutral
+//     Smdn.Net.EchonetLite.RouteB.SkStackIP, Version=2.0.0.0, Culture=neutral
+//     Smdn.Net.SkStackIP, Version=1.5.2.0, Culture=neutral
+//     System.ComponentModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Linq, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Net.NetworkInformation, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Net.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+#nullable enable annotations
+
+using System;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Polly;
+using Polly.DependencyInjection;
+using Polly.Retry;
+using Smdn.Devices.BP35XX;
+using Smdn.Net.EchonetLite.RouteB.DependencyInjection;
+using Smdn.Net.EchonetLite.RouteB.Transport;
+using Smdn.Net.EchonetLite.RouteB.Transport.SkStackIP;
+using Smdn.Net.SkStackIP;
+
+namespace Smdn.Net.EchonetLite.RouteB.DependencyInjection {
+  public sealed class BP35A1RouteBHandlerFactoryBuilder<TServiceKey> : SkStackRouteBHandlerFactoryBuilder<TServiceKey> {
+    protected override SkStackRouteBHandlerFactory Build(IServiceProvider serviceProvider, SkStackRouteBSessionOptions sessionOptions, Action<SkStackClient>? postConfigureClient) {}
+  }
+
+  public static class BP35A1RouteBServiceBuilderExtensions {
+    public static IRouteBServiceBuilder<TServiceKey> AddBP35A1Handler<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, Action<BP35A1Options> configureBP35A1Options, Action<SkStackRouteBSessionOptions> configureSessionOptions, Action<BP35A1RouteBHandlerFactoryBuilder<TServiceKey>> configureRouteBHandlerFactory) {}
+    public static IRouteBServiceBuilder<TServiceKey> AddBP35A1PanaAuthenticationWorkaround<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, Action<ResiliencePipelineBuilder, AddResiliencePipelineContext<SkStackRouteBHandler.ResiliencePipelineKeyPair<TServiceKey>>, Func<ResilienceContext, ValueTask>> configureWorkaroundPipeline) {}
+    public static IRouteBServiceBuilder<TServiceKey> AddBP35A1PanaAuthenticationWorkaround<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, RetryStrategyOptions retryOptions) {}
+  }
+}
+
+namespace Smdn.Net.EchonetLite.RouteB.Transport.BP35XX {
+  public sealed class BP35A1RouteBHandler : SkStackUdpRouteBHandler {
+    public BP35A1RouteBHandler(BP35A1 client, SkStackRouteBSessionOptions sessionOptions, bool shouldDisposeClient, IServiceProvider? serviceProvider, object? routeBServiceKey) {}
+  }
+
+  public sealed class BP35A1RouteBHandlerFactory : SkStackRouteBHandlerFactory {
+    public BP35A1RouteBHandlerFactory(IServiceProvider serviceProvider, object? routeBServiceKey, BP35A1Options options, SkStackRouteBSessionOptions sessionOptions, Action<SkStackClient>? postConfigureClient) {}
+
+    protected override async ValueTask<RouteBEchonetLiteHandler> CreateAsyncCore(CancellationToken cancellationToken) {}
+  }
+
+  public static class BP35A1RouteBHandlerServiceCollectionExtensions {
+    public static IServiceCollection AddResiliencePipelineBP35A1PanaAuthenticationWorkaround(this IServiceCollection services, Action<ResiliencePipelineBuilder, AddResiliencePipelineContext<string>, Func<ResilienceContext, ValueTask>> configureWorkaroundPipeline) {}
+    public static IServiceCollection AddResiliencePipelineBP35A1PanaAuthenticationWorkaround(this IServiceCollection services, RetryStrategyOptions retryOptions) {}
+    public static IServiceCollection AddResiliencePipelineBP35A1PanaAuthenticationWorkaround<TServiceKey>(this IServiceCollection services, TServiceKey serviceKey, Action<ResiliencePipelineBuilder, AddResiliencePipelineContext<SkStackRouteBHandler.ResiliencePipelineKeyPair<TServiceKey>>, Func<ResilienceContext, ValueTask>> configureWorkaroundPipeline) {}
+    public static IServiceCollection AddResiliencePipelineBP35A1PanaAuthenticationWorkaround<TServiceKey>(this IServiceCollection services, TServiceKey serviceKey, RetryStrategyOptions retryOptions) {}
+  }
+}
+// API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.7.1.0.
+// Smdn.Reflection.ReverseGenerating.ListApi.Core v1.5.0.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
diff --git a/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net8.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net8.0.apilist.cs
index 68f0aaa..21b1506 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net8.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.RouteB.BP35XX/Smdn.Net.EchonetLite.RouteB.BP35XX-net8.0.apilist.cs
@@ -1,69 +1,73 @@
-// Smdn.Net.EchonetLite.RouteB.BP35XX.dll (Smdn.Net.EchonetLite.RouteB.BP35XX-2.0.0-preview5)
+// Smdn.Net.EchonetLite.RouteB.BP35XX.dll (Smdn.Net.EchonetLite.RouteB.BP35XX-2.0.0-preview6)
 //   Name: Smdn.Net.EchonetLite.RouteB.BP35XX
 //   AssemblyVersion: 2.0.0.0
-//   InformationalVersion: 2.0.0-preview5+00af253682c17171aae1d68f04e3b98b34db2d4f
+//   InformationalVersion: 2.0.0-preview6+eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
 //   TargetFramework: .NETCoreApp,Version=v8.0
 //   Configuration: Release
+//   Metadata: IsTrimmable=True
+//   Metadata: RepositoryUrl=https://github.com/smdn/Smdn.Net.EchonetLite
+//   Metadata: RepositoryBranch=main
+//   Metadata: RepositoryCommit=eceaa1ab8c33ec84da009bb0a40f14181fd5e97b
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Microsoft.Extensions.Logging.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Microsoft.Extensions.Options, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Polly.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=c8a3ffc3f8f825cc
 //     Polly.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=c8a3ffc3f8f825cc
 //     Smdn.Devices.BP35XX, Version=2.2.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.Primitives, Version=2.0.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.RouteB.Primitives, Version=2.1.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.RouteB.SkStackIP, Version=2.0.0.0, Culture=neutral
-//     Smdn.Net.SkStackIP, Version=1.4.0.0, Culture=neutral
+//     Smdn.Net.SkStackIP, Version=1.5.2.0, Culture=neutral
 //     System.ComponentModel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Linq, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Net.NetworkInformation, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Net.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 #nullable enable annotations
 
 using System;
 using System.Threading;
 using System...
Read more

Smdn.Net.SmartMeter.Extensions.Munin version 2.2.0

27 Nov 13:43
Immutable release. Only release title and notes can be modified.
8b351d0

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.SmartMeter.Extensions.Munin/Smdn.Net.SmartMeter.Extensions.Munin-net10.0.apilist.cs b/doc/api-list/Smdn.Net.SmartMeter.Extensions.Munin/Smdn.Net.SmartMeter.Extensions.Munin-net10.0.apilist.cs
new file mode 100644
index 0000000..810f689
--- /dev/null
+++ b/doc/api-list/Smdn.Net.SmartMeter.Extensions.Munin/Smdn.Net.SmartMeter.Extensions.Munin-net10.0.apilist.cs
@@ -0,0 +1,216 @@
+// Smdn.Net.SmartMeter.Extensions.Munin.dll (Smdn.Net.SmartMeter.Extensions.Munin-2.2.0)
+//   Name: Smdn.Net.SmartMeter.Extensions.Munin
+//   AssemblyVersion: 2.2.0.0
+//   InformationalVersion: 2.2.0+291dc030d4c0805f26c6d95ef97ee47c2d34e54d
+//   TargetFramework: .NETCoreApp,Version=v10.0
+//   Configuration: Release
+//   Referenced assemblies:
+//     Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Microsoft.Extensions.Hosting.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Microsoft.Extensions.Logging.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Smdn.Net.EchonetLite, Version=2.1.0.0, Culture=neutral
+//     Smdn.Net.EchonetLite.RouteB, Version=2.1.0.0, Culture=neutral
+//     Smdn.Net.EchonetLite.RouteB.Primitives, Version=2.1.0.0, Culture=neutral
+//     Smdn.Net.MuninNode, Version=2.5.0.0, Culture=neutral
+//     Smdn.Net.MuninNode.Hosting, Version=3.1.0.0, Culture=neutral
+//     Smdn.Net.SmartMeter, Version=2.1.0.0, Culture=neutral
+//     System.Collections, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Collections.Concurrent, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.ComponentModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Linq, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Net.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Threading, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+#nullable enable annotations
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Net;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+using Microsoft.Extensions.Logging;
+using Smdn.Net.EchonetLite.RouteB;
+using Smdn.Net.EchonetLite.RouteB.DependencyInjection;
+using Smdn.Net.MuninNode;
+using Smdn.Net.MuninNode.DependencyInjection;
+using Smdn.Net.MuninNode.Hosting;
+using Smdn.Net.MuninNode.Transport;
+using Smdn.Net.MuninPlugin;
+using Smdn.Net.SmartMeter;
+using Smdn.Net.SmartMeter.MuninNode;
+using Smdn.Net.SmartMeter.MuninNode.Hosting;
+using Smdn.Net.SmartMeter.MuninNode.Hosting.Systemd;
+using Smdn.Net.SmartMeter.MuninPlugin;
+
+namespace Smdn.Net.MuninNode.DependencyInjection {
+  public static class IMuninServiceBuilderExtensions {
+    public static SmartMeterMuninNodeBuilder AddSmartMeterMuninNode(this IMuninServiceBuilder builder, Action<MuninNodeOptions> configureMuninNodeOptions, Action<IRouteBServiceBuilder<string>> configureRouteBServices) {}
+  }
+}
+
+namespace Smdn.Net.SmartMeter.MuninNode {
+  public sealed class SmartMeterMuninNode : LocalNode {
+    public event EventHandler<Exception>? UnhandledAggregationException { add; remove; }
+
+    public override string HostName { get; }
+    public override IPluginProvider PluginProvider { get; }
+
+    protected override void Dispose(bool disposing) {}
+    protected override async ValueTask DisposeAsyncCore() {}
+    protected override EndPoint GetLocalEndPointToBind() {}
+    protected override ValueTask StartedAsync(CancellationToken cancellationToken) {}
+    protected override async ValueTask StartingAsync(CancellationToken cancellationToken) {}
+    protected override async ValueTask StoppedAsync(CancellationToken cancellationToken) {}
+  }
+
+  public sealed class SmartMeterMuninNodeBuilder : MuninNodeBuilder {
+    protected override IMuninNode Build(IPluginProvider pluginProvider, IMuninNodeListenerFactory? listenerFactory, IServiceProvider serviceProvider) {}
+  }
+
+  public static class SmartMeterMuninNodeBuilderExtensions {
+    public static SmartMeterMuninNodeBuilder AddCumulativeElectricEnergyAtEvery30MinPlugin(this SmartMeterMuninNodeBuilder builder, bool enableNormalDirection = true, bool enableReverseDirection = false, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
+    public static SmartMeterMuninNodeBuilder AddCumulativeElectricEnergyAtEvery30MinPlugin(this SmartMeterMuninNodeBuilder builder, string name, bool enableNormalDirection = true, bool enableReverseDirection = false, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
+    public static SmartMeterMuninNodeBuilder AddDailyCumulativeElectricEnergyPlugin(this SmartMeterMuninNodeBuilder builder, bool enableNormalDirection = true, bool enableReverseDirection = false, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
+    public static SmartMeterMuninNodeBuilder AddDailyCumulativeElectricEnergyPlugin(this SmartMeterMuninNodeBuilder builder, string name, bool enableNormalDirection = true, bool enableReverseDirection = false, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
+    public static SmartMeterMuninNodeBuilder AddInstantaneousCurrentPlugin(this SmartMeterMuninNodeBuilder builder, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
+    public static SmartMeterMuninNodeBuilder AddInstantaneousCurrentPlugin(this SmartMeterMuninNodeBuilder builder, TimeSpan aggregationInterval, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
+    public static SmartMeterMuninNodeBuilder AddInstantaneousCurrentPlugin(this SmartMeterMuninNodeBuilder builder, string name, TimeSpan aggregationInterval, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
+    public static SmartMeterMuninNodeBuilder AddInstantaneousElectricPowerPlugin(this SmartMeterMuninNodeBuilder builder, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
+    public static SmartMeterMuninNodeBuilder AddInstantaneousElectricPowerPlugin(this SmartMeterMuninNodeBuilder builder, TimeSpan aggregationInterval, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
+    public static SmartMeterMuninNodeBuilder AddInstantaneousElectricPowerPlugin(this SmartMeterMuninNodeBuilder builder, string name, TimeSpan aggregationInterval, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
+    public static SmartMeterMuninNodeBuilder AddMonthlyCumulativeElectricEnergyPlugin(this SmartMeterMuninNodeBuilder builder, bool enableNormalDirection = true, bool enableReverseDirection = false, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
+    public static SmartMeterMuninNodeBuilder AddMonthlyCumulativeElectricEnergyPlugin(this SmartMeterMuninNodeBuilder builder, string name, bool enableNormalDirection = true, bool enableReverseDirection = false, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
+    public static SmartMeterMuninNodeBuilder AddWeeklyCumulativeElectricEnergyPlugin(this SmartMeterMuninNodeBuilder builder, DayOfWeek firstDayOfWeek = DayOfWeek.Sunday, bool enableNormalDirection = true, bool enableReverseDirection = false, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
+    public static SmartMeterMuninNodeBuilder AddWeeklyCumulativeElectricEnergyPlugin(this SmartMeterMuninNodeBuilder builder, string name, DayOfWeek firstDayOfWeek = DayOfWeek.Sunday, bool enableNormalDirection = true, bool enableReverseDirection = false, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
+  }
+}
+
+namespace Smdn.Net.SmartMeter.MuninNode.Hosting {
+  public class AggregationHaltedException : InvalidOperationException {
+    public AggregationHaltedException() {}
+    public AggregationHaltedException(string message) {}
+    public AggregationHaltedException(string message, Exception? innerException) {}
+  }
+
+  public static class IServiceCollectionExtensions {
+    public static IServiceCollection AddHostedSmartMeterMuninNodeService(this IServiceCollection services, Action<IRouteBServiceBuilder<string>> configureRouteBServices, Action<MuninNodeOptions> configureMuninNodeOptions, Action<SmartMeterMuninNodeBuilder> configureSmartMeterMuninNode) {}
+    public static IServiceCollection AddHostedSmartMeterMuninNodeService<[DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] TSmartMeterMuninNodeService>(this IServiceCollection services, Action<IRouteBServiceBuilder<string>> configureRouteBServices, Action<MuninNodeOptions> configureMuninNodeOptions, Action<SmartMeterMuninNodeBuilder>...
Read more

Smdn.Net.SmartMeter version 2.2.0

27 Nov 13:42
Immutable release. Only release title and notes can be modified.
fbeec92

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.SmartMeter/Smdn.Net.SmartMeter-net10.0.apilist.cs b/doc/api-list/Smdn.Net.SmartMeter/Smdn.Net.SmartMeter-net10.0.apilist.cs
new file mode 100644
index 0000000..404c32c
--- /dev/null
+++ b/doc/api-list/Smdn.Net.SmartMeter/Smdn.Net.SmartMeter-net10.0.apilist.cs
@@ -0,0 +1,199 @@
+// Smdn.Net.SmartMeter.dll (Smdn.Net.SmartMeter-2.2.0)
+//   Name: Smdn.Net.SmartMeter
+//   AssemblyVersion: 2.2.0.0
+//   InformationalVersion: 2.2.0+291dc030d4c0805f26c6d95ef97ee47c2d34e54d
+//   TargetFramework: .NETCoreApp,Version=v10.0
+//   Configuration: Release
+//   Referenced assemblies:
+//     Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
+//     Polly.Core, Version=8.0.0.0, Culture=neutral, PublicKeyToken=c8a3ffc3f8f825cc
+//     Polly.Extensions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=c8a3ffc3f8f825cc
+//     Smdn.Extensions.Polly.KeyedRegistry, Version=1.2.0.0, Culture=neutral
+//     Smdn.Net.EchonetLite, Version=2.1.0.0, Culture=neutral
+//     Smdn.Net.EchonetLite.RouteB, Version=2.1.0.0, Culture=neutral
+//     Smdn.Net.EchonetLite.RouteB.Primitives, Version=2.1.0.0, Culture=neutral
+//     System.Collections, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.ComponentModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.ComponentModel.Primitives, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Linq, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.ObjectModel, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Runtime, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+//     System.Threading, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+#nullable enable annotations
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Runtime.CompilerServices;
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Logging;
+using Polly;
+using Polly.DependencyInjection;
+using Polly.Registry;
+using Polly.Registry.KeyedRegistry;
+using Smdn.Net.EchonetLite.RouteB;
+using Smdn.Net.EchonetLite.RouteB.Credentials;
+using Smdn.Net.EchonetLite.RouteB.Transport;
+using Smdn.Net.SmartMeter;
+
+namespace Smdn.Net.EchonetLite.RouteB.DependencyInjection {
+  public static class SmartMeterDataAggregatorRouteBServiceBuilderExtensions {
+    public static IRouteBServiceBuilder<TServiceKey> AddResiliencePipelineAggregationDataAcquisition<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, Action<ResiliencePipelineBuilder, AddResiliencePipelineContext<SmartMeterDataAggregator.ResiliencePipelineKeyPair<TServiceKey>>> configure) {}
+    public static IRouteBServiceBuilder<TServiceKey> AddResiliencePipelineDataAggregationTask<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, Action<ResiliencePipelineBuilder, AddResiliencePipelineContext<SmartMeterDataAggregator.ResiliencePipelineKeyPair<TServiceKey>>> configure) {}
+    public static IRouteBServiceBuilder<TServiceKey> AddResiliencePipelineSmartMeterConnection<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, Action<ResiliencePipelineBuilder, AddResiliencePipelineContext<SmartMeterDataAggregator.ResiliencePipelineKeyPair<TServiceKey>>> configure) {}
+    public static IRouteBServiceBuilder<TServiceKey> AddResiliencePipelineSmartMeterReadProperty<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, Action<ResiliencePipelineBuilder, AddResiliencePipelineContext<SmartMeterDataAggregator.ResiliencePipelineKeyPair<TServiceKey>>> configure) {}
+    public static IRouteBServiceBuilder<TServiceKey> AddResiliencePipelineSmartMeterReconnection<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, Action<ResiliencePipelineBuilder, AddResiliencePipelineContext<SmartMeterDataAggregator.ResiliencePipelineKeyPair<TServiceKey>>> configure) {}
+    public static IRouteBServiceBuilder<TServiceKey> AddResiliencePipelineSmartMeterWriteProperty<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, Action<ResiliencePipelineBuilder, AddResiliencePipelineContext<SmartMeterDataAggregator.ResiliencePipelineKeyPair<TServiceKey>>> configure) {}
+    public static IRouteBServiceBuilder<TServiceKey> AddResiliencePipelineUpdatingElectricEnergyBaseline<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, Action<ResiliencePipelineBuilder, AddResiliencePipelineContext<SmartMeterDataAggregator.ResiliencePipelineKeyPair<TServiceKey>>> configure) {}
+    public static IRouteBServiceBuilder<TServiceKey> AddRetryAggregationDataAcquisitionTimeout<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, int maxRetryAttempt, TimeSpan delay, Action<RetryStrategyOptions, AddResiliencePipelineContext<SmartMeterDataAggregator.ResiliencePipelineKeyPair<TServiceKey>>>? configureRetryOptions = null, Action<ResiliencePipelineBuilder, AddResiliencePipelineContext<SmartMeterDataAggregator.ResiliencePipelineKeyPair<TServiceKey>>>? configurePipeline = null) {}
+    public static IRouteBServiceBuilder<TServiceKey> AddRetryDataAggregationTaskException<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, int maxRetryAttempt, TimeSpan delay, Action<PredicateBuilder> configureExceptionPredicates, Action<RetryStrategyOptions, AddResiliencePipelineContext<SmartMeterDataAggregator.ResiliencePipelineKeyPair<TServiceKey>>>? configureRetryOptions = null, Action<ResiliencePipelineBuilder, AddResiliencePipelineContext<SmartMeterDataAggregator.ResiliencePipelineKeyPair<TServiceKey>>>? configurePipeline = null) {}
+    public static IRouteBServiceBuilder<TServiceKey> AddRetrySmartMeterConnectionTimeout<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, int maxRetryAttempt, TimeSpan delay, Action<RetryStrategyOptions, AddResiliencePipelineContext<SmartMeterDataAggregator.ResiliencePipelineKeyPair<TServiceKey>>>? configureRetryOptions = null, Action<ResiliencePipelineBuilder, AddResiliencePipelineContext<SmartMeterDataAggregator.ResiliencePipelineKeyPair<TServiceKey>>>? configurePipeline = null) {}
+    public static IRouteBServiceBuilder<TServiceKey> AddRetrySmartMeterReadPropertyException<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, int maxRetryAttempt, TimeSpan delay, Action<PredicateBuilder> configureExceptionPredicates, Action<RetryStrategyOptions, AddResiliencePipelineContext<SmartMeterDataAggregator.ResiliencePipelineKeyPair<TServiceKey>>>? configureRetryOptions = null, Action<ResiliencePipelineBuilder, AddResiliencePipelineContext<SmartMeterDataAggregator.ResiliencePipelineKeyPair<TServiceKey>>>? configurePipeline = null) {}
+    public static IRouteBServiceBuilder<TServiceKey> AddRetrySmartMeterReconnectionTimeout<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, int maxRetryAttempt, TimeSpan delay, Action<RetryStrategyOptions, AddResiliencePipelineContext<SmartMeterDataAggregator.ResiliencePipelineKeyPair<TServiceKey>>>? configureRetryOptions = null, Action<ResiliencePipelineBuilder, AddResiliencePipelineContext<SmartMeterDataAggregator.ResiliencePipelineKeyPair<TServiceKey>>>? configurePipeline = null) {}
+    public static IRouteBServiceBuilder<TServiceKey> AddRetrySmartMeterWritePropertyException<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, int maxRetryAttempt, TimeSpan delay, Action<PredicateBuilder> configureExceptionPredicates, Action<RetryStrategyOptions, AddResiliencePipelineContext<SmartMeterDataAggregator.ResiliencePipelineKeyPair<TServiceKey>>>? configureRetryOptions = null, Action<ResiliencePipelineBuilder, AddResiliencePipelineContext<SmartMeterDataAggregator.ResiliencePipelineKeyPair<TServiceKey>>>? configurePipeline = null) {}
+    public static IRouteBServiceBuilder<TServiceKey> AddRetryUpdatingElectricEnergyBaselineTimeout<TServiceKey>(this IRouteBServiceBuilder<TServiceKey> builder, int maxRetryAttempt, TimeSpan delay, Action<RetryStrategyOptions, AddResiliencePipelineContext<SmartMeterDataAggregator.ResiliencePipelineKeyPair<TServiceKey>>>? configureRetryOptions = null, Action<ResiliencePipelineBuilder, AddResiliencePipelineContext<SmartMeterDataAggregator.ResiliencePipelineKeyPair<TServiceKey...
Read more

Smdn.Net.EchonetLite.Primitives version 2.0.2

06 Jul 02:37
17d6164

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.EchonetLite.Primitives/Smdn.Net.EchonetLite.Primitives-net8.0.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.Primitives/Smdn.Net.EchonetLite.Primitives-net8.0.apilist.cs
index 076cb91..a4740db 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.Primitives/Smdn.Net.EchonetLite.Primitives-net8.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.Primitives/Smdn.Net.EchonetLite.Primitives-net8.0.apilist.cs
@@ -1,89 +1,89 @@
-// Smdn.Net.EchonetLite.Primitives.dll (Smdn.Net.EchonetLite.Primitives-2.0.1)
+// Smdn.Net.EchonetLite.Primitives.dll (Smdn.Net.EchonetLite.Primitives-2.0.2)
 //   Name: Smdn.Net.EchonetLite.Primitives
-//   AssemblyVersion: 2.0.1.0
-//   InformationalVersion: 2.0.1+a1a02047fb738e30ac5001d6149f8cc18eef4ee6
+//   AssemblyVersion: 2.0.2.0
+//   InformationalVersion: 2.0.2+10cb847a99b6c2ad30297280debeb56a41a346bb
 //   TargetFramework: .NETCoreApp,Version=v8.0
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     System.ComponentModel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Memory, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 //     System.Net.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 #nullable enable annotations
 
 using System;
 using System.Buffers;
 using System.Collections.Generic;
 using System.Net;
 using System.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.Logging;
 using Smdn.Net.EchonetLite;
 
 namespace Smdn.Net.EchonetLite {
   public interface IEchonetLiteHandler {
     Func<IPAddress, ReadOnlyMemory<byte>, CancellationToken, ValueTask>? ReceiveCallback { get; set; }
 
     ValueTask SendAsync(ReadOnlyMemory<byte> data, CancellationToken cancellationToken);
     ValueTask SendToAsync(IPAddress remoteAddress, ReadOnlyMemory<byte> data, CancellationToken cancellationToken);
   }
 
   public interface IEchonetObjectSpecification {
     byte ClassCode { get; }
     byte ClassGroupCode { get; }
     IEnumerable<IEchonetPropertySpecification> Properties { get; }
   }
 
   public interface IEchonetPropertySpecification {
     bool CanAnnounceStatusChange { get; }
     bool CanGet { get; }
     bool CanSet { get; }
     byte Code { get; }
 
     bool IsAcceptableValue(ReadOnlySpan<byte> edt);
   }
 }
 
 namespace Smdn.Net.EchonetLite.Transport {
   public abstract class EchonetLiteHandler :
     IAsyncDisposable,
     IDisposable,
     IEchonetLiteHandler
   {
     protected class ReceivedFromUnknownAddressException : InvalidOperationException {
       public ReceivedFromUnknownAddressException() {}
       public ReceivedFromUnknownAddressException(string message) {}
       public ReceivedFromUnknownAddressException(string message, Exception? innerException) {}
     }
 
     public const int DefaultPort = 3610;
 
     protected EchonetLiteHandler(ILogger? logger, IServiceProvider? serviceProvider) {}
 
     protected bool IsDisposed { get; }
     protected bool IsReceiving { get; }
     public abstract IPAddress? LocalAddress { get; }
     protected ILogger? Logger { get; }
     public Func<IPAddress, ReadOnlyMemory<byte>, CancellationToken, ValueTask>? ReceiveCallback { get; set; }
 
     protected virtual void Dispose(bool disposing) {}
     public void Dispose() {}
     public async ValueTask DisposeAsync() {}
     protected virtual async ValueTask DisposeAsyncCore() {}
     protected virtual bool HandleReceiveTaskException(Exception exception) {}
     protected abstract ValueTask<IPAddress> ReceiveAsyncCore(IBufferWriter<byte> buffer, CancellationToken cancellationToken);
     public ValueTask SendAsync(ReadOnlyMemory<byte> data, CancellationToken cancellationToken) {}
     protected abstract ValueTask SendAsyncCore(ReadOnlyMemory<byte> buffer, CancellationToken cancellationToken);
     public ValueTask SendToAsync(IPAddress remoteAddress, ReadOnlyMemory<byte> data, CancellationToken cancellationToken) {}
     protected abstract ValueTask SendToAsyncCore(IPAddress remoteAddress, ReadOnlyMemory<byte> buffer, CancellationToken cancellationToken);
     protected void StartReceiving() {}
     protected void StartReceiving(TaskFactory? taskFactoryForReceiving) {}
     protected async ValueTask StopReceivingAsync() {}
     protected virtual void ThrowIfDisposed() {}
     protected void ThrowIfNotReceiving() {}
     protected void ThrowIfReceiving() {}
   }
 }
 // API list generated by Smdn.Reflection.ReverseGenerating.ListApi.MSBuild.Tasks v1.6.0.0.
 // Smdn.Reflection.ReverseGenerating.ListApi.Core v1.4.0.0 (https://github.com/smdn/Smdn.Reflection.ReverseGenerating)
diff --git a/doc/api-list/Smdn.Net.EchonetLite.Primitives/Smdn.Net.EchonetLite.Primitives-netstandard2.1.apilist.cs b/doc/api-list/Smdn.Net.EchonetLite.Primitives/Smdn.Net.EchonetLite.Primitives-netstandard2.1.apilist.cs
index 579cfff..df2f9b9 100644
--- a/doc/api-list/Smdn.Net.EchonetLite.Primitives/Smdn.Net.EchonetLite.Primitives-netstandard2.1.apilist.cs
+++ b/doc/api-list/Smdn.Net.EchonetLite.Primitives/Smdn.Net.EchonetLite.Primitives-netstandard2.1.apilist.cs
@@ -1,86 +1,86 @@
-// Smdn.Net.EchonetLite.Primitives.dll (Smdn.Net.EchonetLite.Primitives-2.0.1)
+// Smdn.Net.EchonetLite.Primitives.dll (Smdn.Net.EchonetLite.Primitives-2.0.2)
 //   Name: Smdn.Net.EchonetLite.Primitives
-//   AssemblyVersion: 2.0.1.0
-//   InformationalVersion: 2.0.1+a1a02047fb738e30ac5001d6149f8cc18eef4ee6
+//   AssemblyVersion: 2.0.2.0
+//   InformationalVersion: 2.0.2+10cb847a99b6c2ad30297280debeb56a41a346bb
 //   TargetFramework: .NETStandard,Version=v2.1
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.Logging.Abstractions, Version=6.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     netstandard, Version=2.1.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51
 #nullable enable annotations
 
 using System;
 using System.Buffers;
 using System.Collections.Generic;
 using System.Net;
 using System.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.Logging;
 using Smdn.Net.EchonetLite;
 
 namespace Smdn.Net.EchonetLite {
   public interface IEchonetLiteHandler {
     Func<IPAddress, ReadOnlyMemory<byte>, CancellationToken, ValueTask>? ReceiveCallback { get; set; }
 
     ValueTask SendAsync(ReadOnlyMemory<byte> data, CancellationToken cancellationToken);
     ValueTask SendToAsync(IPAddress remoteAddress, ReadOnlyMemory<byte> data, CancellationToken cancellationToken);
   }
 
   public interface IEchonetObjectSpecification {
     byte ClassCode { get; }
     byte ClassGroupCode { get; }
     IEnumerable<IEchonetPropertySpecification> Properties { get; }
   }
 
   public interface IEchonetPropertySpecification {
     bool CanAnnounceStatusChange { get; }
     bool CanGet { get; }
     bool CanSet { get; }
     byte Code { get; }
 
     bool IsAcceptableValue(ReadOnlySpan<byte> edt);
   }
 }
 
 namespace Smdn.Net.EchonetLite.Transport {
   public abstract class EchonetLiteHandler :
     IAsyncDisposable,
     IDisposable,
     IEchonetLiteHandler
   {
     protected class ReceivedFromUnknownAddressException : InvalidOperationException {
       public ReceivedFromUnknownAddressException() {}
       public ReceivedFromUnknownAddressException(string message) {}
       public ReceivedFromUnknownAddressException(string message, Exception? innerException) {}
     }
 
     public const int DefaultPort = 3610;
 
     protected EchonetLiteHandler(ILogger? logger, IServiceProvider? serviceProvider) {}
 
     protected bool IsDisposed { get; }
     protected bool IsReceiving { get; }
     public abstract IPAddress? LocalAddress { get; }
     protected ILogger? Logger { get; }
     public Func<IPAddress, ReadOnlyMemory<byte>, CancellationToken, ValueTask>? ReceiveCallback { get; set; }
 
     protected virtual void Dispose(bool disposing) {}
     public void Dispose() {}
     public async ValueTask DisposeAsync() {}
     protected virtual async ValueTask DisposeAsyncCore() {}
     protected virtual bool HandleReceiveTaskException(Exception exception) {}
     protected abstract ValueTask<IPAddress> ReceiveAsyncCore(IBufferWriter<byte> buffer, CancellationToken cancellationToken);
     public ValueTask SendAsync(ReadOnlyMemory<byte> data, CancellationToken cancellationToken) {}
     protected abstract ValueTask SendAsyncCore(ReadOnlyMemory<byte> buffer, CancellationToken cancellationToken);
     public ValueTask SendToAsync(IPAddress remoteAddress, ReadOnlyMemory<byte> data, CancellationToken cancellationToken) {}
     protected abstract ValueTask SendToAsyncCore(IPAddress remoteAddress, ReadOnlyMemory<byte> buffer, CancellationToken cancellationToken);
     protected void StartReceiving() {}
     protected void StartReceiving(TaskFactory? taskFactoryForReceiving) {}
     protected async ValueTask StopReceivingAsync() {}
     protected virtual void ThrowIfDisposed() {}
     protected void ThrowIfNotReceiving() {}
     protected void ThrowIfReceiving(...
Read more

Smdn.Net.SmartMeter.Extensions.Munin version 2.1.0

29 Jun 14:43
482276f

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.SmartMeter.Extensions.Munin/Smdn.Net.SmartMeter.Extensions.Munin-net8.0.apilist.cs b/doc/api-list/Smdn.Net.SmartMeter.Extensions.Munin/Smdn.Net.SmartMeter.Extensions.Munin-net8.0.apilist.cs
index c28756c..233a87a 100644
--- a/doc/api-list/Smdn.Net.SmartMeter.Extensions.Munin/Smdn.Net.SmartMeter.Extensions.Munin-net8.0.apilist.cs
+++ b/doc/api-list/Smdn.Net.SmartMeter.Extensions.Munin/Smdn.Net.SmartMeter.Extensions.Munin-net8.0.apilist.cs
@@ -1,208 +1,216 @@
-// Smdn.Net.SmartMeter.Extensions.Munin.dll (Smdn.Net.SmartMeter.Extensions.Munin-2.0.0)
+// Smdn.Net.SmartMeter.Extensions.Munin.dll (Smdn.Net.SmartMeter.Extensions.Munin-2.1.0)
 //   Name: Smdn.Net.SmartMeter.Extensions.Munin
-//   AssemblyVersion: 2.0.0.0
-//   InformationalVersion: 2.0.0+af25552aabd41ce54db2ed417a0dc9390a5dbadf
+//   AssemblyVersion: 2.1.0.0
+//   InformationalVersion: 2.1.0+d6881059bda1389c20c3dc8eacfd375f4dd752fe
 //   TargetFramework: .NETCoreApp,Version=v8.0
 //   Configuration: Release
 //   Referenced assemblies:
 //     Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Microsoft.Extensions.Hosting.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Microsoft.Extensions.Logging.Abstractions, Version=8.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60
 //     Smdn.Net.EchonetLite, Version=2.1.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.RouteB, Version=2.1.0.0, Culture=neutral
 //     Smdn.Net.EchonetLite.RouteB.Primitives, Version=2.1.0.0, Culture=neutral
 //     Smdn.Net.MuninNode, Version=2.5.0.0, Culture=neutral
 //     Smdn.Net.MuninNode.Hosting, Version=3.1.0.0, Culture=neutral
 //     Smdn.Net.SmartMeter, Version=2.1.0.0, Culture=neutral
 //     System.Collections, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Collections.Concurrent, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.ComponentModel, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Linq, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Net.Primitives, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 //     System.Threading, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
 #nullable enable annotations
 
 using System;
 using System.Collections.Generic;
 using System.Diagnostics.CodeAnalysis;
 using System.Net;
 using System.Threading;
 using System.Threading.Tasks;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Hosting;
 using Microsoft.Extensions.Logging;
 using Smdn.Net.EchonetLite.RouteB;
 using Smdn.Net.EchonetLite.RouteB.DependencyInjection;
 using Smdn.Net.MuninNode;
 using Smdn.Net.MuninNode.DependencyInjection;
 using Smdn.Net.MuninNode.Hosting;
 using Smdn.Net.MuninNode.Transport;
 using Smdn.Net.MuninPlugin;
 using Smdn.Net.SmartMeter;
 using Smdn.Net.SmartMeter.MuninNode;
 using Smdn.Net.SmartMeter.MuninNode.Hosting;
 using Smdn.Net.SmartMeter.MuninNode.Hosting.Systemd;
 using Smdn.Net.SmartMeter.MuninPlugin;
 
 namespace Smdn.Net.MuninNode.DependencyInjection {
   public static class IMuninServiceBuilderExtensions {
     public static SmartMeterMuninNodeBuilder AddSmartMeterMuninNode(this IMuninServiceBuilder builder, Action<MuninNodeOptions> configureMuninNodeOptions, Action<IRouteBServiceBuilder<string>> configureRouteBServices) {}
   }
 }
 
 namespace Smdn.Net.SmartMeter.MuninNode {
   public sealed class SmartMeterMuninNode : LocalNode {
     public event EventHandler<Exception>? UnhandledAggregationException { add; remove; }
 
     public override string HostName { get; }
     public override IPluginProvider PluginProvider { get; }
 
     protected override void Dispose(bool disposing) {}
     protected override async ValueTask DisposeAsyncCore() {}
     protected override EndPoint GetLocalEndPointToBind() {}
     protected override ValueTask StartedAsync(CancellationToken cancellationToken) {}
     protected override async ValueTask StartingAsync(CancellationToken cancellationToken) {}
     protected override async ValueTask StoppedAsync(CancellationToken cancellationToken) {}
   }
 
   public sealed class SmartMeterMuninNodeBuilder : MuninNodeBuilder {
     protected override IMuninNode Build(IPluginProvider pluginProvider, IMuninNodeListenerFactory? listenerFactory, IServiceProvider serviceProvider) {}
   }
 
   public static class SmartMeterMuninNodeBuilderExtensions {
     public static SmartMeterMuninNodeBuilder AddCumulativeElectricEnergyAtEvery30MinPlugin(this SmartMeterMuninNodeBuilder builder, bool enableNormalDirection = true, bool enableReverseDirection = false, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
     public static SmartMeterMuninNodeBuilder AddCumulativeElectricEnergyAtEvery30MinPlugin(this SmartMeterMuninNodeBuilder builder, string name, bool enableNormalDirection = true, bool enableReverseDirection = false, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
     public static SmartMeterMuninNodeBuilder AddDailyCumulativeElectricEnergyPlugin(this SmartMeterMuninNodeBuilder builder, bool enableNormalDirection = true, bool enableReverseDirection = false, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
     public static SmartMeterMuninNodeBuilder AddDailyCumulativeElectricEnergyPlugin(this SmartMeterMuninNodeBuilder builder, string name, bool enableNormalDirection = true, bool enableReverseDirection = false, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
     public static SmartMeterMuninNodeBuilder AddInstantaneousCurrentPlugin(this SmartMeterMuninNodeBuilder builder, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
     public static SmartMeterMuninNodeBuilder AddInstantaneousCurrentPlugin(this SmartMeterMuninNodeBuilder builder, TimeSpan aggregationInterval, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
     public static SmartMeterMuninNodeBuilder AddInstantaneousCurrentPlugin(this SmartMeterMuninNodeBuilder builder, string name, TimeSpan aggregationInterval, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
     public static SmartMeterMuninNodeBuilder AddInstantaneousElectricPowerPlugin(this SmartMeterMuninNodeBuilder builder, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
     public static SmartMeterMuninNodeBuilder AddInstantaneousElectricPowerPlugin(this SmartMeterMuninNodeBuilder builder, TimeSpan aggregationInterval, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
     public static SmartMeterMuninNodeBuilder AddInstantaneousElectricPowerPlugin(this SmartMeterMuninNodeBuilder builder, string name, TimeSpan aggregationInterval, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
     public static SmartMeterMuninNodeBuilder AddMonthlyCumulativeElectricEnergyPlugin(this SmartMeterMuninNodeBuilder builder, bool enableNormalDirection = true, bool enableReverseDirection = false, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
     public static SmartMeterMuninNodeBuilder AddMonthlyCumulativeElectricEnergyPlugin(this SmartMeterMuninNodeBuilder builder, string name, bool enableNormalDirection = true, bool enableReverseDirection = false, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
     public static SmartMeterMuninNodeBuilder AddWeeklyCumulativeElectricEnergyPlugin(this SmartMeterMuninNodeBuilder builder, DayOfWeek firstDayOfWeek = DayOfWeek.Sunday, bool enableNormalDirection = true, bool enableReverseDirection = false, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
     public static SmartMeterMuninNodeBuilder AddWeeklyCumulativeElectricEnergyPlugin(this SmartMeterMuninNodeBuilder builder, string name, DayOfWeek firstDayOfWeek = DayOfWeek.Sunday, bool enableNormalDirection = true, bool enableReverseDirection = false, Action<PluginGraphAttributesBuilder>? configureGraphAttributes = null) {}
   }
 }
 
 namespace Smdn.Net.SmartMeter.MuninNode.Hosting {
+  public class AggregationHaltedException : InvalidOperationException {
+    public AggregationHaltedException() {}
+    public AggregationHaltedException(string message) {}
+    public AggregationHaltedException(string message, Exception? innerException) {}
+  }
+
   public static class IServiceCollectionExtensions {
     public static IServiceCollection AddHostedSmartMeterMuninNodeService(this IServiceC...
Read more