Skip to content

Releases: intelligentplant/AppStoreConnect.Adapters

1.0.0-RC7

03 Jul 12:07
Compare
Choose a tag to compare
1.0.0-RC7 Pre-release
Pre-release
  • New IEventMessagePushWithTopics feature, that allows adapters to implement an event subscription system where messages are associated with different topics (see #6 for details).
    • For example, an MQTT adapter could map event message topics to MQTT topics, or an OPC UA adapter could map event message topics to nodes in the OPC UA server's node hierarchy.
  • Event message history queries now have properties for specifying a topic or topics, to allow topic-based event implementations to filter responses based on the requested topics.
  • Add extension methods for retrieving and converting entries from an AdapterRequest.Properties dictionary.

1.0.0-RC6

30 Jun 07:28
9e2ec79
Compare
Choose a tag to compare
1.0.0-RC6 Pre-release
Pre-release

BREAKING CHANGES:

  • See #5 for details.
  • ISnapshotTagValuePush and IEventMessagePush now require a request object to be specified when creating a subscription.
  • The purpose of the request object is to allow subscription configuration settings to be specified.
  • On IEventMessagePush.Subscribe, the subscription type parameter has been moved into the subscription request object.
  • On ISnapshotTagValuePush.Subscribe, the new subscription request object allows the caller to define a publish interval, meaning that the subscription will emit new values no more frequently than this limit.
  • SignalR and gRPC clients and proxies now make separate calls to create/delete tag value subscriptions and the add tags to those subscriptions.
  • SignalR server-side implementation now automatically disposes of all registered subscriptions when a connection disconnects.
  • gRPC server-side implementation now requires a heartbeat call from the client to confirm that it should keep registered subscriptions alive. This is due to the nature of HTTP/2, where it is difficult to determine if a channel has disconnected or is just idle.

1.0.0-RC5

26 Jun 12:25
Compare
Choose a tag to compare
1.0.0-RC5 Pre-release
Pre-release
  • Adds interfaces and base classes (e.g. IAdapterSubscriptionWithTopics<T>, AdapterSubscriptionWithTopics<T>) to support generic topic-based subscriptions.
  • ISnapshotTagValueSubscription has been refactored to implement these new types (tag == topic). The AddTagToSubscription and RemoveTagFromSubscription methods have been refactored as extension methods, available in the DataCore.Adapter.RealTimeData namespace when referencing the DataCore.Adapter project.

These changes have been made to facilitate topic-based event streams in the future (e.g. subscribing to specific event message topics in an MQTT broker).

1.0.0-RC4

23 Jun 07:37
Compare
Choose a tag to compare
1.0.0-RC4 Pre-release
Pre-release

BREAKING CHANGE:

  • AssetModelNode no longer has a Children property containing the IDs of its child nodes, but instead has a HasChildren flag.

Additional Changes:

  • Registration of adapter services and adapters in ASP.NET Core has been modified to use a fluent interface.
    • The introduction of the new IAdapterConfigurationBuilder used to register services etc. will make it easier to register adapter-related extension services in the future.
    • Existing extension method for registering adapter services is still available, but marked as deprecated.
  • Fix a bug in PlotHelper that could cause a sample to be added to the wrong time bucket if the gap between one sample and the next was greater than the duration of the bucket.
  • Background tasks created by adapters inheriting from AdapterBase will now automatically observe the adapter's StopToken, in addition to any other cancellation tokens specified when registering the task.
  • Add ability to subscribe to health status changes via IHealthCheck.
  • When unsubscribing from tags, SnapshotTagValueSubscriptionBase will check tag IDs/names against known (i.e. currently-subscribed) tags when processing subscription changes, instead of calling ResolveTag. This is to assist with scenarios where e.g. a subscriber attempts to unsubscribe from a tag while an underlying external connection has faulted, meaning that that the subscription implementation might not be able to resolve the tag ID/name.
  • Added IRetryPolicy and associated support classes/implementations to DataCore.Adapter project, to provide a consistent way for adapters to manage retry attempts when connecting to an external source.

1.0.0-RC3

03 Jun 13:33
208b129
Compare
Choose a tag to compare
1.0.0-RC3 Pre-release
Pre-release

BREAKING CHANGES

See #3 for details.

  • All feature methods that returned ChannelReader<T> now return Task<ChannelReader<T>> instead. This is to allow adapters that need to perform some sort of asynchronous action in order to create a channel to do so.
  • ReadEventMessages in IReadEventMessagesForTimeRange has been renamed to ReadEventMessagesForTimeRange.
  • ReadEventMessages in IReadEventMessagesUsingCursor has been renamed to ReadEventMessagesUsingCursor.

1.0.0-RC2

15 May 10:10
Compare
Choose a tag to compare
1.0.0-RC2 Pre-release
Pre-release
  • URL is now an allowed Variant type.
  • Dependency on Grpc.Core has been removed for .NET Standard 2.1 and .NET Core 3.1 targets.
  • AdapterBase<TAdapterOptions> now enforces a new() constraint on TAdapterOptions.
  • IAdapter now has an IsEnabled flag, to allow adapters to be registered but disabled.
  • Adapters inheriting from AdapterBase<TAdapterOptions> can set the IsEnabled flag via the adapter options class (see this commit).
  • Cancellation of subscriptions in gRPC endpoints should no longer result in OperationCanceledException propagation.
  • Catch exceptions thrown during shutdown of Grpc.Core channels (when running a gRPC proxy on .NET Framework)

1.0.0-RC1

05 May 10:57
Compare
Choose a tag to compare
1.0.0-RC1 Pre-release
Pre-release
  • Refactoring of gRPC and SignalR tag value subscriptions (#2)
    • This is a breaking change for existing clients/hosts. Recompiling against this version will resolve the issue.
  • Event subscription implementation in gRPC and SignalR endpoints no longer sends an initial "subscription created" event message.
  • DELTA aggregate now computes a signed value instead of an absolute one.
  • Added STDDEV and VARIANCE aggregates.
  • Fix gRPC=>adapter conversion of AdapterProperty instances that have DateTime values to ensure that dates are correctly deserialized as UTC.
  • Move common tag value property names to be constants in separate class.

0.13.2-alpha

20 Apr 14:35
Compare
Choose a tag to compare
0.13.2-alpha Pre-release
Pre-release
  • Better handing of health checks when using Grpc.Core channels.
  • When an error message is set on a TagValueBuilder, the quality status is automatically set to bad.
  • Data function descriptors now include properties to describe how the sample time and quality status of a value are calculated.
  • Boundary values in TagValueBucket have been refactored to provide both a closest value and a best-quality closest value
  • General tidy up

0.13.1-alpha

15 Apr 13:20
Compare
Choose a tag to compare
0.13.1-alpha Pre-release
Pre-release
  • If AggregationHelper emits a value representing an error, the value now has bad-quality status.
  • Values emitted by AggregationHelper, PlotHelper, and IntepolationHelper now include a property indicating that they were calculated using a non-native calculation.

0.13.0-alpha

08 Apr 10:14
Compare
Choose a tag to compare
0.13.0-alpha Pre-release
Pre-release
Remove use of IHttpContextAccessor

IHttpContextAccessor is unreliable when working with SignalR. Responsibility for creating an IAdapterCallContext for a given call has been shifted from DI to the endpoint handler.