ctrlX-DataLayer.Flatbuffers 4.4.0

Bosch Rexroth ctrlX Data Layer .NET API

This is the Bosch Rexroth ctrlX Data Layer API for .NET Core and .NET Standard 2.0.

Usage

Example: Read a ctrlX Data Layer node's value

// Create a new ctrlX Data Layer system to connect to a ctrlX and start.
using var system = new DatalayerSystem();
system.Start(startBroker: false);

// Create a remote according to your environment (options see Remote class).
var remote = new Remote(ip: "192.168.1.1", sslPort: 443).ToString();

// Create the client.
using var client = system.Factory.CreateClient(remote);

// Read a node with by it's node address.
var (result, value) = client.Read("framework/metrics/system/memused-percent");
if (result.IsGood())
{
    Console.WriteLine($"memused-percent: {value.ToFloat()}");
}

Example: Subscribe a ctrlX Data Layer node's value

// Create a new ctrlX Data Layer system to connect to a ctrlX and start.
using var system = new DatalayerSystem();
system.Start(startBroker: false);

// Create a remote according to your environment (options see Remote class).
var remote = new Remote(ip: "192.168.1.1", sslPort: 443).ToString();

// Create the client.
using var client = system.Factory.CreateClient(remote);

// Create the subscription properties by using helper class SubscriptionPropertiesBuilder.
var propertiesFlatbuffers = new SubscriptionPropertiesBuilder("mySubscription")
    .SetKeepAliveIntervalMillis(10000)
    .SetPublishIntervalMillis(1000)
    .SetErrorIntervalMillis(1000)
    .Build();

// Create the subscription
var (createResult, subscription) = client.CreateSubscription(propertiesFlatbuffers, userData: null);

// Add DataChanged Event Handler
subscription.DataChanged += (subscription, eventArgs) =>
{
    var notifyInfo = NotifyInfo.GetRootAsNotifyInfo(eventArgs.Item.Info.ToFlatbuffers());
    var timestampUtc = DateTime.FromFileTimeUtc(Convert.ToInt64(notifyInfo.Timestamp));
    Console.WriteLine($"{timestampUtc}, {notifyInfo.Node}: {eventArgs.Item.Value.ToFloat()}");
};

// Subscribe a node by it's node address.
const string cpuLoad = "framework/metrics/system/cpu-utilisation-percent";
var subscribeResult = subscription.Subscribe(address: cpuLoad);

Please find the code coverage reports in folder ./coverage.

License

The binary files "datalayer.dll" and "comm.datalayer.so*" are licensed under the "Terms and Conditions for the Provision of Products of Bosch Rexroth AG Free of Charge" supplemented by the right to redistribution, any other software code in this repository is licensed under the:

SPDX-FileCopyrightText: Bosch Rexroth AG
SPDX-License-Identifier: MIT

Terms and Conditions for the Provision of Products of Bosch Rexroth AG Free of Charge

See LICENSES/tc_for_provision_of_products_free_of_charge.pdf inside this package. Download the latest version from https://www.boschrexroth.com. Navigate to Legal Notice (footer) -> Terms and Conditions for the Provision of Products Free of Charge.

Open Source Software Licenses

See LICENSES/FossInfo.json or LICENSES/FossInfo.csv for used open source software licenses.

About

Please note that any trademarks, logos and pictures contained or linked to in this Software are owned by or copyright © Bosch Rexroth AG and not licensed under the Software's license terms.

https://www.boschrexroth.com

Bosch Rexroth AG
Bgm.-Dr.-Nebel-Str. 2
97816 Lohr am Main
GERMANY

Showing the top 20 packages that depend on ctrlX-DataLayer.Flatbuffers.

Packages Downloads
ctrlX-DataLayer
The Bosch Rexroth ctrlX Data Layer API for .NET
4

# Bosch Rexroth ctrlX Data Layer .NET API ## CHANGELOG ### 5.0.0 #### NEW - HIGHLIGHTS + New: Updated to Data Layer API 3.4.1. + New: Updated Flatbuffers types package to 'ctrlX-DataLayer.Flatbuffers' 4.4.0. + New: Common SBOM Initiative (CSI): Added Software Bill of Materials (SBOM) in CycloneDX format. + New: Introduced built-in support for Windows applications, deployed in x64m, but also in deprecated x86 (Win32) architecture. We added the (optional) convention for those applications to put the matching and shipped 'comm_datalayer.dll' and 'libzmq.dll' native dependencies in a 'x64' or 'x86' subfolder to be loaded automatically. Add a custom post-build step to your application to enable this mechanism for runtime. #### FIXED + Fix: .NET Standard 2.0 Apps for Win32 (x86) architecture: Methods declaring a boolean value returned with "true", if value should be "false" (.NET marshalling issue). Affected methods: IVariant.ToBool() IClient.IsConnected() IProvider.IsConnected() IDatalayerSystem.Stop() #### CHANGED - Changed: Upgraded to Ubuntu Core24 (noble). - changed: IClient: Removed ReadMulti* and WriteMulti* methods - Please use the corresponding Bulk* methods instead. ### 4.3.1 #### NEW - HIGHLIGHTS + New: Updated to Data Layer API 2.9.10. + New: Updated Flatbuffers types package to 'ctrlX-DataLayer.Flatbuffers' 3.6.0. #### FIXED + Fix: Ambiguous LICENSE conditions. See LICENSE file for details. The binary files "datalayer.dll" and "comm.datalayer.so*" are licensed under the "Terms and Conditions for the Provision of Products of Bosch Rexroth AG Free of Charge" supplemented by the right to redistribution, any other software code in this repository is licensed under the: SPDX-FileCopyrightText: Bosch Rexroth AG SPDX-License-Identifier: MIT #### CHANGED + n/a ### 4.3.0 #### NEW - HIGHLIGHTS + New: Updated to Data Layer API 2.9.5. + New: Updated Flatbuffers types package to 'ctrlX-DataLayer.Flatbuffers' 3.6.0. #### FIXED + Fix: Bug 991531: Possible AccessViolationException accessing IFactory on a stopped or restarted system. An ObjectDisposedException is thrown instead up from now. #### CHANGED + n/a ### 4.2.0 #### NEW - HIGHLIGHTS + New: Updated to Data Layer API 2.8.6. + New: Updated Flatbuffers types package to 'ctrlX-DataLayer.Flatbuffers' 3.4.0. + New: IProvider: Introduced method _RegisteredType_ to get a registered type (flatbuffers) by it's address. #### FIXED + n/a #### CHANGED + n/a ### 4.1.4 #### NEW - HIGHLIGHTS + n/a #### FIXED + Fix: Bug 919347: Possible native application crash while executing parallel writes. #### CHANGED + n/a ### 4.1.2 #### NEW - HIGHLIGHTS + New: Updated to Data Layer API 2.7.6. + New: IVariant: Added support to create a Variant of type DLR_VARIANT_TYPE_RAW instead of DLR_VARIANT_TYPE_ARRAY_OF_UINT8 using constructor Variant(byte[] value, bool raw = true) #### FIXED + n/a #### CHANGED + n/a ### 4.1.1 #### NEW - HIGHLIGHTS + New: Updated to Data Layer API 2.7.5. + New: Updated Flatbuffers types package to 'ctrlX-DataLayer.Flatbuffers' 3.2.0. + New: IVariant: Introduced method _GetDataFromFlatbuffers_ to query data of a complex Variant (flatbuffers) without using the ctrlX-DataLayer.Flatbuffers package. #### FIXED + Fix: Bug 901352: API tries to load not existent 'libzmq.so', which fails on Linux. #### CHANGED + n/a ### 4.0.1 #### NEW - HIGHLIGHTS + New: The API assemblies are now strong-name signed. #### FIXED + n/a #### CHANGED + n/a ### 4.0.0 #### NEW - HIGHLIGHTS + New: Upgraded to .NET 8.0 (LTS). + New: Updated to Data Layer API 2.6.1. + New: Updated Flatbuffers types package to 'ctrlX-DataLayer.Flatbuffers' 2.6.0. + New: Reduced size of API package (removed all files 'libzmq.so.*') + New: IProvider: Introduced method _PublishEvent_ to publish an event. #### FIXED + Fix: Variant: Array conversion methods To...Array() returned "null" for empty arrays, now an empty array is returned. + Fix: Variant: All scalar- or flatbuffers value to array conversion methods returned "null", now an empty array is returned. #### CHANGED + n/a ### 3.1.0 #### NEW - HIGHLIGHTS + New: Updated to Data Layer API 2.4.4. + New: Updated Flatbuffers types package to 'ctrlX-DataLayer.Flatbuffers' 2.4.0. + New: Reduced size of API package (removed all files 'libzmq.so.*') #### FIXED + Fix: Variant: Array conversion methods To...Array() returned "null" for empty arrays, now an empty array is returned. + Fix: Variant: All scalar- or flatbuffers value to array conversion methods returned "null", now an empty array is returned. #### CHANGED + n/a ### 3.0.3 #### NEW - HIGHLIGHTS + New: Updated to Data Layer API 2.2.7. + New: Reduced size of API package (removed all files 'libzmq.so.*'). #### FIXED + n/a #### CHANGED + n/a ### 3.0.2 #### NEW - HIGHLIGHTS + New: Updated to Data Layer API 2.2.6. #### FIXED + Fix: Linux - Unable to load shared library 'libcomm_datalayer.so' or one of its dependencies (libzmq.so missing in nuget-package). #### CHANGED + n/a ### 3.0.1 #### NEW - HIGHLIGHTS + New: Updated to Ubuntu 22.04 LTS (Jammy Jellyfish). + New: Upgraded to Data Layer API 2.2.5. + New: Updated Flatbuffers types package to 'ctrlX-DataLayer.Flatbuffers' 2.2.0. #### FIXED + n/a #### CHANGED + Changed: Removed OpenSSL V3 libraries for Windows, because of export control relevance. You have to install the latest [Win64 OpenSSL v3 Light](https://slproweb.com/products/Win32OpenSSL.html) setup, if the API is used on Windows operating systems. ### 2.7.0 #### NEW - HIGHLIGHTS + New: Updated to Data Layer API 1.10.7. + New: Updated Flatbuffers types package to 'ctrlX-DataLayer.Flatbuffers' 1.20.0. + New: Added support for [.NET Framework Apps](https://dotnet.microsoft.com/en-us/platform/dotnet-standard) (Windows) based on [netstandard2.0](https://github.com/dotnet/standard/blob/v2.1.0/docs/versions/netstandard2.0.md) (>= .NET Framework 4.6.1). + New: Variant: Improved performance for conversion methods To*Array() and ToFlatbuffers(). #### FIXED + Fix: Variant: Method ToRawBytes() returned an UTF-8 string representation instead of the packed plain bytes (without type check). #### CHANGED + Changed: Moved to official flatbuffers library [Google.Flatbuffers](https://www.nuget.org/packages/Google.FlatBuffers) 23.3.3 ### 2.6.0 #### NEW - HIGHLIGHTS + New: Updated to Data Layer API 1.9.4. + New: Updated Flatbuffers types package to 'ctrlX-DataLayer.Flatbuffers' 1.18.0. + New: IProvider: Introduced method _RegisteredNodePaths_ to get all node paths, accepted by the broker. + New: IProvider: Introduced method _RejectedNodePaths_ to get all node paths, rejected by the broker. + New: IClient: Introduced efficient and fast _Bulk*_ methods to apply the same operation on a list of nodes (read, read metadata, write, create, remove, browse) just on a single method call. + New: IClient: Introduced property _ConnectionStatus_ to get the current connection status. + New: IClient: Introduced method _ReadJson_ to read a node as JSON with arguments. + New: IClient: Introduced method _ReadJsonAsync_ to read a node as JSON with with arguments asynchronously. + New: Variant: Improved performance of contructors consuming Flatbuffers. #### FIXED + Fix: IClient: Possible crash using parallel loops, because of GC collect. #### CHANGED + Changed: NuGet package _ctrlX-DataLayer_ contains [openssl](https://github.com/openssl/openssl) libraries for Windows x86 and x64. ### 2.5.0 #### NEW - HIGHLIGHTS + New: Updated to Data Layer API 1.8.6. + New: Updated Flatbuffers types package to 'ctrlX-DataLayer.Flatbuffers' 1.16.0. + New: IVariant: Introduced data type _DLR_VARIANT_TYPE_TIMESTAMP_ ((FILETIME) 64 bit 100ns since 1.1.1601 (UTC)). Represented and converted to DateTime. + New: IVariant: Introduced data type _DLR_VARIANT_TYPE_ARRAY_OF_TIMESTAMP_ ((FILETIME) 64 bit 100ns since 1.1.1601 (UTC)). Represented and converted to an array of DateTime. + New: IClient: Introduced method _ReadJsonAsync_ to read a node as JSON asynchronously. + New: IClient: Introduced method _WriteJsonAsync_ to write a JSON value to a node asynchronously. #### FIXED + Fix: IClient: Method _Create_ didn't return a tuple containing the value of the method call: (DLR_RESULT, IVariant). #### CHANGED + n/a ### 2.4.1 #### NEW - HIGHLIGHTS + n/a + New: Updated to Data Layer API 1.7.13. #### FIXED + n/a #### CHANGED + n/a ### 2.4.0 #### NEW - HIGHLIGHTS + New: Updated to Data Layer API 1.7.11. #### FIXED + n/a #### CHANGED + n/a ### 2.3.0 #### NEW - HIGHLIGHTS + New: Upgraded to .NET 6.0 (LTS). + New: Updated to Data Layer API 1.7.11. + New: Updated Flatbuffers types package to 'ctrlX-DataLayer.Flatbuffers' 1.14.0. + New: IProvider: Introduced method _RegisterTypeVariant_ to register a Variant containing a flatbuffers type. #### FIXED + Fix: IClient: Possible NPE for method _WriteMultiAsync_ if argument _writeValues_ was null. + Fix: IClient: Methods _ReadMulti_ and _WriteMulti_ returned an AggregateException instead of ArgumentNullException, if any arguments null. + Fix: IClient: Memoryleak in method _CreateSubscriptionAsync_. #### CHANGED + Changed: IFactory: Removed convenience methods to create a client or provider. Please use more generic methods _CreateClient(remote)_ and _CreateProvider(remote)_. ### 2.2.2 #### NEW - HIGHLIGHTS + Fix: Possible crash for async methods because of GC collect. #### FIXED + n/a #### CHANGED + n/a ### 2.2.1 #### NEW - HIGHLIGHTS + New: IClient: Improved performance of async methods. + New: IClient: Introduced methods for batch read and write. + New: ISubscription: Added default subscription constants. public static readonly uint DefaultKeepaliveIntervalMillis = 60000; public static readonly uint DefaultPublishIntervalMillis = 1000; public static readonly uint DefaultErrorIntervalMillis = 10000; public static readonly ulong DefaultSamplingIntervalMicros = 1000000; #### FIXED + n/a #### CHANGED + Changed: IVariant: Removed property 'Timestamp', because this is not created either by source nor by server and to improve the overall performance. ### 2.2.0 #### NEW - HIGHLIGHTS + New: Updated Flatbuffers types package to 'ctrlX-DataLayer.Flatbuffers' 1.12.0. #### FIXED + n/a #### CHANGED + n/a ### 2.1.0 #### NEW - HIGHLIGHTS + New: Updated to Data Layer API 1.7.4. + New: IClient: Added method _ReadJson_ to read and _WriteJson_ to write a JSON string. + New: Used NuGet package _Flatbuffers.Core_ instead of shipping the Flatbuffers stack with the SDK. Please add this package to your project (Manage NuGet packages). + New: Moved embedded ctrlX Flatbuffers types to NuGet package _ctrlX-DataLayer.Flatbuffers_. Please add this package to your project if necessary (Manage NuGet packages). #### FIXED + n/a #### CHANGED + n/a ### 2.0.1 #### NEW - HIGHLIGHTS + New: Update to Data Layer API 1.6.2. #### FIXED + n/a #### CHANGED + n/a ### 2.0.0 #### NEW - HIGHLIGHTS + New: Update to Data Layer API 1.5.17. + New: Updated Flatbuffer types to 1.1.0. #### FIXED + n/a #### CHANGED + Changed: Refactored, simplified and improved the provider API: + IProvider: Eliminated method _CreateNode(...)_. + IProvider: Changed method arguments for _RegisterNode(...)_. + IProvider: Moved and renamed method _SetTimeoutNode(...)_ to interface _IProviderNode_ method _SetTimeout(...)_. + IProviderNode: Eliminated property _value_: The client application has to keep a reference to the value of a handled node. + IProviderNodeHandler: Elminated argument _providerNode_ on all interface methods. + Changed: Renamed client's optional _Read(),Create()_ method arguments _readFilter_ to _args_. ### 1.0.8 #### NEW - HIGHLIGHTS + New: Update to Data Layer API 1.5.11. #### FIXED + Fix: Possible __NPE__ during a GC cycle using Subscription with invalid SubscriptionSettings flatbuffers. #### CHANGED + n/a ### 1.0.7 #### NEW - HIGHLIGHTS + New: Added common used type convenience getter for Variant: IsString, IsBool, IsNumber. #### FIXED + Fix: Possible __Access Violation__ during a GC cycle using Variant constructor Variant(IVariant other). + Fix: Possible __Access Violation__ during a GC cycle if a IProviderNode is created and registered on a address, but not hold as a reference by the application code. + Fix: IClient.WriteValueAsync() didn't return the written value (or a result value set by the handled provider) back to the client as IClientAsyncResult.Value. #### CHANGED + n/a ### 1.0.6 #### NEW - HIGHLIGHTS + n/a #### FIXED + Fix: __Application Crash__ (Unknown Hard Error): Process terminated. A callback was made on a garbage collected delegate of type 'datalayer!Datalayer.NativeMethods.DLR_CLIENT_NOTIFY_RESPONSE::Invoke'. + Fix: __Application Crash__ (Unknown Hard Error): Process terminated. A callback was made on a garbage collected delegate of type 'datalayer!Datalayer.NativeMethods.DLR_PROVIDER_NODE_FUNCTION::Invoke'. + Fix: Variant.JsonDataType returns incorrect result for type Float32 ('float32' -> 'float') + Fix: Variant.JsonDataType returns incorrect result for type Float64 ('float64' -> 'double') + Fix: Variant.JsonDataType returns incorrect result for type Array of Float32 ('arfloat32' -> 'arfloat') + Fix: Variant.JsonDataType returns incorrect result for type Array of Float64 ('arfloat64' -> 'ardouble') #### CHANGED + n/a ### 1.0.5 #### NEW - HIGHLIGHTS + n/a #### FIXED + Fix: Generated *.html docs contained internal content. #### CHANGED + n/a ### 1.0.4 #### NEW - HIGHLIGHTS + New: Supported equality check (Equals) for Variants containing Flatbuffers. #### FIXED + n/a #### CHANGED + n/a ### 1.0.3 #### NEW - HIGHLIGHTS + New: Added implicit operators for DataBuffer (Flatbuffers) and FlatbufferBuilder. #### FIXED + n/a #### CHANGED + n/a ### 1.0.2 #### NEW - HIGHLIGHTS + n/a #### FIXED + Fix: Generated *.html docs contained some wrong content. #### CHANGED + n/a ### 1.0.1 #### NEW - HIGHLIGHTS + n/a #### FIXED + Fix: Duplicate value for DL_INVALID_VALUE (0x8001000E -> 0x8001000D). #### CHANGED + n/a ### 1.0.0 #### NEW - HIGHLIGHTS + New: First stable release. #### FIXED + n/a #### CHANGED + n/a

.NET 8.0

.NET Standard 2.0

Version Downloads Last updated
4.4.0 4 01/22/2026