.NET APIs wrap STTP C++ API
1.1.3 - Unreleased
- Uses C++ API v1.1.3, including faster metadata configuration construction, 32-bit metadata indexes, and UTF-CPP 4.2.0 with corrected Windows Unicode conversion.
- Prevents duplicate connection notifications, metadata requests, and subscriptions at startup. Initial connections, automatic reconnects, and reverse connections validate operational modes before starting metadata/subscription work.
- Includes native shutdown fixes: subscriber destruction waits for disconnect callbacks before destroying metadata and locks, and always joins an existing disconnect worker. The native SubscriberShutdownTest sample covers metadata and data shutdown scenarios.
- Includes native Linux sample linking fixes for modern Boost and timestamp range handling in AverageFrequencyCalculator.
- Exposes SignalReference.Index, MeasurementMetadata.PhasorSourceIndex, and PhasorMetadata.SourceIndex as int32_t (C# int), with bindings generated by SWIG 4.5.1.
- Aligns metadata lookup names and SubscriberConnection lifecycle declarations with the C++ API, and makes enum base-type overrides explicit for SWIG.
- Targets .NET 6, .NET 9, and .NET 10 in the managed library, samples, and tests, with .NET 10 listed first.
- Uses MSVC v145 and Boost 1.92.0 for native wrapper builds.
- Uses the C++ CMake target and C++20 for Linux builds, embedding PIC-enabled static Boost libraries in the shared library. Direct Linux x64 CMake builds copy the library to the NuGet input directory. The shell script builds Debug and Release and stops on errors.
- Uses NuGet runtime assets for SDK projects, preventing duplicate x86/x64 DLLs during x86 publish.
- Supports native-library location handling for single-file .NET applications.
- Provides ConnectionTest for connection-to-first-measurement timing and measurement-rate reporting, with separate metadata-processing timing and compact hour/minute/second/millisecond duration displays.
- Isolates Windows native wrapper intermediate directories by architecture, so rebuilding one platform preserves the other platform's DLLs.
- Checks SWIG availability before replacing generated bindings.
The 32-bit metadata indexes affect the native ABI. Use matching native and managed binaries; when regenerating bindings, rebuild both wrappers together. Linux binaries embed Boost and require no Boost shared libraries. See the build instructions for dependencies, platform outputs, and packaging.
1.0.10 - 2020-12-22
Updates to cppapi v1.0.20 - see [release notes](https://github.com/sttp/cppapi/releases/tag/v1.0.20)
1.0.9 - 2019-11-25
Updates to cppapi v1.0.18 which increases allowed command payload size and updates to latest Antlr4 C++ runtime.
1.0.8 - 2019-07-11
Updates to cppapi v1.0.14 which improves lock handling of signal index cache, reconnect timing for data subscribers and data publisher port-in-use exception reporting from v1.0.13.
1.0.7 - 2019-07-08
Updates to cppapi v1.0.12 which improves shutdown speed when auto-reconnect is active.
1.0.6 - 2019-07-04
Updates to cppapi v1.0.11 which fixes subscriber instance reconnect after disconnect and adds an extra null check for cases when publisher provides no metadata.
1.0.5 - 2019-07-03
Updates to cppapi v1.0.10 which includes fixes for race conditions around startup, shutdown, reconnect and shared reference dispatch operations.
1.0.4 - 2019-07-02
Updates to latest cppapi which includes data subscriber updates for improved shutdown operation while auto-reconnect is in progress.
1.0.3 - 2019-07-01
Updates to latest cppapi which includes data subscriber fixes for auto-reconnect logic and data publisher fixes for null metadata.
1.0.2 - 2019-06-29
Exposes SignalIndexCache.Count() in .NET as a property
1.0.1 - 2019-06-28
Adds SubscriptionUpdated virtual method for Subscriber access to signal index cache updates.
1.0.0 - 2019-06-27
Initial release