From 3dc1d4beba31ef5c0d0ade944ad688cd542b28fd Mon Sep 17 00:00:00 2001 From: ThomasNehring Date: Fri, 18 Feb 2022 16:53:50 +0100 Subject: [PATCH 01/19] Update BuiltInTests.cs with special case compare Null NodeId (#1609) A new unit test which will currently fail, due to incorrect treatment of node ids with numeric identifier 0 in the namespace with index 0. ( "NodeId nodeId = new NodeId (0,0)." ). Of course such a node id is invalid. It seems to be present, however, in some PLCs under certain situations. We encountered such node ids in the context of a customer ticket. The node ids were read into instance of type "DataValue" using the read service call. The evaluation of the read result then failed due to comparisons like the ones in the unit test. fixes #1610 --- Stack/Opc.Ua.Core/Types/BuiltIn/NodeId.cs | 27 ++++++++++++-- .../Types/BuiltIn/BuiltInTests.cs | 37 +++++++++++++++++++ 2 files changed, 60 insertions(+), 4 deletions(-) diff --git a/Stack/Opc.Ua.Core/Types/BuiltIn/NodeId.cs b/Stack/Opc.Ua.Core/Types/BuiltIn/NodeId.cs index d82e2c970..0532f614b 100644 --- a/Stack/Opc.Ua.Core/Types/BuiltIn/NodeId.cs +++ b/Stack/Opc.Ua.Core/Types/BuiltIn/NodeId.cs @@ -901,17 +901,31 @@ public int CompareTo(object obj) else { UInt32? uid = obj as UInt32?; + Int32? iid = obj as Int32?; - // check for numeric contants. - if (uid != null) + // check for numeric constants. + if (uid != null || iid != null) { if (namespaceIndex != 0 || idType != IdType.Numeric) { return -1; } - uint id1 = (uint)m_identifier; - uint id2 = uid.Value; + uint id2; + if (iid != null && uid == null) + { + if (iid.Value < 0) + { + return +1; + } + id2 = (uint)iid.Value; + } + else + { + id2 = uid.Value; + } + + uint id1 = (uint)((m_identifier as uint?) ?? 0U); if (id1 == id2) { @@ -934,6 +948,11 @@ public int CompareTo(object obj) idType = expandedId.IdType; id = expandedId.Identifier; } + else if (obj != null) + { + // can not compare to unknown object type + return -1; + } } // check for different namespace. diff --git a/Tests/Opc.Ua.Core.Tests/Types/BuiltIn/BuiltInTests.cs b/Tests/Opc.Ua.Core.Tests/Types/BuiltIn/BuiltInTests.cs index 244209eeb..b57aa9fcb 100644 --- a/Tests/Opc.Ua.Core.Tests/Types/BuiltIn/BuiltInTests.cs +++ b/Tests/Opc.Ua.Core.Tests/Types/BuiltIn/BuiltInTests.cs @@ -28,6 +28,7 @@ * ======================================================================*/ using System; +using System.Collections.Generic; using System.Linq; using NUnit.Framework; using Opc.Ua.Test; @@ -212,6 +213,42 @@ public void ExtensionObject() Assert.Null(TypeInfo.GetDefaultValue(BuiltInType.ExtensionObject)); } #endregion + + #region NodeId utilities + [Theory] + [TestCase(-1)] + public void NullIdNodeIdComparison(Opc.Ua.IdType idType) + { + NodeId nodeId = NodeId.Null; + switch (idType) + { + case Opc.Ua.IdType.Numeric: nodeId = new NodeId(0, 0); break; + case Opc.Ua.IdType.String: nodeId = new NodeId(""); break; + case Opc.Ua.IdType.Guid: nodeId = new NodeId(Guid.Empty); break; + case Opc.Ua.IdType.Opaque: nodeId = new NodeId((byte)0); break; + } + + Assert.IsTrue(nodeId.IsNullNodeId); + + DataValue nodeIdBasedDataValue = new DataValue(nodeId); + + DataValue dataValue = new DataValue(Attributes.NodeClass); + dataValue.Value = (int)Attributes.NodeClass; // without this cast the second and third asserts evaluate correctly. + dataValue.StatusCode = nodeIdBasedDataValue.StatusCode; + + bool comparisonResult1b = dataValue.Equals(nodeIdBasedDataValue); + Assert.IsFalse(comparisonResult1b); // assert succeeds + + bool comparisonResult1a = nodeIdBasedDataValue.Equals(dataValue); + Assert.IsFalse(comparisonResult1a); // assert fails (symmetry for Equals is broken) + + bool comparisonResult1c = EqualityComparer.Default.Equals(nodeIdBasedDataValue, dataValue); + Assert.IsFalse(comparisonResult1c); // assert fails + + int comparisonResult2 = nodeId.CompareTo(dataValue); + Assert.IsFalse(comparisonResult2 == 0); // assert fails - this is the root cause for the previous assertion failures + } + #endregion } } From 7a3c3791145815f33db7f5858fe44d4904896a65 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 24 Feb 2022 15:52:40 +0100 Subject: [PATCH 02/19] Bump Serilog.Expressions from 3.2.1 to 3.3.0 (#1714) Bumps [Serilog.Expressions](https://github.com/serilog/serilog-expressions) from 3.2.1 to 3.3.0. - [Release notes](https://github.com/serilog/serilog-expressions/releases) - [Commits](https://github.com/serilog/serilog-expressions/commits/v3.3.0) --- updated-dependencies: - dependency-name: Serilog.Expressions dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../ConsoleReferenceClient/ConsoleReferenceClient.csproj | 2 +- .../ConsoleReferenceServer/ConsoleReferenceServer.csproj | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Applications/ConsoleReferenceClient/ConsoleReferenceClient.csproj b/Applications/ConsoleReferenceClient/ConsoleReferenceClient.csproj index e6e70e3da..65bfedf01 100644 --- a/Applications/ConsoleReferenceClient/ConsoleReferenceClient.csproj +++ b/Applications/ConsoleReferenceClient/ConsoleReferenceClient.csproj @@ -23,7 +23,7 @@ - + diff --git a/Applications/ConsoleReferenceServer/ConsoleReferenceServer.csproj b/Applications/ConsoleReferenceServer/ConsoleReferenceServer.csproj index 632550677..835cc9af5 100644 --- a/Applications/ConsoleReferenceServer/ConsoleReferenceServer.csproj +++ b/Applications/ConsoleReferenceServer/ConsoleReferenceServer.csproj @@ -32,7 +32,7 @@ - + From 3558dd5ac9329b05beaa99776b3eefab49dd70ec Mon Sep 17 00:00:00 2001 From: Suciu Mircea Adrian Date: Mon, 28 Feb 2022 09:38:09 +0200 Subject: [PATCH 03/19] Fixed missing TimeFlowsBackward checks and invalid status code on HistoryRead (#1720) Fixed missing TimeFlowsBackward checks and invalid status code on HistoryRead --- Libraries/Opc.Ua.Server/Aggregates/AggregateCalculator.cs | 4 ++-- Libraries/Opc.Ua.Server/NodeManager/MasterNodeManager.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Libraries/Opc.Ua.Server/Aggregates/AggregateCalculator.cs b/Libraries/Opc.Ua.Server/Aggregates/AggregateCalculator.cs index bc99575c2..0059d5ad0 100644 --- a/Libraries/Opc.Ua.Server/Aggregates/AggregateCalculator.cs +++ b/Libraries/Opc.Ua.Server/Aggregates/AggregateCalculator.cs @@ -225,7 +225,7 @@ public DataValue GetProcessedValue(bool returnPartial) value.StatusCode = value.StatusCode.SetAggregateBits(value.StatusCode.AggregateBits | AggregateBits.Partial); } - if (!UsingExtrapolation) + if (!UsingExtrapolation && !TimeFlowsBackward) { if (m_endOfData >= earlyTime && m_endOfData < lateTime) { @@ -281,7 +281,7 @@ public DataValue GetProcessedValue(bool returnPartial) if (Complete) { // check if overlapping the end of data. - if (SetPartialBit && !UsingExtrapolation) + if (SetPartialBit && !UsingExtrapolation && !TimeFlowsBackward) { if (m_endOfData >= earlyTime && m_endOfData < lateTime) { diff --git a/Libraries/Opc.Ua.Server/NodeManager/MasterNodeManager.cs b/Libraries/Opc.Ua.Server/NodeManager/MasterNodeManager.cs index 2c87caa9d..8a9b98c25 100644 --- a/Libraries/Opc.Ua.Server/NodeManager/MasterNodeManager.cs +++ b/Libraries/Opc.Ua.Server/NodeManager/MasterNodeManager.cs @@ -1638,7 +1638,7 @@ public virtual void HistoryRead( if (details == null) { - throw new ServiceResultException(StatusCodes.BadHistoryOperationUnsupported); + throw new ServiceResultException(StatusCodes.BadHistoryOperationInvalid); } // create result lists. From edd05137792a12811696a535bf6d972d71bbd844 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Mar 2022 10:02:01 +0000 Subject: [PATCH 04/19] Bump Moq from 4.16.1 to 4.17.2 Bumps [Moq](https://github.com/moq/moq4) from 4.16.1 to 4.17.2. - [Release notes](https://github.com/moq/moq4/releases) - [Changelog](https://github.com/moq/moq4/blob/main/CHANGELOG.md) - [Commits](https://github.com/moq/moq4/compare/v4.16.1...v4.17.2) --- updated-dependencies: - dependency-name: Moq dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- Tests/Opc.Ua.PubSub.Tests/Opc.Ua.PubSub.Tests.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/Opc.Ua.PubSub.Tests/Opc.Ua.PubSub.Tests.csproj b/Tests/Opc.Ua.PubSub.Tests/Opc.Ua.PubSub.Tests.csproj index d378b9fbc..c360d9735 100644 --- a/Tests/Opc.Ua.PubSub.Tests/Opc.Ua.PubSub.Tests.csproj +++ b/Tests/Opc.Ua.PubSub.Tests/Opc.Ua.PubSub.Tests.csproj @@ -16,7 +16,7 @@ runtime; build; native; contentfiles; analyzers - + all runtime; build; native; contentfiles; analyzers; buildtransitive From 2a74b44627b9f9479416509f26e2d9a0d850b40b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 9 Mar 2022 19:40:18 +0100 Subject: [PATCH 05/19] Bump Microsoft.Extensions.Logging.Abstractions from 6.0.0 to 6.0.1 (#1728) Bumps [Microsoft.Extensions.Logging.Abstractions](https://github.com/dotnet/runtime) from 6.0.0 to 6.0.1. - [Release notes](https://github.com/dotnet/runtime/releases) - [Commits](https://github.com/dotnet/runtime/compare/v6.0.0...v6.0.1) --- updated-dependencies: - dependency-name: Microsoft.Extensions.Logging.Abstractions dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- Stack/Opc.Ua.Core/Opc.Ua.Core.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Stack/Opc.Ua.Core/Opc.Ua.Core.csproj b/Stack/Opc.Ua.Core/Opc.Ua.Core.csproj index 903d119fa..4ef377bb1 100644 --- a/Stack/Opc.Ua.Core/Opc.Ua.Core.csproj +++ b/Stack/Opc.Ua.Core/Opc.Ua.Core.csproj @@ -39,7 +39,7 @@ - + From cfc68eeb10434d30ad9af8d33e022ff900f7c858 Mon Sep 17 00:00:00 2001 From: Martin Regen Date: Mon, 14 Mar 2022 16:39:09 +0100 Subject: [PATCH 06/19] Use .NET analyzers instead of Roslynator, fix warnings, no bug fixes (#1729) -use latests analyzers in .NET instead of Roslynator. -fix warnings and formatting, no bug fixes! --- .editorconfig | 34 +- .../ReferenceServer/ReferenceNodeManager.cs | 1 + .../SampleNodeManager/SampleNodeManager.cs | 5 +- Docs/TransferSubscription.md | 3 +- Libraries/.editorconfig | 10 - .../ComplexTypeSystem.cs | 4 +- .../DataTypeException.cs | 28 +- .../Types/BaseComplexType.cs | 8 +- .../Types/OptionalFieldsComplexType.cs | 8 +- Libraries/Opc.Ua.Client/MonitoredItem.cs | 6 +- .../Opc.Ua.Client/SessionReconnectHandler.cs | 1 + Libraries/Opc.Ua.Client/Subscription.cs | 15 +- .../LocalDiscoveryServerClient.cs | 19 +- Libraries/Opc.Ua.PubSub/ObjectFactory.cs | 2 +- .../Transport/UdpPubSubConnection.cs | 12 +- .../X509Certificate/X509PfxUtils.cs | 9 +- .../Opc.Ua.Server/Configuration/TrustList.cs | 4 +- .../Diagnostics/CustomNodeManager.cs | 27 +- .../NodeManager/ContinuationPoint.cs | 1 + .../NodeManager/CoreNodeManager.cs | 1 + .../Server/OpcUaServerEventSource.cs | 48 +-- .../Opc.Ua.Server/Server/RequestManager.cs | 1 + .../Server/ServerInternalData.cs | 1 + Libraries/Opc.Ua.Server/Session/Session.cs | 1 + .../Opc.Ua.Server/Session/SessionManager.cs | 47 +-- .../Subscription/SessionPublishQueue.cs | 1 + .../Subscription/Subscription.cs | 17 +- .../Subscription/SubscriptionManager.cs | 1 + Stack/.editorconfig | 10 - .../Stack/Https/HttpsTransportChannel.cs | 4 + .../Stack/Https/HttpsTransportListener.cs | 11 +- .../Schema/ApplicationConfiguration.cs | 12 +- .../Certificates/CertificateIdentifier.cs | 17 +- .../CertificateStoreIdentifier.cs | 12 +- .../Opc.Ua.Core/Stack/Client/UaChannelBase.cs | 2 +- .../Configuration/ConfigurationWatcher.cs | 1 + .../Configuration/ConfiguredEndpoints.cs | 18 +- Stack/Opc.Ua.Core/Stack/Nodes/Node.cs | 358 +++++++++--------- Stack/Opc.Ua.Core/Stack/Server/ServerBase.cs | 14 +- .../Stack/State/BaseVariableState.cs | 2 +- .../Stack/Tcp/ChannelAsyncOperation.cs | 1 + .../Opc.Ua.Core/Stack/Tcp/TcpMessageSocket.cs | 17 +- .../Stack/Tcp/UaSCBinaryClientChannel.cs | 16 +- .../Stack/Tcp/UaSCBinaryTransportChannel.cs | 1 + Stack/Opc.Ua.Core/Types/BuiltIn/Variant.cs | 2 +- Stack/Opc.Ua.Core/Types/Utils/ReadOnlyList.cs | 26 +- Stack/Opc.Ua.Core/Types/Utils/Utils.cs | 48 +-- Tests/.editorconfig | 10 - .../TypeSystemClientTest.cs | 4 +- Tests/Opc.Ua.Client.Tests/ClientFixture.cs | 6 +- Tests/Opc.Ua.Client.Tests/ClientTest.cs | 6 +- .../ClientTestFramework.cs | 8 +- Tests/Opc.Ua.Client.Tests/SubscriptionTest.cs | 38 +- .../Certificates/CertificateValidatorTest.cs | 10 +- .../Types/BuiltIn/BuiltInTests.cs | 16 +- .../Types/ContentFilter/ContentFilterTests.cs | 14 +- .../Types/Encoders/EncodeableTests.cs | 8 +- .../Types/Encoders/EncoderCommon.cs | 22 +- .../Types/Encoders/EncoderTests.cs | 4 +- .../Types/Encoders/JsonEncoderBenchmarks.cs | 8 +- .../Types/Encoders/JsonEncoderTests.cs | 12 +- .../Types/Utils/HiResClock.cs | 17 +- .../Opc.Ua.Core.Tests/Types/Utils/LogTests.cs | 1 + .../Types/Utils/NumericRangeTests.cs | 2 +- .../Types/Utils/UtilTests.cs | 4 +- Tests/Opc.Ua.Gds.Tests/Common.cs | 80 ++-- .../GlobalDiscoveryTestServer.cs | 10 +- Tests/Opc.Ua.Gds.Tests/PushTest.cs | 30 +- .../ServerConfigurationPushTestClient.cs | 12 +- .../Configuration/PubSubConfiguratorTests.cs | 28 +- .../Configuration/UaPubSubDataStoreTests.cs | 20 +- .../Encoding/UadpDataSetMessageTests.cs | 50 +-- .../Encoding/UadpNetworkMessageTests.cs | 10 +- .../PublishedData/DataCollectorTests.cs | 4 +- .../Transport/MqttPubSubConnectionTests.cs | 22 +- .../Transport/UdpClientCreatorTests.cs | 33 +- .../UdpPubSubConnectionTests.Publisher.cs | 36 +- .../UdpPubSubConnectionTests.Subscriber.cs | 64 ++-- .../Transport/UdpPubSubConnectionTests.cs | 16 +- .../ReferenceServerTest.cs | 12 +- Tests/Opc.Ua.Server.Tests/ServerFixture.cs | 6 +- .../Opc.Ua.Server.Tests/ServerFixtureUtils.cs | 7 +- .../Opc.Ua.Server.Tests/ServerStartupTests.cs | 4 +- azure-pipelines.yml | 12 +- common.props | 22 +- 85 files changed, 788 insertions(+), 767 deletions(-) delete mode 100644 Libraries/.editorconfig delete mode 100644 Stack/.editorconfig delete mode 100644 Tests/.editorconfig diff --git a/.editorconfig b/.editorconfig index 554b07be5..0abf898c6 100644 --- a/.editorconfig +++ b/.editorconfig @@ -111,12 +111,16 @@ csharp_style_expression_bodied_accessors = csharp_style_expression_bodied_constructors = false : suggestion csharp_style_expression_bodied_methods = false : suggestion csharp_style_expression_bodied_properties = true : silent +csharp_style_expression_bodied_lambdas = true : silent +csharp_style_expression_bodied_local_functions = false : silent + #Style - expression level options csharp_prefer_braces = true : silent csharp_style_deconstructed_variable_declaration = true : suggestion csharp_prefer_simple_default_expression = true : suggestion csharp_style_inlined_variable_declaration = false : suggestion +csharp_prefer_simple_using_statement = false : suggestion #Style - implicit and explicit types csharp_style_var_for_built_in_types = false : silent @@ -161,6 +165,7 @@ dotnet_style_prefer_conditional_expression_over_return = # 'using' directive preferences csharp_using_directive_placement = outside_namespace : silent +csharp_style_namespace_declarations = block_scoped : silent # Naming rules @@ -226,12 +231,23 @@ dotnet_naming_rule.instance_fields_should_be_camel_case.severity = dotnet_naming_rule.instance_fields_should_be_camel_case.symbols = instance_fields dotnet_naming_rule.instance_fields_should_be_camel_case.style = instance_field_style -dotnet_naming_symbols.instance_fields.applicable_kinds = field, event +dotnet_naming_symbols.instance_fields.applicable_kinds = field dotnet_naming_symbols.instance_fields.applicable_accessibilities = private, protected, private_protected, protected_friend dotnet_naming_style.instance_field_style.capitalization = camel_case dotnet_naming_style.instance_field_style.required_prefix = m_ +# Private event fields are PascalCase and start with m_ +dotnet_naming_rule.instance_events_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.instance_events_should_be_pascal_case.symbols = instance_events +dotnet_naming_rule.instance_events_should_be_pascal_case.style = instance_events_style + +dotnet_naming_symbols.instance_events.applicable_kinds = event +dotnet_naming_symbols.instance_events.applicable_accessibilities = private, protected, private_protected, protected_friend + +dotnet_naming_style.instance_events_style.capitalization = pascal_case +dotnet_naming_style.instance_events_style.required_prefix = m_ + # Locals and parameters are camelCase dotnet_naming_rule.locals_should_be_camel_case.severity = suggestion dotnet_naming_rule.locals_should_be_camel_case.symbols = locals_and_parameters @@ -260,7 +276,10 @@ dotnet_naming_symbols.all_members.applicable_kinds = dotnet_naming_style.pascal_case_style.capitalization = pascal_case # Diagnostic settings (windows only) -dotnet_analyzer_diagnostic.category-reliability.severity = suggestion +dotnet_analyzer_diagnostic.category-style.severity = suggestion +dotnet_analyzer_diagnostic.category-globalization.severity = silent +dotnet_analyzer_diagnostic.category-design.severity = suggestion +dotnet_analyzer_diagnostic.category-reliability.severity = warning dotnet_analyzer_diagnostic.category-performance.severity = warning dotnet_analyzer_diagnostic.category-security.severity = warning @@ -275,10 +294,11 @@ dotnet_diagnostic.CA1822.severity = dotnet_code_quality.CA1822.api_surface = private, internal # CA3075: Insecure DTD processing in XML -dotnet_diagnostic.CA3075.severity = warning -dotnet_diagnostic.CA3077.severity = warning +dotnet_diagnostic.CA3075.severity = error +dotnet_diagnostic.CA3077.severity = error -# RCS1090: Add call to 'ConfigureAwait' (or vice versa) -# Opt-In to avoid many warnings in WinForms apps -dotnet_diagnostic.RCS1090.severity = silent +# IDE0049: Simplify Names +dotnet_diagnostic.IDE0049.severity = silent +# CA1507: Use nameof in place of string +dotnet_diagnostic.CA1507.severity = warning diff --git a/Applications/Quickstarts.Servers/ReferenceServer/ReferenceNodeManager.cs b/Applications/Quickstarts.Servers/ReferenceServer/ReferenceNodeManager.cs index 29896f7aa..bbb2310a7 100644 --- a/Applications/Quickstarts.Servers/ReferenceServer/ReferenceNodeManager.cs +++ b/Applications/Quickstarts.Servers/ReferenceServer/ReferenceNodeManager.cs @@ -77,6 +77,7 @@ protected override void Dispose(bool disposing) { // TBD } + base.Dispose(disposing); } #endregion diff --git a/Applications/Quickstarts.Servers/SampleNodeManager/SampleNodeManager.cs b/Applications/Quickstarts.Servers/SampleNodeManager/SampleNodeManager.cs index 35980138c..3c7ee69c9 100644 --- a/Applications/Quickstarts.Servers/SampleNodeManager/SampleNodeManager.cs +++ b/Applications/Quickstarts.Servers/SampleNodeManager/SampleNodeManager.cs @@ -72,6 +72,7 @@ public SampleNodeManager(IServerInternal server) public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } /// @@ -845,7 +846,7 @@ public virtual ServiceResult DeleteReference( NodeId referenceTypeId, bool isInverse, ExpandedNodeId targetId, - bool deleteBiDirectional) + bool deleteBidirectional) { lock (Lock) { @@ -859,7 +860,7 @@ public virtual ServiceResult DeleteReference( source.RemoveReference(referenceTypeId, isInverse, targetId); - if (deleteBiDirectional) + if (deleteBidirectional) { // check if the target is also managed by the node manager. if (!targetId.IsAbsolute) diff --git a/Docs/TransferSubscription.md b/Docs/TransferSubscription.md index ca144df3c..6403d3313 100644 --- a/Docs/TransferSubscription.md +++ b/Docs/TransferSubscription.md @@ -32,7 +32,7 @@ If a server is derived from the StandardServer class and if the custom NodeManag Typically the following porting steps are necessary: - Use the new `MonitoredItem` constructor which has no `Session` parameter, it is implicitly available in the `Subscription` and the `MonitoredItem`can not keep a private reference when the subscription is transferred. - - Add the `TransferMonitoredItems` method from another `NodeManager` sample to the custome `NodeManager` implementationsj. + - Add the `TransferMonitoredItems` method from another `NodeManager` sample to the custom `NodeManager` implementations. - Depending on the `NodeManager` implementation, add or fix the `ReadInitialValue` method. The monitored item transfer must be able to queue an unfiltered initial value, if requested. - More subtle changes might be required, e.g. how the monitored item handle to read the attributes is obtained. - Once the server builds, if available run a CTT test against a node in the ported NodeManager. @@ -43,5 +43,6 @@ Typically the following porting steps are necessary: - **There is no opt out**. - **Breaking change**: There is currently no support for NodeManagers to *not* support the new transfer service. Unless the NodeManagers are all ported to support the monitored items transfer, build errors will prevent from using the latest 1.4.368 library. - There is no client sample for special use cases like e.g. the client restart in a docker container. +- In some .NET Core 3.1 projects a warning CS8032 occurs due to missing analyzer. Current believe is this warning can be safely disabled. \ No newline at end of file diff --git a/Libraries/.editorconfig b/Libraries/.editorconfig deleted file mode 100644 index a4887b8db..000000000 --- a/Libraries/.editorconfig +++ /dev/null @@ -1,10 +0,0 @@ -# Editorconfig for libraries - -root = false - -# Diagnostic settings specific to libraries -[*.cs] - -# RCS1090: Add call to 'ConfigureAwait' (or vice versa) -dotnet_diagnostic.RCS1090.severity = warning - diff --git a/Libraries/Opc.Ua.Client.ComplexTypes/ComplexTypeSystem.cs b/Libraries/Opc.Ua.Client.ComplexTypes/ComplexTypeSystem.cs index 8c71bc1b2..f3d2cb06d 100644 --- a/Libraries/Opc.Ua.Client.ComplexTypes/ComplexTypeSystem.cs +++ b/Libraries/Opc.Ua.Client.ComplexTypes/ComplexTypeSystem.cs @@ -480,7 +480,7 @@ IList serverStructTypes catch (DataTypeNotFoundException dtnfex) { // add missing type to list - var dataTypeNode = m_session.NodeCache.Find(dtnfex.nodeId); + var dataTypeNode = m_session.NodeCache.Find(dtnfex.NodeId); if (dataTypeNode != null) { AddEnumerationOrStructureType(dataTypeNode, serverEnumTypes, serverStructTypes); @@ -602,7 +602,7 @@ IList serverStructTypes } catch (DataTypeNotFoundException dtnfex) { - var typeMatch = structTypesWorkList.FirstOrDefault(n => n.NodeId == dtnfex.nodeId); + var typeMatch = structTypesWorkList.FirstOrDefault(n => n.NodeId == dtnfex.NodeId); if (typeMatch == null) { throw; diff --git a/Libraries/Opc.Ua.Client.ComplexTypes/DataTypeException.cs b/Libraries/Opc.Ua.Client.ComplexTypes/DataTypeException.cs index a53be7367..44c4c66eb 100644 --- a/Libraries/Opc.Ua.Client.ComplexTypes/DataTypeException.cs +++ b/Libraries/Opc.Ua.Client.ComplexTypes/DataTypeException.cs @@ -40,12 +40,12 @@ public class DataTypeNotFoundException : Exception /// /// The nodeId of the data type. /// - public ExpandedNodeId nodeId; + public ExpandedNodeId NodeId { get; } /// /// The name of the data type. /// - public string typeName; + public string TypeName { get; } /// /// Create the exception. @@ -53,7 +53,7 @@ public class DataTypeNotFoundException : Exception /// The nodeId of the data type. public DataTypeNotFoundException(ExpandedNodeId nodeId) { - this.nodeId = nodeId; + this.NodeId = nodeId; } /// @@ -64,8 +64,8 @@ public DataTypeNotFoundException(ExpandedNodeId nodeId) public DataTypeNotFoundException(string typeName, string message) : base(message) { - this.nodeId = NodeId.Null; - this.typeName = typeName; + this.NodeId = Ua.NodeId.Null; + this.TypeName = typeName; } /// @@ -76,7 +76,7 @@ public DataTypeNotFoundException(string typeName, string message) public DataTypeNotFoundException(ExpandedNodeId nodeId, string message) : base(message) { - this.nodeId = nodeId; + this.NodeId = nodeId; } /// @@ -88,7 +88,7 @@ public DataTypeNotFoundException(ExpandedNodeId nodeId, string message) public DataTypeNotFoundException(ExpandedNodeId nodeId, string message, Exception inner) : base(message, inner) { - this.nodeId = nodeId; + this.NodeId = nodeId; } } @@ -101,12 +101,12 @@ public class DataTypeNotSupportedException : Exception /// /// The nodeId of the data type. /// - public ExpandedNodeId nodeId; + public ExpandedNodeId NodeId { get; } /// /// The name of the data type. /// - public string typeName; + public string TypeName { get; } /// /// Create the exception. @@ -114,7 +114,7 @@ public class DataTypeNotSupportedException : Exception /// The nodeId of the data type. public DataTypeNotSupportedException(ExpandedNodeId nodeId) { - this.nodeId = nodeId; + this.NodeId = nodeId; } /// @@ -125,8 +125,8 @@ public DataTypeNotSupportedException(ExpandedNodeId nodeId) public DataTypeNotSupportedException(string typeName, string message) : base(message) { - this.nodeId = NodeId.Null; - this.typeName = typeName; + this.NodeId = Ua.NodeId.Null; + this.TypeName = typeName; } /// @@ -137,7 +137,7 @@ public DataTypeNotSupportedException(string typeName, string message) public DataTypeNotSupportedException(ExpandedNodeId nodeId, string message) : base(message) { - this.nodeId = nodeId; + this.NodeId = nodeId; } /// @@ -149,7 +149,7 @@ public DataTypeNotSupportedException(ExpandedNodeId nodeId, string message) public DataTypeNotSupportedException(ExpandedNodeId nodeId, string message, Exception inner) : base(message, inner) { - this.nodeId = nodeId; + this.NodeId = nodeId; } } }//namespace diff --git a/Libraries/Opc.Ua.Client.ComplexTypes/Types/BaseComplexType.cs b/Libraries/Opc.Ua.Client.ComplexTypes/Types/BaseComplexType.cs index a45cc69c9..3e9ab2460 100644 --- a/Libraries/Opc.Ua.Client.ComplexTypes/Types/BaseComplexType.cs +++ b/Libraries/Opc.Ua.Client.ComplexTypes/Types/BaseComplexType.cs @@ -149,14 +149,14 @@ public virtual void Decode(IDecoder decoder) } /// - public virtual bool IsEqual(IEncodeable equalValue) + public virtual bool IsEqual(IEncodeable encodeable) { - if (Object.ReferenceEquals(this, equalValue)) + if (Object.ReferenceEquals(this, encodeable)) { return true; } - if (!(equalValue is BaseComplexType valueBaseType)) + if (!(encodeable is BaseComplexType valueBaseType)) { return false; } @@ -192,7 +192,7 @@ public override string ToString() /// (Unused). Leave this as null /// The provider of a mechanism for retrieving an object to control formatting. /// - /// A containing the value of the current embeded instance in the specified format. + /// A containing the value of the current embeded instance in the specified format. /// /// Thrown if the format parameter is not null public virtual string ToString(string format, IFormatProvider formatProvider) diff --git a/Libraries/Opc.Ua.Client.ComplexTypes/Types/OptionalFieldsComplexType.cs b/Libraries/Opc.Ua.Client.ComplexTypes/Types/OptionalFieldsComplexType.cs index 908fea578..ee98b1c93 100644 --- a/Libraries/Opc.Ua.Client.ComplexTypes/Types/OptionalFieldsComplexType.cs +++ b/Libraries/Opc.Ua.Client.ComplexTypes/Types/OptionalFieldsComplexType.cs @@ -129,14 +129,14 @@ public override void Decode(IDecoder decoder) } /// - public override bool IsEqual(IEncodeable equalValue) + public override bool IsEqual(IEncodeable encodeable) { - if (Object.ReferenceEquals(this, equalValue)) + if (Object.ReferenceEquals(this, encodeable)) { return true; } - if (!(equalValue is OptionalFieldsComplexType valueBaseType)) + if (!(encodeable is OptionalFieldsComplexType valueBaseType)) { return false; } @@ -179,7 +179,7 @@ public override bool IsEqual(IEncodeable equalValue) /// (Unused). Leave this as null /// The provider of a mechanism for retrieving an object to control formatting. /// - /// A containing the value of the current embeded instance in the specified format. + /// A containing the value of the current embedded instance in the specified format. /// /// Thrown if the format parameter is not null public override string ToString(string format, IFormatProvider formatProvider) diff --git a/Libraries/Opc.Ua.Client/MonitoredItem.cs b/Libraries/Opc.Ua.Client/MonitoredItem.cs index 8c3a588b9..91096583e 100644 --- a/Libraries/Opc.Ua.Client/MonitoredItem.cs +++ b/Libraries/Opc.Ua.Client/MonitoredItem.cs @@ -174,7 +174,7 @@ private void Initialize() NodeClass = NodeClass.Variable; // assign a unique handle. - m_clientHandle = Utils.IncrementIdentifier(ref s_GlobalClientHandle); + m_clientHandle = Utils.IncrementIdentifier(ref s_globalClientHandle); } #endregion @@ -747,7 +747,7 @@ public void SetModifyResult( public void SetTransferResult(uint clientHandle) { // ensure the global counter is not duplicating future handle ids - Utils.LowerLimitIdentifier(ref s_GlobalClientHandle, clientHandle); + Utils.LowerLimitIdentifier(ref s_globalClientHandle, clientHandle); m_clientHandle = clientHandle; m_status.SetTransferResult(this); m_attributesModified = false; @@ -1080,7 +1080,7 @@ private void UseDefaultEventFilter() private uint m_clientHandle; private MonitoredItemStatus m_status; private bool m_attributesModified; - private static long s_GlobalClientHandle; + private static long s_globalClientHandle; private object m_cache = new object(); private MonitoredItemDataCache m_dataCache; diff --git a/Libraries/Opc.Ua.Client/SessionReconnectHandler.cs b/Libraries/Opc.Ua.Client/SessionReconnectHandler.cs index 867a08142..9d9463cb3 100644 --- a/Libraries/Opc.Ua.Client/SessionReconnectHandler.cs +++ b/Libraries/Opc.Ua.Client/SessionReconnectHandler.cs @@ -45,6 +45,7 @@ public class SessionReconnectHandler : IDisposable public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } /// diff --git a/Libraries/Opc.Ua.Client/Subscription.cs b/Libraries/Opc.Ua.Client/Subscription.cs index f3b096993..6751b5f21 100644 --- a/Libraries/Opc.Ua.Client/Subscription.cs +++ b/Libraries/Opc.Ua.Client/Subscription.cs @@ -109,7 +109,7 @@ public Subscription(Subscription template, bool copyEventHandlers) if (copyEventHandlers) { m_StateChanged = template.m_StateChanged; - m_PublishStatusChanged = template.m_PublishStatusChanged; + m_publishStatusChanged = template.m_publishStatusChanged; m_fastDataChangeCallback = template.m_fastDataChangeCallback; m_fastEventCallback = template.m_fastEventCallback; } @@ -173,6 +173,7 @@ private void Initialize() public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } /// @@ -212,7 +213,7 @@ public event EventHandler PublishStatusChanged { lock (m_cache) { - m_PublishStatusChanged += value; + m_publishStatusChanged += value; } } @@ -220,7 +221,7 @@ public event EventHandler PublishStatusChanged { lock (m_cache) { - m_PublishStatusChanged -= value; + m_publishStatusChanged -= value; } } } @@ -1295,7 +1296,7 @@ public void SaveMessageInCache( // check if a publish error was previously reported. if (PublishingStopped) { - callback = m_PublishStatusChanged; + callback = m_publishStatusChanged; TraceState("PUBLISHING RECOVERED"); } @@ -1641,7 +1642,7 @@ private void OnKeepAlive(object state) return; } - callback = m_PublishStatusChanged; + callback = m_publishStatusChanged; m_publishLateCount++; } @@ -1930,7 +1931,7 @@ private async Task OnMessageReceived() session = m_session; subscriptionId = m_id; - callback = m_PublishStatusChanged; + callback = m_publishStatusChanged; } if (callback != null) @@ -2439,7 +2440,7 @@ private IncomingMessage FindOrCreateEntry(DateTime utcNow, uint sequenceNumber) private Timer m_publishTimer; private DateTime m_lastNotificationTime; private int m_publishLateCount; - private event EventHandler m_PublishStatusChanged; + private event EventHandler m_publishStatusChanged; private object m_cache = new object(); private LinkedList m_messageCache; diff --git a/Libraries/Opc.Ua.Gds.Client.Common/LocalDiscoveryServerClient.cs b/Libraries/Opc.Ua.Gds.Client.Common/LocalDiscoveryServerClient.cs index 4bcb9ab83..e594b4315 100644 --- a/Libraries/Opc.Ua.Gds.Client.Common/LocalDiscoveryServerClient.cs +++ b/Libraries/Opc.Ua.Gds.Client.Common/LocalDiscoveryServerClient.cs @@ -105,8 +105,7 @@ public IAsyncResult BeginFindServers( { DiscoveryClient client = CreateClient(endpointUrl, endpointTransportProfileUri); - FindServersData data = new FindServersData(callback, callbackData, client.OperationTimeout) - { + FindServersData data = new FindServersData(callback, callbackData, client.OperationTimeout) { DiscoveryClient = client }; @@ -127,7 +126,7 @@ public List EndFindServers(IAsyncResult result) if (data == null) { - throw new ArgumentException("Did not pass the correct IAsyncResult to end method.", "success"); + throw new ArgumentException("Did not pass the correct IAsyncResult to end method.", nameof(result)); } try @@ -201,8 +200,7 @@ public IAsyncResult BeginGetEndpoints( { DiscoveryClient client = CreateClient(endpointUrl, endpointTransportProfileUri); - GetEndpointsData data = new GetEndpointsData(callback, callbackData, client.OperationTimeout) - { + GetEndpointsData data = new GetEndpointsData(callback, callbackData, client.OperationTimeout) { DiscoveryClient = client }; @@ -223,7 +221,7 @@ public List EndGetEndpoints(IAsyncResult result) if (data == null) { - throw new ArgumentException("Did not pass the correct IAsyncResult to end method.", "success"); + throw new ArgumentException("Did not pass the correct IAsyncResult to end method.", nameof(result)); } try @@ -318,8 +316,7 @@ public IAsyncResult BeginFindServersOnNetwork( { DiscoveryClient client = CreateClient(endpointUrl, endpointTransportProfileUri); - FindServersOnNetworkData data = new FindServersOnNetworkData(callback, callbackData, client.OperationTimeout) - { + FindServersOnNetworkData data = new FindServersOnNetworkData(callback, callbackData, client.OperationTimeout) { DiscoveryClient = client }; @@ -340,7 +337,7 @@ public List EndFindServersOnNetwork(IAsyncResult result, out Da if (data == null) { - throw new ArgumentException("Did not pass the correct IAsyncResult to end method.", "success"); + throw new ArgumentException("Did not pass the correct IAsyncResult to end method.", nameof(result)); } try @@ -404,7 +401,7 @@ protected virtual DiscoveryClient CreateClient( { if (String.IsNullOrEmpty(endpointUrl)) { - endpointUrl = DefaultUrl; + endpointUrl = kDefaultUrl; } if (!Uri.IsWellFormedUriString(endpointUrl, UriKind.Absolute)) @@ -433,7 +430,7 @@ protected virtual DiscoveryClient CreateClient( #endregion #region Private Fields - private const string DefaultUrl = "opc.tcp://localhost:4840"; + private const string kDefaultUrl = "opc.tcp://localhost:4840"; #endregion } } diff --git a/Libraries/Opc.Ua.PubSub/ObjectFactory.cs b/Libraries/Opc.Ua.PubSub/ObjectFactory.cs index c49b9b9ae..98b6f0d0b 100644 --- a/Libraries/Opc.Ua.PubSub/ObjectFactory.cs +++ b/Libraries/Opc.Ua.PubSub/ObjectFactory.cs @@ -57,7 +57,7 @@ public static UaPubSubConnection CreateConnection(UaPubSubApplication uaPubSubAp { return new MqttPubSubConnection(uaPubSubApplication, pubSubConnectionDataType, MessageMapping.Json); } - throw new ArgumentException("Invalid TransportProfileUri.", "pubSubConnectionDataType"); + throw new ArgumentException("Invalid TransportProfileUri.", nameof(pubSubConnectionDataType)); } } } diff --git a/Libraries/Opc.Ua.PubSub/Transport/UdpPubSubConnection.cs b/Libraries/Opc.Ua.PubSub/Transport/UdpPubSubConnection.cs index 9eda7d2c8..6aebe6204 100644 --- a/Libraries/Opc.Ua.PubSub/Transport/UdpPubSubConnection.cs +++ b/Libraries/Opc.Ua.PubSub/Transport/UdpPubSubConnection.cs @@ -50,8 +50,8 @@ internal class UdpPubSubConnection : UaPubSubConnection private UdpDiscoverySubscriber m_udpDiscoverySubscriber; private UdpDiscoveryPublisher m_udpDiscoveryPublisher; - private static int m_sequenceNumber = 0; - private static int m_dataSetSequenceNumber = 0; + private static int s_sequenceNumber = 0; + private static int s_dataSetSequenceNumber = 0; #endregion @@ -232,7 +232,7 @@ public override IList CreateNetworkMessages(WriterGroupDataTyp uadpDataSetMessage.DataSetWriterId = dataSetWriter.DataSetWriterId; uadpDataSetMessage.SetMessageContentMask((UadpDataSetMessageContentMask)dataSetMessageSettings.DataSetMessageContentMask); uadpDataSetMessage.SetFieldContentMask((DataSetFieldContentMask)dataSetWriter.DataSetFieldContentMask); - uadpDataSetMessage.SequenceNumber = (ushort)(Utils.IncrementIdentifier(ref m_dataSetSequenceNumber) % UInt16.MaxValue); + uadpDataSetMessage.SequenceNumber = (ushort)(Utils.IncrementIdentifier(ref s_dataSetSequenceNumber) % UInt16.MaxValue); uadpDataSetMessage.ConfiguredSize = dataSetMessageSettings.ConfiguredSize; uadpDataSetMessage.DataSetOffset = dataSetMessageSettings.DataSetOffset; uadpDataSetMessage.Timestamp = DateTime.UtcNow; @@ -256,7 +256,7 @@ public override IList CreateNetworkMessages(WriterGroupDataTyp uadpNetworkMessage.WriterGroupId = writerGroupConfiguration.WriterGroupId; // Network message header uadpNetworkMessage.PublisherId = PubSubConnectionConfiguration.PublisherId.Value; - uadpNetworkMessage.SequenceNumber = (ushort)(Utils.IncrementIdentifier(ref m_sequenceNumber) % UInt16.MaxValue); + uadpNetworkMessage.SequenceNumber = (ushort)(Utils.IncrementIdentifier(ref s_sequenceNumber) % UInt16.MaxValue); // Writer group header uadpNetworkMessage.GroupVersion = messageSettings.GroupVersion; @@ -531,8 +531,8 @@ private void Renew(UdpClient socket) /// internal void ResetSequenceNumber() { - m_sequenceNumber = 0; - m_dataSetSequenceNumber = 0; + s_sequenceNumber = 0; + s_dataSetSequenceNumber = 0; } /// diff --git a/Libraries/Opc.Ua.Security.Certificates/X509Certificate/X509PfxUtils.cs b/Libraries/Opc.Ua.Security.Certificates/X509Certificate/X509PfxUtils.cs index 376055757..4a5706cc9 100644 --- a/Libraries/Opc.Ua.Security.Certificates/X509Certificate/X509PfxUtils.cs +++ b/Libraries/Opc.Ua.Security.Certificates/X509Certificate/X509PfxUtils.cs @@ -103,13 +103,12 @@ public static bool VerifyRSAKeyPair( throw; } } - finally + + if (!result && throwOnError) { - if (!result && throwOnError) - { - throw new CryptographicException("The public/private key pair in the certficates do not match."); - } + throw new CryptographicException("The public/private key pair in the certficates do not match."); } + return result; } diff --git a/Libraries/Opc.Ua.Server/Configuration/TrustList.cs b/Libraries/Opc.Ua.Server/Configuration/TrustList.cs index 134ce79a5..0f90210a7 100644 --- a/Libraries/Opc.Ua.Server/Configuration/TrustList.cs +++ b/Libraries/Opc.Ua.Server/Configuration/TrustList.cs @@ -41,7 +41,7 @@ namespace Opc.Ua.Server /// public class TrustList { - const int DefaultTrustListCapacity = 0x10000; + const int kDefaultTrustListCapacity = 0x10000; #region Constructors /// @@ -182,7 +182,7 @@ private ServiceResult Open( } else { - m_strm = new MemoryStream(DefaultTrustListCapacity); + m_strm = new MemoryStream(kDefaultTrustListCapacity); } m_node.OpenCount.Value = 1; diff --git a/Libraries/Opc.Ua.Server/Diagnostics/CustomNodeManager.cs b/Libraries/Opc.Ua.Server/Diagnostics/CustomNodeManager.cs index 71be9eac9..730c9c52d 100644 --- a/Libraries/Opc.Ua.Server/Diagnostics/CustomNodeManager.cs +++ b/Libraries/Opc.Ua.Server/Diagnostics/CustomNodeManager.cs @@ -117,6 +117,7 @@ protected CustomNodeManager2( public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } /// @@ -1002,7 +1003,7 @@ public virtual ServiceResult DeleteReference( NodeId referenceTypeId, bool isInverse, ExpandedNodeId targetId, - bool deleteBiDirectional) + bool deleteBidirectional) { lock (Lock) { @@ -1023,7 +1024,7 @@ public virtual ServiceResult DeleteReference( // only support references to Source Areas. source.Node.RemoveReference(referenceTypeId, isInverse, targetId); - if (deleteBiDirectional) + if (deleteBidirectional) { // check if the target is also managed by this node manager. if (!targetId.IsAbsolute) @@ -3401,7 +3402,7 @@ public virtual void CreateMonitoredItems( TimestampsToReturn timestampsToReturn, IList itemsToCreate, IList errors, - IList filterResults, + IList filterErrors, IList monitoredItems, ref long globalIdCounter) { @@ -3484,7 +3485,7 @@ public virtual void CreateMonitoredItems( } // save any filter error details. - filterResults[handle.Index] = filterResult; + filterErrors[handle.Index] = filterResult; if (ServiceResult.IsBad(errors[handle.Index])) { @@ -3902,7 +3903,7 @@ public virtual void ModifyMonitoredItems( IList monitoredItems, IList itemsToModify, IList errors, - IList filterResults) + IList filterErrors) { ServerSystemContext systemContext = m_systemContext.Copy(context); List modifiedItems = new List(); @@ -3943,7 +3944,7 @@ public virtual void ModifyMonitoredItems( out filterResult); // save any filter error details. - filterResults[ii] = filterResult; + filterErrors[ii] = filterResult; // save the modified item. if (ServiceResult.IsGood(errors[ii])) @@ -4417,7 +4418,7 @@ public virtual NodeMetadata GetPermissionMetadata( OperationContext context, object targetHandle, BrowseResultMask resultMask, - Dictionary> uniqueNodesServiceAttributes, + Dictionary> uniqueNodesServiceAttributesCache, bool permissionsOnly) { ServerSystemContext systemContext = m_systemContext.Copy(context); @@ -4446,24 +4447,24 @@ public virtual NodeMetadata GetPermissionMetadata( NodeMetadata metadata = new NodeMetadata(target, target.NodeId); // Treat the case of calls originating from the optimized services that use the cache (Read, Browse and Call services) - if (uniqueNodesServiceAttributes != null) + if (uniqueNodesServiceAttributesCache != null) { NodeId key = handle.NodeId; - if (uniqueNodesServiceAttributes.ContainsKey(key)) + if (uniqueNodesServiceAttributesCache.ContainsKey(key)) { - if (uniqueNodesServiceAttributes[key].Count == 0) + if (uniqueNodesServiceAttributesCache[key].Count == 0) { - values = ReadAndCacheValidationAttributes(uniqueNodesServiceAttributes, systemContext, target, key); + values = ReadAndCacheValidationAttributes(uniqueNodesServiceAttributesCache, systemContext, target, key); } else { // Retrieve value from cache - values = uniqueNodesServiceAttributes[key]; + values = uniqueNodesServiceAttributesCache[key]; } } else { - values = ReadAndCacheValidationAttributes(uniqueNodesServiceAttributes, systemContext, target, key); + values = ReadAndCacheValidationAttributes(uniqueNodesServiceAttributesCache, systemContext, target, key); } SetAccessAndRolePermissions(values, metadata); diff --git a/Libraries/Opc.Ua.Server/NodeManager/ContinuationPoint.cs b/Libraries/Opc.Ua.Server/NodeManager/ContinuationPoint.cs index 84fbde3d8..e608e950c 100644 --- a/Libraries/Opc.Ua.Server/NodeManager/ContinuationPoint.cs +++ b/Libraries/Opc.Ua.Server/NodeManager/ContinuationPoint.cs @@ -55,6 +55,7 @@ public ContinuationPoint() public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } /// diff --git a/Libraries/Opc.Ua.Server/NodeManager/CoreNodeManager.cs b/Libraries/Opc.Ua.Server/NodeManager/CoreNodeManager.cs index 558301b4d..425c94993 100644 --- a/Libraries/Opc.Ua.Server/NodeManager/CoreNodeManager.cs +++ b/Libraries/Opc.Ua.Server/NodeManager/CoreNodeManager.cs @@ -92,6 +92,7 @@ public CoreNodeManager( public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } /// diff --git a/Libraries/Opc.Ua.Server/Server/OpcUaServerEventSource.cs b/Libraries/Opc.Ua.Server/Server/OpcUaServerEventSource.cs index 2147eee60..676fb2c2a 100644 --- a/Libraries/Opc.Ua.Server/Server/OpcUaServerEventSource.cs +++ b/Libraries/Opc.Ua.Server/Server/OpcUaServerEventSource.cs @@ -51,92 +51,92 @@ public static partial class ServerUtils internal sealed class OpcUaServerEventSource : EventSource { // client event ids - private const int SendResponseId = 1; - private const int ServerCallId = SendResponseId + 1; - private const int SessionStateId = ServerCallId + 1; - private const int MonitoredItemReadyId = SessionStateId + 1; + private const int kSendResponseId = 1; + private const int kServerCallId = kSendResponseId + 1; + private const int kSessionStateId = kServerCallId + 1; + private const int kMonitoredItemReadyId = kSessionStateId + 1; /// /// The server messages used in event messages. /// - private const string SendResponseMessage = "ChannelId {0}: SendResponse {1}"; - private const string ServerCallMessage = "Server Call={0}, Id={1}"; - private const string SessionStateMessage = "Session {0}, Id={1}, Name={2}, ChannelId={3}, User={4}"; - private const string MonitoredItemReadyMessage = "IsReadyToPublish[{0}] {1}"; + private const string kSendResponseMessage = "ChannelId {0}: SendResponse {1}"; + private const string kServerCallMessage = "Server Call={0}, Id={1}"; + private const string kSessionStateMessage = "Session {0}, Id={1}, Name={2}, ChannelId={3}, User={4}"; + private const string kMonitoredItemReadyMessage = "IsReadyToPublish[{0}] {1}"; /// /// The Server ILogger event Ids used for event messages, when calling back to ILogger. /// - private readonly EventId SendResponseEventId = new EventId(TraceMasks.ServiceDetail, nameof(SendResponse)); - private readonly EventId ServerCallEventId = new EventId(TraceMasks.ServiceDetail, nameof(ServerCall)); - private readonly EventId SessionStateMessageEventId = new EventId(TraceMasks.Information, nameof(SessionState)); - private readonly EventId MonitoredItemReadyEventId = new EventId(TraceMasks.OperationDetail, nameof(MonitoredItemReady)); + private readonly EventId m_sendResponseEventId = new EventId(TraceMasks.ServiceDetail, nameof(SendResponse)); + private readonly EventId m_serverCallEventId = new EventId(TraceMasks.ServiceDetail, nameof(ServerCall)); + private readonly EventId m_sessionStateMessageEventId = new EventId(TraceMasks.Information, nameof(SessionState)); + private readonly EventId m_monitoredItemReadyEventId = new EventId(TraceMasks.OperationDetail, nameof(MonitoredItemReady)); /// /// The send response. /// - [Event(SendResponseId, Message = SendResponseMessage, Level = EventLevel.Verbose)] + [Event(kSendResponseId, Message = kSendResponseMessage, Level = EventLevel.Verbose)] public void SendResponse(uint channelId, uint requestId) { if (IsEnabled()) { - WriteEvent(SendResponseId, channelId, requestId); + WriteEvent(kSendResponseId, channelId, requestId); } else if ((TraceMask & TraceMasks.ServiceDetail) != 0 && Logger.IsEnabled(LogLevel.Trace)) { - LogTrace(SendResponseEventId, SendResponseMessage, channelId, requestId); + LogTrace(m_sendResponseEventId, kSendResponseMessage, channelId, requestId); } } /// /// A server call message. /// - [Event(ServerCallId, Message = ServerCallMessage, Level = EventLevel.Informational)] + [Event(kServerCallId, Message = kServerCallMessage, Level = EventLevel.Informational)] public void ServerCall(string requestType, uint requestId) { if (IsEnabled()) { - WriteEvent(ServerCallId, requestType, requestId); + WriteEvent(kServerCallId, requestType, requestId); } else if ((TraceMask & TraceMasks.ServiceDetail) != 0 && Logger.IsEnabled(LogLevel.Trace)) { - LogTrace(ServerCallEventId, ServerCallMessage, requestType, requestId); + LogTrace(m_serverCallEventId, kServerCallMessage, requestType, requestId); } } /// /// The state of the session. /// - [Event(SessionStateId, Message = SessionStateMessage, Level = EventLevel.Informational)] + [Event(kSessionStateId, Message = kSessionStateMessage, Level = EventLevel.Informational)] public void SessionState(string context, string sessionId, string sessionName, string secureChannelId, string identity) { if (IsEnabled()) { - WriteEvent(SessionStateId, context, sessionId, sessionName, secureChannelId, identity); + WriteEvent(kSessionStateId, context, sessionId, sessionName, secureChannelId, identity); } else if (Logger.IsEnabled(LogLevel.Information)) { - LogInfo(SessionStateMessageEventId, SessionStateMessage, context, sessionId, sessionName, secureChannelId, identity); + LogInfo(m_sessionStateMessageEventId, kSessionStateMessage, context, sessionId, sessionName, secureChannelId, identity); } } /// /// The state of the server session. /// - [Event(MonitoredItemReadyId, Message = MonitoredItemReadyMessage, Level = EventLevel.Verbose)] + [Event(kMonitoredItemReadyId, Message = kMonitoredItemReadyMessage, Level = EventLevel.Verbose)] public void MonitoredItemReady(uint id, string state) { if ((TraceMask & TraceMasks.OperationDetail) != 0) { if (IsEnabled()) { - WriteEvent(MonitoredItemReadyId, id, state); + WriteEvent(kMonitoredItemReadyId, id, state); } else if (Logger.IsEnabled(LogLevel.Trace)) { - LogTrace(MonitoredItemReadyEventId, MonitoredItemReadyMessage, id, state); + LogTrace(m_monitoredItemReadyEventId, kMonitoredItemReadyMessage, id, state); } } } diff --git a/Libraries/Opc.Ua.Server/Server/RequestManager.cs b/Libraries/Opc.Ua.Server/Server/RequestManager.cs index 1faa11745..c47fc21ce 100644 --- a/Libraries/Opc.Ua.Server/Server/RequestManager.cs +++ b/Libraries/Opc.Ua.Server/Server/RequestManager.cs @@ -60,6 +60,7 @@ public RequestManager(IServerInternal server) public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } /// diff --git a/Libraries/Opc.Ua.Server/Server/ServerInternalData.cs b/Libraries/Opc.Ua.Server/Server/ServerInternalData.cs index fc1f24cc2..bf2a4f07d 100644 --- a/Libraries/Opc.Ua.Server/Server/ServerInternalData.cs +++ b/Libraries/Opc.Ua.Server/Server/ServerInternalData.cs @@ -109,6 +109,7 @@ public ServerInternalData( public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } /// diff --git a/Libraries/Opc.Ua.Server/Session/Session.cs b/Libraries/Opc.Ua.Server/Session/Session.cs index 3b58b5625..fbd52f9f8 100644 --- a/Libraries/Opc.Ua.Server/Session/Session.cs +++ b/Libraries/Opc.Ua.Server/Session/Session.cs @@ -288,6 +288,7 @@ private void ReportAuditActivateSessionEvent(ServerSystemContext context) public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } /// diff --git a/Libraries/Opc.Ua.Server/Session/SessionManager.cs b/Libraries/Opc.Ua.Server/Session/SessionManager.cs index 089e8283a..4abe83bd5 100644 --- a/Libraries/Opc.Ua.Server/Session/SessionManager.cs +++ b/Libraries/Opc.Ua.Server/Session/SessionManager.cs @@ -76,6 +76,7 @@ public SessionManager( public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } /// @@ -310,10 +311,10 @@ public virtual bool ActivateSession( // check if the application has a callback which validates the identity tokens. lock (m_eventLock) { - if (m_ImpersonateUser != null) + if (m_impersonateUser != null) { ImpersonateEventArgs args = new ImpersonateEventArgs(newIdentity, userTokenPolicy, context.ChannelContext.EndpointDescription); - m_ImpersonateUser(session, args); + m_impersonateUser(session, args); if (ServiceResult.IsBad(args.IdentityValidationError)) { @@ -447,12 +448,12 @@ public virtual OperationContext ValidateRequest(RequestHeader requestHeader, Req // find session. if (!m_sessions.TryGetValue(requestHeader.AuthenticationToken, out session)) { - var Handler = m_ValidateSessionLessRequest; + var handler = m_validateSessionLessRequest; - if (Handler != null) + if (handler != null) { var args = new ValidateSessionLessRequestEventArgs(requestHeader.AuthenticationToken, requestType); - Handler(this, args); + handler(this, args); if (ServiceResult.IsBad(args.Error)) { @@ -540,9 +541,9 @@ protected virtual void RaiseSessionEvent(Session session, SessionEventReason rea switch (reason) { - case SessionEventReason.Created: { handler = m_SessionCreated; break; } - case SessionEventReason.Activated: { handler = m_SessionActivated; break; } - case SessionEventReason.Closing: { handler = m_SessionClosing; break; } + case SessionEventReason.Created: { handler = m_sessionCreated; break; } + case SessionEventReason.Activated: { handler = m_sessionActivated; break; } + case SessionEventReason.Closing: { handler = m_sessionClosing; break; } } if (handler != null) @@ -627,11 +628,11 @@ private void MonitorSessions(object data) private int m_minNonceLength; private object m_eventLock = new object(); - private event SessionEventHandler m_SessionCreated; - private event SessionEventHandler m_SessionActivated; - private event SessionEventHandler m_SessionClosing; - private event ImpersonateEventHandler m_ImpersonateUser; - private event EventHandler m_ValidateSessionLessRequest; + private event SessionEventHandler m_sessionCreated; + private event SessionEventHandler m_sessionActivated; + private event SessionEventHandler m_sessionClosing; + private event ImpersonateEventHandler m_impersonateUser; + private event EventHandler m_validateSessionLessRequest; #endregion #region ISessionManager Members @@ -642,7 +643,7 @@ public event SessionEventHandler SessionCreated { lock (m_eventLock) { - m_SessionCreated += value; + m_sessionCreated += value; } } @@ -650,7 +651,7 @@ public event SessionEventHandler SessionCreated { lock (m_eventLock) { - m_SessionCreated -= value; + m_sessionCreated -= value; } } } @@ -662,7 +663,7 @@ public event SessionEventHandler SessionActivated { lock (m_eventLock) { - m_SessionActivated += value; + m_sessionActivated += value; } } @@ -670,7 +671,7 @@ public event SessionEventHandler SessionActivated { lock (m_eventLock) { - m_SessionActivated -= value; + m_sessionActivated -= value; } } } @@ -682,7 +683,7 @@ public event SessionEventHandler SessionClosing { lock (m_eventLock) { - m_SessionClosing += value; + m_sessionClosing += value; } } @@ -690,7 +691,7 @@ public event SessionEventHandler SessionClosing { lock (m_eventLock) { - m_SessionClosing -= value; + m_sessionClosing -= value; } } } @@ -702,7 +703,7 @@ public event ImpersonateEventHandler ImpersonateUser { lock (m_eventLock) { - m_ImpersonateUser += value; + m_impersonateUser += value; } } @@ -710,7 +711,7 @@ public event ImpersonateEventHandler ImpersonateUser { lock (m_eventLock) { - m_ImpersonateUser -= value; + m_impersonateUser -= value; } } } @@ -722,7 +723,7 @@ public event EventHandler ValidateSessionLe { lock (m_eventLock) { - m_ValidateSessionLessRequest += value; + m_validateSessionLessRequest += value; } } @@ -730,7 +731,7 @@ public event EventHandler ValidateSessionLe { lock (m_eventLock) { - m_ValidateSessionLessRequest -= value; + m_validateSessionLessRequest -= value; } } } diff --git a/Libraries/Opc.Ua.Server/Subscription/SessionPublishQueue.cs b/Libraries/Opc.Ua.Server/Subscription/SessionPublishQueue.cs index 781287dec..f067369f3 100644 --- a/Libraries/Opc.Ua.Server/Subscription/SessionPublishQueue.cs +++ b/Libraries/Opc.Ua.Server/Subscription/SessionPublishQueue.cs @@ -64,6 +64,7 @@ public SessionPublishQueue(IServerInternal server, Session session, int maxPubli public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } /// diff --git a/Libraries/Opc.Ua.Server/Subscription/Subscription.cs b/Libraries/Opc.Ua.Server/Subscription/Subscription.cs index 516e06735..c0f079dc5 100644 --- a/Libraries/Opc.Ua.Server/Subscription/Subscription.cs +++ b/Libraries/Opc.Ua.Server/Subscription/Subscription.cs @@ -170,6 +170,7 @@ public Subscription( public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } /// @@ -2340,10 +2341,10 @@ private enum TraceStateId /// private void TraceState(LogLevel logLevel, TraceStateId id, string context) { - const string DeletedMessage = "Subscription {0}, SessionId={1}, Id={2}, SeqNo={3}, MessageCount={4}"; - const string ConfigMessage = "Subscription {0}, SessionId={1}, Id={2}, Priority={3}, Publishing={4}, KeepAlive={5}, LifeTime={6}, MaxNotifications={7}, Enabled={8}"; - const string MonitorMessage = "Subscription {0}, Id={1}, KeepAliveCount={2}, LifeTimeCount={3}, WaitingForPublish={4}, SeqNo={5}, ItemCount={6}, ItemsToCheck={7}, ItemsToPublish={8}, MessageCount={9}"; - const string ItemsMessage = "Subscription {0}, Id={1}, ItemCount={2}, ItemsToCheck={3}, ItemsToPublish={4}"; + const string deletedMessage = "Subscription {0}, SessionId={1}, Id={2}, SeqNo={3}, MessageCount={4}"; + const string configMessage = "Subscription {0}, SessionId={1}, Id={2}, Priority={3}, Publishing={4}, KeepAlive={5}, LifeTime={6}, MaxNotifications={7}, Enabled={8}"; + const string monitorMessage = "Subscription {0}, Id={1}, KeepAliveCount={2}, LifeTimeCount={3}, WaitingForPublish={4}, SeqNo={5}, ItemCount={6}, ItemsToCheck={7}, ItemsToPublish={8}, MessageCount={9}"; + const string itemsMessage = "Subscription {0}, Id={1}, ItemCount={2}, ItemsToCheck={3}, ItemsToPublish={4}"; if (!Utils.Logger.IsEnabled(logLevel)) { @@ -2366,24 +2367,24 @@ private void TraceState(LogLevel logLevel, TraceStateId id, string context) switch (id) { case TraceStateId.Deleted: - Utils.Log(logLevel, DeletedMessage, context, m_session?.Id, m_id, + Utils.Log(logLevel, deletedMessage, context, m_session?.Id, m_id, sequenceNumber, sentMessages); break; case TraceStateId.Config: - Utils.Log(logLevel, ConfigMessage, context, m_session?.Id, m_id, + Utils.Log(logLevel, configMessage, context, m_session?.Id, m_id, m_priority, m_publishingInterval, m_maxKeepAliveCount, m_maxLifetimeCount, m_maxNotificationsPerPublish, publishingEnabled); break; case TraceStateId.Items: - Utils.Log(logLevel, ItemsMessage, context, m_id, + Utils.Log(logLevel, itemsMessage, context, m_id, monitoredItems, itemsToCheck, itemsToPublish); break; case TraceStateId.Publish: case TraceStateId.Monitor: - Utils.Log(logLevel, MonitorMessage, context, m_id, m_keepAliveCounter, m_lifetimeCounter, + Utils.Log(logLevel, monitorMessage, context, m_id, m_keepAliveCounter, m_lifetimeCounter, waitingForPublish, sequenceNumber, monitoredItems, itemsToCheck, itemsToPublish, sentMessages); break; diff --git a/Libraries/Opc.Ua.Server/Subscription/SubscriptionManager.cs b/Libraries/Opc.Ua.Server/Subscription/SubscriptionManager.cs index 0c07b704a..3ba5afad2 100644 --- a/Libraries/Opc.Ua.Server/Subscription/SubscriptionManager.cs +++ b/Libraries/Opc.Ua.Server/Subscription/SubscriptionManager.cs @@ -80,6 +80,7 @@ public SubscriptionManager( public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } /// diff --git a/Stack/.editorconfig b/Stack/.editorconfig deleted file mode 100644 index cec760eb1..000000000 --- a/Stack/.editorconfig +++ /dev/null @@ -1,10 +0,0 @@ -# Editorconfig for Core Stack - -root = false - -# Diagnostic settings specific to core -[*.cs] - -# RCS1090: Add call to 'ConfigureAwait' (or vice versa) -dotnet_diagnostic.RCS1090.severity = warning - diff --git a/Stack/Opc.Ua.Bindings.Https/Stack/Https/HttpsTransportChannel.cs b/Stack/Opc.Ua.Bindings.Https/Stack/Https/HttpsTransportChannel.cs index 94a778725..3474f3061 100644 --- a/Stack/Opc.Ua.Bindings.Https/Stack/Https/HttpsTransportChannel.cs +++ b/Stack/Opc.Ua.Bindings.Https/Stack/Https/HttpsTransportChannel.cs @@ -347,7 +347,11 @@ public async Task SendRequestAsync(IServiceRequest request, Ca content.Headers.ContentType = s_mediaTypeHeaderValue; var result = await m_client.PostAsync(m_url, content, ct).ConfigureAwait(false); result.EnsureSuccessStatusCode(); +#if NET6_0_OR_GREATER + Stream responseContent = await result.Content.ReadAsStreamAsync(ct).ConfigureAwait(false); +#else Stream responseContent = await result.Content.ReadAsStreamAsync().ConfigureAwait(false); +#endif return BinaryDecoder.DecodeMessage(responseContent, null, m_quotas.MessageContext) as IServiceResponse; } catch (Exception ex) diff --git a/Stack/Opc.Ua.Bindings.Https/Stack/Https/HttpsTransportListener.cs b/Stack/Opc.Ua.Bindings.Https/Stack/Https/HttpsTransportListener.cs index 3a0692891..4427a318b 100644 --- a/Stack/Opc.Ua.Bindings.Https/Stack/Https/HttpsTransportListener.cs +++ b/Stack/Opc.Ua.Bindings.Https/Stack/Https/HttpsTransportListener.cs @@ -110,6 +110,7 @@ public HttpsTransportListener() public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } /// @@ -236,10 +237,12 @@ public void Start() httpsOptions.ClientCertificateMode = ClientCertificateMode.NoCertificate; httpsOptions.ServerCertificate = m_serverCert; +#if NET462 // note: although security tools recommend 'None' here, // it only works on .NET 4.6.2 if Tls12 is used -#if NET462 +#pragma warning disable CA5398 // Avoid hardcoded SslProtocols values httpsOptions.SslProtocols = SslProtocols.Tls12; +#pragma warning restore CA5398 // Avoid hardcoded SslProtocols values #else httpsOptions.SslProtocols = SslProtocols.None; #endif @@ -336,7 +339,7 @@ public async Task SendAsync(HttpContext context) { foreach (string value in context.Request.Headers["Authorization"]) { - if (value.StartsWith("Bearer")) + if (value.StartsWith("Bearer", StringComparison.OrdinalIgnoreCase)) { // note: use NodeId(string, uint) to avoid the NodeId.Parse call. input.RequestHeader.AuthenticationToken = new NodeId(value.Substring("Bearer ".Length).Trim(), 0); @@ -353,11 +356,11 @@ public async Task SendAsync(HttpContext context) EndpointDescription endpoint = null; foreach (var ep in m_descriptions) { - if (ep.EndpointUrl.StartsWith(Utils.UriSchemeHttps)) + if (ep.EndpointUrl.StartsWith(Utils.UriSchemeHttps, StringComparison.Ordinal)) { if (!string.IsNullOrEmpty(header)) { - if (string.Compare(ep.SecurityPolicyUri, header) != 0) + if (!string.Equals(ep.SecurityPolicyUri, header, StringComparison.Ordinal)) { continue; } diff --git a/Stack/Opc.Ua.Core/Schema/ApplicationConfiguration.cs b/Stack/Opc.Ua.Core/Schema/ApplicationConfiguration.cs index 09373a004..3344693f9 100644 --- a/Stack/Opc.Ua.Core/Schema/ApplicationConfiguration.cs +++ b/Stack/Opc.Ua.Core/Schema/ApplicationConfiguration.cs @@ -605,7 +605,7 @@ public TransportConfigurationCollection() { } /// Initializes the collection from another collection. /// /// A collection of values to add to this new collection - /// + /// /// is null. /// public TransportConfigurationCollection(IEnumerable collection) : base(collection) { } @@ -730,7 +730,7 @@ public ServerSecurityPolicyCollection() { } /// Initializes the collection from another collection. /// /// A collection of values to add to this new collection - /// + /// /// is null. /// public ServerSecurityPolicyCollection(IEnumerable collection) : base(collection) { } @@ -1186,7 +1186,7 @@ public SamplingRateGroupCollection() { } /// Initializes the collection from another collection. /// /// A collection of values to add to this new collection - /// + /// /// is null. /// public SamplingRateGroupCollection(IEnumerable collection) : base(collection) { } @@ -2177,7 +2177,7 @@ public ReverseConnectClientCollection() { } /// Initializes the collection from another collection. /// /// A collection of values to add to this new collection - /// + /// /// is null. /// public ReverseConnectClientCollection(IEnumerable collection) : base(collection) { } @@ -2438,7 +2438,7 @@ public ReverseConnectClientEndpointCollection() { } /// Initializes the collection from another collection. /// /// A collection of values to add to this new collection - /// + /// /// is null. /// public ReverseConnectClientEndpointCollection(IEnumerable collection) : base(collection) { } @@ -2649,7 +2649,7 @@ public ServerRegistrationCollection() { } /// Initializes the collection from another collection. /// /// A collection of values to add to this new collection - /// + /// /// is null. /// public ServerRegistrationCollection(IEnumerable collection) : base(collection) { } diff --git a/Stack/Opc.Ua.Core/Security/Certificates/CertificateIdentifier.cs b/Stack/Opc.Ua.Core/Security/Certificates/CertificateIdentifier.cs index 5f7809d7d..7fe1c30f5 100644 --- a/Stack/Opc.Ua.Core/Security/Certificates/CertificateIdentifier.cs +++ b/Stack/Opc.Ua.Core/Security/Certificates/CertificateIdentifier.cs @@ -30,14 +30,14 @@ public partial class CertificateIdentifier : IFormattable /// /// Formats the value of the current instance using the specified format. /// - /// The specifying the format to use. + /// The specifying the format to use. /// -or- - /// null to use the default format defined for the type of the implementation. - /// The to use to format the value. + /// null to use the default format defined for the type of the implementation. + /// The to use to format the value. /// -or- /// null to obtain the numeric format information from the current locale setting of the operating system. /// - /// A containing the value of the current instance in the specified format. + /// A containing the value of the current instance in the specified format. /// public string ToString(string format, IFormatProvider formatProvider) { @@ -52,10 +52,10 @@ public string ToString(string format, IFormatProvider formatProvider) #region Overridden Methods /// - /// Returns a that represents the current . + /// Returns a that represents the current . /// /// - /// A that represents the current . + /// A that represents the current . /// public override string ToString() { @@ -496,7 +496,7 @@ public ICertificateStore OpenStore() #region Private Methods /// - /// Checks if the certificate data represents a valid X509v3 certificate. + /// Checks if the certificate data represents a valid X509v3 certificate header. /// /// The raw data of a object. /// @@ -517,7 +517,7 @@ private static bool IsValidCertificateBlob(byte[] rawData) } // extract length. - int length = 0; + int length; byte octet = rawData[1]; // check for short for encoding. @@ -598,6 +598,7 @@ public partial class CertificateIdentifierCollection : ICertificateStore public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } /// diff --git a/Stack/Opc.Ua.Core/Security/Certificates/CertificateStoreIdentifier.cs b/Stack/Opc.Ua.Core/Security/Certificates/CertificateStoreIdentifier.cs index b28a49401..65aaa1f8b 100644 --- a/Stack/Opc.Ua.Core/Security/Certificates/CertificateStoreIdentifier.cs +++ b/Stack/Opc.Ua.Core/Security/Certificates/CertificateStoreIdentifier.cs @@ -33,14 +33,14 @@ public partial class CertificateStoreIdentifier : IFormattable /// /// Formats the value of the current instance using the specified format. /// - /// The specifying the format to use. + /// The specifying the format to use. /// -or- - /// null to use the default format defined for the type of the implementation. - /// The to use to format the value. + /// null to use the default format defined for the type of the implementation. + /// The to use to format the value. /// -or- /// null to obtain the numeric format information from the current locale setting of the operating system. /// - /// A containing the value of the current instance in the specified format. + /// A containing the value of the current instance in the specified format. /// public string ToString(string format, IFormatProvider formatProvider) { @@ -55,10 +55,10 @@ public string ToString(string format, IFormatProvider formatProvider) #region Overridden Methods /// - /// Returns a that represents the current . + /// Returns a that represents the current . /// /// - /// A that represents the current . + /// A that represents the current . /// public override string ToString() { diff --git a/Stack/Opc.Ua.Core/Stack/Client/UaChannelBase.cs b/Stack/Opc.Ua.Core/Stack/Client/UaChannelBase.cs index b4eb78768..d1ad384ee 100644 --- a/Stack/Opc.Ua.Core/Stack/Client/UaChannelBase.cs +++ b/Stack/Opc.Ua.Core/Stack/Client/UaChannelBase.cs @@ -130,7 +130,7 @@ public TransportChannelFeatures SupportedFeatures return m_uaBypassChannel.SupportedFeatures; } - return TransportChannelFeatures.Reconnect | TransportChannelFeatures.BeginSendRequest | + return TransportChannelFeatures.Reconnect | TransportChannelFeatures.BeginSendRequest | TransportChannelFeatures.BeginClose | TransportChannelFeatures.SendRequestAsync; } } diff --git a/Stack/Opc.Ua.Core/Stack/Configuration/ConfigurationWatcher.cs b/Stack/Opc.Ua.Core/Stack/Configuration/ConfigurationWatcher.cs index 95dfdd3f3..ba58edb65 100644 --- a/Stack/Opc.Ua.Core/Stack/Configuration/ConfigurationWatcher.cs +++ b/Stack/Opc.Ua.Core/Stack/Configuration/ConfigurationWatcher.cs @@ -48,6 +48,7 @@ public ConfigurationWatcher(ApplicationConfiguration configuration) public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } /// diff --git a/Stack/Opc.Ua.Core/Stack/Configuration/ConfiguredEndpoints.cs b/Stack/Opc.Ua.Core/Stack/Configuration/ConfiguredEndpoints.cs index b2d894504..64f7056ca 100644 --- a/Stack/Opc.Ua.Core/Stack/Configuration/ConfiguredEndpoints.cs +++ b/Stack/Opc.Ua.Core/Stack/Configuration/ConfiguredEndpoints.cs @@ -275,25 +275,25 @@ public int IndexOf(ConfiguredEndpoint item) } /// - /// Inserts an item to the at the specified index. + /// Inserts an item to the at the specified index. /// /// The zero-based index at which should be inserted. - /// The object to insert into the . - /// - /// is not a valid index in the . - /// The is read-only. + /// The object to insert into the . + /// + /// is not a valid index in the . + /// The is read-only. public void Insert(int index, ConfiguredEndpoint item) { Insert(item, index); } /// - /// Removes the item at the specified index. + /// Removes the item at the specified index. /// /// The zero-based index of the item to remove. - /// - /// is not a valid index in the . - /// The is read-only. + /// + /// is not a valid index in the . + /// The is read-only. public void RemoveAt(int index) { if (index < 0 || index >= m_endpoints.Count) throw new ArgumentOutOfRangeException(nameof(index)); diff --git a/Stack/Opc.Ua.Core/Stack/Nodes/Node.cs b/Stack/Opc.Ua.Core/Stack/Nodes/Node.cs index a12e1a4ea..9e612b359 100644 --- a/Stack/Opc.Ua.Core/Stack/Nodes/Node.cs +++ b/Stack/Opc.Ua.Core/Stack/Nodes/Node.cs @@ -14,7 +14,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. using System.Collections.Generic; namespace Opc.Ua -{ +{ #region Node Class /// /// A node in the server address space. @@ -30,12 +30,12 @@ public Node(ReferenceDescription reference) { Initialize(); - m_nodeId = (NodeId)reference.NodeId; - m_nodeClass = reference.NodeClass; - m_browseName = reference.BrowseName; + m_nodeId = (NodeId)reference.NodeId; + m_nodeClass = reference.NodeClass; + m_browseName = reference.BrowseName; m_displayName = reference.DisplayName; } - + /// /// Creates a node from another node (copies attributes - not references). /// @@ -46,12 +46,12 @@ public Node(ILocalNode source) if (source != null) { - this.NodeId = source.NodeId; - this.NodeClass = source.NodeClass; - this.BrowseName = source.BrowseName; - this.DisplayName = source.DisplayName; - this.Description = source.Description; - this.WriteMask = (uint)source.WriteMask; + this.NodeId = source.NodeId; + this.NodeClass = source.NodeClass; + this.BrowseName = source.BrowseName; + this.DisplayName = source.DisplayName; + this.Description = source.Description; + this.WriteMask = (uint)source.WriteMask; this.UserWriteMask = (uint)source.UserWriteMask; } } @@ -79,7 +79,7 @@ public static Node Copy(ILocalNode source) case NodeClass.Method: return new MethodNode(source); case NodeClass.View: return new ViewNode(source); } - + if (source is IObject) return new ObjectNode(source); if (source is IVariable) return new VariableNode(source); if (source is IObjectType) return new ObjectTypeNode(source); @@ -87,7 +87,7 @@ public static Node Copy(ILocalNode source) if (source is IDataType) return new DataTypeNode(source); if (source is IReferenceType) return new ReferenceTypeNode(source); if (source is IMethod) return new MethodNode(source); - if (source is IView) return new ViewNode(source); + if (source is IView) return new ViewNode(source); return new Node(source); } @@ -100,7 +100,7 @@ public static Node Copy(ILocalNode source) /// The handle. public object Handle { - get { return m_handle; } + get { return m_handle; } set { m_handle = value; } } #endregion @@ -128,10 +128,10 @@ public string ToString(string format, IFormatProvider provider) return Utils.Format("(unknown {0})", ((NodeClass)m_nodeClass).ToString().ToLower()); } - + throw new FormatException(Utils.Format("Invalid format string: '{0}'.", format)); } - + /// /// Returns the string representation of the object. /// @@ -143,7 +143,7 @@ public override string ToString() return ToString(null, null); } #endregion - + #region INode Methods /// /// The node identifier. @@ -151,7 +151,7 @@ public override string ToString() /// The node identifier. ExpandedNodeId Opc.Ua.INode.NodeId { - get { return m_nodeId; } + get { return m_nodeId; } } /// @@ -160,18 +160,18 @@ ExpandedNodeId Opc.Ua.INode.NodeId /// The type definition identifier. public ExpandedNodeId TypeDefinitionId { - get - { - if (m_referenceTable != null) - { - return m_referenceTable.FindTarget(ReferenceTypeIds.HasTypeDefinition, false, false, null, 0); - } + get + { + if (m_referenceTable != null) + { + return m_referenceTable.FindTarget(ReferenceTypeIds.HasTypeDefinition, false, false, null, 0); + } - return null; - } + return null; + } } #endregion - + #region ILocalNode Methods /// /// A synchronization object that can be used to safely access the node. @@ -179,7 +179,7 @@ public ExpandedNodeId TypeDefinitionId /// The data lock. public object DataLock { - get { return this; } + get { return this; } } /// @@ -188,8 +188,8 @@ public object DataLock /// The write mask. AttributeWriteMask Opc.Ua.ILocalNode.WriteMask { - get { return (AttributeWriteMask)m_writeMask; } - set { m_writeMask = (uint)value; } + get { return (AttributeWriteMask)m_writeMask; } + set { m_writeMask = (uint)value; } } /// @@ -198,16 +198,16 @@ AttributeWriteMask Opc.Ua.ILocalNode.WriteMask /// The user write mask. AttributeWriteMask Opc.Ua.ILocalNode.UserWriteMask { - get { return (AttributeWriteMask)m_userWriteMask; } - set { m_userWriteMask = (uint)value; } + get { return (AttributeWriteMask)m_userWriteMask; } + set { m_userWriteMask = (uint)value; } } /// /// The identifier for the ModellingRule node. /// /// The modelling rule. - public NodeId ModellingRule - { + public NodeId ModellingRule + { get { return (NodeId)ReferenceTable.FindTarget(ReferenceTypeIds.HasModellingRule, false, false, null, 0); @@ -276,7 +276,7 @@ public ServiceResult Read(IOperationContext context, uint attributeId, DataValue return StatusCodes.BadAttributeIdInvalid; } - value.Value = Read(attributeId); + value.Value = Read(attributeId); value.StatusCode = StatusCodes.Good; if (attributeId == Attributes.Value) @@ -299,7 +299,7 @@ public ServiceResult Write(uint attributeId, DataValue value) { return StatusCodes.BadAttributeIdInvalid; } - + // check for read only attributes. switch (attributeId) { @@ -330,17 +330,17 @@ public ServiceResult Write(uint attributeId, DataValue value) /// The reference table. public ReferenceCollection ReferenceTable { - get - { - if (m_referenceTable == null) - { - m_referenceTable = new ReferenceCollection(); - } + get + { + if (m_referenceTable == null) + { + m_referenceTable = new ReferenceCollection(); + } - return m_referenceTable; - } + return m_referenceTable; + } } - + /// /// Returns true if the reference exist. /// @@ -349,13 +349,13 @@ public ReferenceCollection ReferenceTable /// The target id. /// True if the reference exist. public bool ReferenceExists( - NodeId referenceTypeId, - bool isInverse, + NodeId referenceTypeId, + bool isInverse, ExpandedNodeId targetId) { return ReferenceTable.Exists(referenceTypeId, isInverse, targetId, false, null); } - + /// /// Returns all targets of the specified reference type. /// @@ -363,8 +363,8 @@ public bool ReferenceExists( /// if set to true [is inverse]. /// All targets of the specified reference type. public IList Find( - NodeId referenceTypeId, - bool isInverse) + NodeId referenceTypeId, + bool isInverse) { return ReferenceTable.Find(referenceTypeId, isInverse, false, null); } @@ -377,13 +377,13 @@ public IList Find( /// The index. /// A target of the specified reference type. public ExpandedNodeId FindTarget( - NodeId referenceTypeId, - bool isInverse, - int index) + NodeId referenceTypeId, + bool isInverse, + int index) { return ReferenceTable.FindTarget(referenceTypeId, isInverse, false, null, index); } - + /// /// Returns the supertype for the Node if one exists. /// @@ -394,15 +394,15 @@ public ExpandedNodeId FindTarget( /// public ExpandedNodeId GetSuperType(ITypeTable typeTree) { - if (m_referenceTable != null) - { - return m_referenceTable.FindTarget(ReferenceTypeIds.HasSubtype, true, typeTree != null, typeTree, 0); - } + if (m_referenceTable != null) + { + return m_referenceTable.FindTarget(ReferenceTypeIds.HasSubtype, true, typeTree != null, typeTree, 0); + } - return null; + return null; } #endregion - + #region Protected Methods /// /// Reads the value of an attribute. @@ -413,16 +413,16 @@ protected virtual object Read(uint attributeId) { switch (attributeId) { - case Attributes.NodeId: return m_nodeId; - case Attributes.NodeClass: return m_nodeClass; - case Attributes.BrowseName: return m_browseName; - case Attributes.DisplayName: return m_displayName; - case Attributes.Description: return m_description; - case Attributes.WriteMask: return m_writeMask; - case Attributes.UserWriteMask: return m_userWriteMask; - case Attributes.RolePermissions: return m_rolePermissions; + case Attributes.NodeId: return m_nodeId; + case Attributes.NodeClass: return m_nodeClass; + case Attributes.BrowseName: return m_browseName; + case Attributes.DisplayName: return m_displayName; + case Attributes.Description: return m_description; + case Attributes.WriteMask: return m_writeMask; + case Attributes.UserWriteMask: return m_userWriteMask; + case Attributes.RolePermissions: return m_rolePermissions; case Attributes.UserRolePermissions: return m_userRolePermissions; - case Attributes.AccessRestrictions: return m_accessRestrictions; + case Attributes.AccessRestrictions: return m_accessRestrictions; } return false; @@ -438,14 +438,14 @@ protected virtual ServiceResult Write(uint attributeId, object value) { switch (attributeId) { - case Attributes.BrowseName: { m_browseName = (QualifiedName)value; break; } - case Attributes.DisplayName: { m_displayName = (LocalizedText)value; break; } - case Attributes.Description: { m_description = (LocalizedText)value; break; } - case Attributes.WriteMask: { m_writeMask = (uint)value; break; } - case Attributes.UserWriteMask: { m_userWriteMask = (uint)value; break; } - case Attributes.RolePermissions: { m_rolePermissions = (RolePermissionTypeCollection)value; break; } + case Attributes.BrowseName: { m_browseName = (QualifiedName)value; break; } + case Attributes.DisplayName: { m_displayName = (LocalizedText)value; break; } + case Attributes.Description: { m_description = (LocalizedText)value; break; } + case Attributes.WriteMask: { m_writeMask = (uint)value; break; } + case Attributes.UserWriteMask: { m_userWriteMask = (uint)value; break; } + case Attributes.RolePermissions: { m_rolePermissions = (RolePermissionTypeCollection)value; break; } case Attributes.UserRolePermissions: { m_userRolePermissions = (RolePermissionTypeCollection)value; break; } - case Attributes.AccessRestrictions: { m_accessRestrictions = (ushort)value; break; } + case Attributes.AccessRestrictions: { m_accessRestrictions = (ushort)value; break; } default: { @@ -463,11 +463,11 @@ protected virtual ServiceResult Write(uint attributeId, object value) #endregion } #endregion - + #region ReferenceNode Class - /// - /// A node in the server address space. - /// + /// + /// A node in the server address space. + /// public partial class ReferenceNode : IReference, IComparable, IFormattable { #region Constructors @@ -480,11 +480,11 @@ public partial class ReferenceNode : IReference, IComparable, IFormattable public ReferenceNode(NodeId referenceTypeId, bool isInverse, ExpandedNodeId targetId) { m_referenceTypeId = referenceTypeId; - m_isInverse = isInverse; - m_targetId = targetId; + m_isInverse = isInverse; + m_targetId = targetId; } #endregion - + #region IFormattable Members /// /// Returns a string representation of the HierarchyBrowsePath. @@ -516,7 +516,7 @@ public string ToString(string format, IFormatProvider provider) { referenceType = ReferenceTypes.GetBrowseName((uint)m_referenceTypeId.Identifier); } - + if (referenceType == null) { referenceType = Utils.Format("{0}", m_referenceTypeId); @@ -566,15 +566,15 @@ public override int GetHashCode() /// ReferenceNode A. /// The ReferenceNode B. /// The result of the operator.Returns true if the objects are equal. - public static bool operator==(ReferenceNode a, object b) - { - if (Object.ReferenceEquals(a, null)) - { - return Object.ReferenceEquals(b, null); - } - - return a.CompareTo(b) == 0; - } + public static bool operator ==(ReferenceNode a, object b) + { + if (Object.ReferenceEquals(a, null)) + { + return Object.ReferenceEquals(b, null); + } + + return a.CompareTo(b) == 0; + } /// /// Returns true if the objects are not equal. @@ -582,17 +582,17 @@ public override int GetHashCode() /// ReferenceNode A. /// The ReferenceNode B. /// The result of the operator.Returns true if the objects are not equal. - public static bool operator!=(ReferenceNode a, object b) - { - if (Object.ReferenceEquals(a, null)) - { - return !Object.ReferenceEquals(b, null); - } - - return a.CompareTo(b) != 0; - } - #endregion - + public static bool operator !=(ReferenceNode a, object b) + { + if (Object.ReferenceEquals(a, null)) + { + return !Object.ReferenceEquals(b, null); + } + + return a.CompareTo(b) != 0; + } + #endregion + #region IComparable Members /// /// Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. @@ -630,27 +630,27 @@ public int CompareTo(object obj) { return -1; } - + if (Object.ReferenceEquals(m_referenceTypeId, null)) { - return (Object.ReferenceEquals(reference.m_referenceTypeId, null))?0:-1; + return (Object.ReferenceEquals(reference.m_referenceTypeId, null)) ? 0 : -1; } int result = m_referenceTypeId.CompareTo(reference.m_referenceTypeId); if (result != 0) { - return result; + return result; } if (reference.m_isInverse != this.m_isInverse) { - return (this.m_isInverse)?+1:-1; + return (this.m_isInverse) ? +1 : -1; } - + if (Object.ReferenceEquals(m_targetId, null)) { - return (Object.ReferenceEquals(reference.m_targetId, null))?0:-1; + return (Object.ReferenceEquals(reference.m_targetId, null)) ? 0 : -1; } return m_targetId.CompareTo(reference.m_targetId); @@ -696,9 +696,9 @@ public TypeNode(ILocalNode source) : base(source) #endregion #region VariableNode Class - /// - /// A variable node in the server address space. - /// + /// + /// A variable node in the server address space. + /// public partial class VariableNode : IVariable { #region Constructors @@ -737,7 +737,7 @@ public VariableNode(ILocalNode source) : base(source) } } #endregion - + #region IVariableBase Members /// /// The value attribute. @@ -826,13 +826,13 @@ protected override object Read(uint attributeId) { switch (attributeId) { - case Attributes.DataType: return m_dataType; - case Attributes.ValueRank: return m_valueRank; - case Attributes.AccessLevel: return m_accessLevel; - case Attributes.UserAccessLevel: return m_userAccessLevel; + case Attributes.DataType: return m_dataType; + case Attributes.ValueRank: return m_valueRank; + case Attributes.AccessLevel: return m_accessLevel; + case Attributes.UserAccessLevel: return m_userAccessLevel; case Attributes.MinimumSamplingInterval: return m_minimumSamplingInterval; - case Attributes.Historizing: return m_historizing; - case Attributes.AccessLevelEx: return m_accessLevelEx; + case Attributes.Historizing: return m_historizing; + case Attributes.AccessLevelEx: return m_accessLevelEx; // values are copied when the are written so then can be safely returned. case Attributes.Value: @@ -865,11 +865,11 @@ protected override ServiceResult Write(uint attributeId, object value) { switch (attributeId) { - case Attributes.AccessLevel: { m_accessLevel = (byte)value; return ServiceResult.Good; } - case Attributes.UserAccessLevel: { m_userAccessLevel = (byte)value; return ServiceResult.Good; } - case Attributes.AccessLevelEx: { m_accessLevelEx = (uint)value; return ServiceResult.Good; } - case Attributes.MinimumSamplingInterval: { m_minimumSamplingInterval = (int)value; return ServiceResult.Good; } - case Attributes.Historizing: { m_historizing = (bool)value; return ServiceResult.Good; } + case Attributes.AccessLevel: { m_accessLevel = (byte)value; return ServiceResult.Good; } + case Attributes.UserAccessLevel: { m_userAccessLevel = (byte)value; return ServiceResult.Good; } + case Attributes.AccessLevelEx: { m_accessLevelEx = (uint)value; return ServiceResult.Good; } + case Attributes.MinimumSamplingInterval: { m_minimumSamplingInterval = (int)value; return ServiceResult.Good; } + case Attributes.Historizing: { m_historizing = (bool)value; return ServiceResult.Good; } // values are copied when the are written so then can be safely returned on read. case Attributes.Value: @@ -878,8 +878,8 @@ protected override ServiceResult Write(uint attributeId, object value) return ServiceResult.Good; } - case Attributes.DataType: - { + case Attributes.DataType: + { NodeId dataType = (NodeId)value; // must ensure the value is of the correct datatype. @@ -891,7 +891,7 @@ protected override ServiceResult Write(uint attributeId, object value) m_dataType = dataType; return ServiceResult.Good; } - + case Attributes.ValueRank: { int valueRank = (int)value; @@ -902,10 +902,10 @@ protected override ServiceResult Write(uint attributeId, object value) } m_valueRank = valueRank; - + return ServiceResult.Good; } - + case Attributes.ArrayDimensions: { m_arrayDimensions = new UInt32Collection((uint[])value); @@ -925,7 +925,7 @@ protected override ServiceResult Write(uint attributeId, object value) } return base.Write(attributeId, value); - } + } #endregion } #endregion @@ -935,7 +935,7 @@ protected override ServiceResult Write(uint attributeId, object value) /// An object node in the server address space. /// public partial class ObjectNode : IObject - { + { #region Constructors /// /// Creates a node from another node (copies attributes - not references). @@ -953,7 +953,7 @@ public ObjectNode(ILocalNode source) : base(source) } } #endregion - + #region Overridden Methods /// /// Whether the node supports the specified attribute. @@ -1006,13 +1006,13 @@ protected override ServiceResult Write(uint attributeId, object value) #endregion } #endregion - + #region ObjectTypeNode Class - /// - /// An object type node in the server address space. - /// + /// + /// An object type node in the server address space. + /// public partial class ObjectTypeNode : IObjectType - { + { #region Constructors /// /// Creates a node from another node (copies attributes - not references). @@ -1083,13 +1083,13 @@ protected override ServiceResult Write(uint attributeId, object value) #endregion } #endregion - + #region VariableTypeNode Class /// /// A variable type node in the server address space. /// public partial class VariableTypeNode : IVariableType - { + { #region Constructors /// /// Creates a node from another node (copies attributes - not references). @@ -1115,7 +1115,7 @@ public VariableTypeNode(ILocalNode source) : base(source) } } #endregion - + #region IVariableBase Members /// /// The value attribute. @@ -1204,9 +1204,9 @@ protected override object Read(uint attributeId) { switch (attributeId) { - case Attributes.DataType: return m_dataType; - case Attributes.ValueRank: return m_valueRank; - + case Attributes.DataType: return m_dataType; + case Attributes.ValueRank: return m_valueRank; + // values are copied when the are written so then can be safely returned. case Attributes.Value: { @@ -1236,7 +1236,7 @@ protected override object Read(uint attributeId) protected override ServiceResult Write(uint attributeId, object value) { switch (attributeId) - { + { // values are copied when the are written so then can be safely returned on read. case Attributes.Value: { @@ -1244,8 +1244,8 @@ protected override ServiceResult Write(uint attributeId, object value) return ServiceResult.Good; } - case Attributes.DataType: - { + case Attributes.DataType: + { NodeId dataType = (NodeId)value; // must ensure the value is of the correct datatype. @@ -1257,7 +1257,7 @@ protected override ServiceResult Write(uint attributeId, object value) m_dataType = dataType; return ServiceResult.Good; } - + case Attributes.ValueRank: { int valueRank = (int)value; @@ -1271,7 +1271,7 @@ protected override ServiceResult Write(uint attributeId, object value) return ServiceResult.Good; } - + case Attributes.ArrayDimensions: { m_arrayDimensions = new UInt32Collection((uint[])value); @@ -1280,8 +1280,8 @@ protected override ServiceResult Write(uint attributeId, object value) if (m_arrayDimensions.Count > 0) { if (m_valueRank != m_arrayDimensions.Count) - { - m_valueRank = m_arrayDimensions.Count; + { + m_valueRank = m_arrayDimensions.Count; m_value.Value = null; } } @@ -1297,10 +1297,10 @@ protected override ServiceResult Write(uint attributeId, object value) #endregion #region ReferenceTypeNode Class - /// - /// A reference type node in the server address space. - /// - public partial class ReferenceTypeNode :IReferenceType + /// + /// A reference type node in the server address space. + /// + public partial class ReferenceTypeNode : IReferenceType { #region Constructors /// @@ -1321,7 +1321,7 @@ public ReferenceTypeNode(ILocalNode source) : base(source) } } #endregion - + #region Overridden Methods /// /// Whether the node supports the specified attribute. @@ -1352,9 +1352,9 @@ protected override object Read(uint attributeId) { switch (attributeId) { - case Attributes.IsAbstract: return m_isAbstract; - case Attributes.InverseName: return m_inverseName; - case Attributes.Symmetric: return m_symmetric; + case Attributes.IsAbstract: return m_isAbstract; + case Attributes.InverseName: return m_inverseName; + case Attributes.Symmetric: return m_symmetric; } return base.Read(attributeId); @@ -1370,9 +1370,9 @@ protected override ServiceResult Write(uint attributeId, object value) { switch (attributeId) { - case Attributes.IsAbstract: { m_isAbstract = (bool)value; return ServiceResult.Good; } + case Attributes.IsAbstract: { m_isAbstract = (bool)value; return ServiceResult.Good; } case Attributes.InverseName: { m_inverseName = (LocalizedText)value; return ServiceResult.Good; } - case Attributes.Symmetric: { m_symmetric = (bool)value; return ServiceResult.Good; } + case Attributes.Symmetric: { m_symmetric = (bool)value; return ServiceResult.Good; } } return base.Write(attributeId, value); @@ -1380,11 +1380,11 @@ protected override ServiceResult Write(uint attributeId, object value) #endregion } #endregion - + #region MethodNode Class - /// - /// A method node in the server address space. - /// + /// + /// A method node in the server address space. + /// public partial class MethodNode : IMethod { #region Constructors @@ -1435,8 +1435,8 @@ protected override object Read(uint attributeId) { switch (attributeId) { - case Attributes.Executable: return m_executable; - case Attributes.UserExecutable: return m_userExecutable; + case Attributes.Executable: return m_executable; + case Attributes.UserExecutable: return m_userExecutable; } return base.Read(attributeId); @@ -1452,7 +1452,7 @@ protected override ServiceResult Write(uint attributeId, object value) { switch (attributeId) { - case Attributes.Executable: { m_executable = (bool)value; return ServiceResult.Good; } + case Attributes.Executable: { m_executable = (bool)value; return ServiceResult.Good; } case Attributes.UserExecutable: { m_userExecutable = (bool)value; return ServiceResult.Good; } } @@ -1461,11 +1461,11 @@ protected override ServiceResult Write(uint attributeId, object value) #endregion } #endregion - + #region ViewNode Class - /// - /// A view node in the server address space. - /// + /// + /// A view node in the server address space. + /// public partial class ViewNode : IView { #region Constructors @@ -1516,8 +1516,8 @@ protected override object Read(uint attributeId) { switch (attributeId) { - case Attributes.EventNotifier: return m_eventNotifier; - case Attributes.ContainsNoLoops: return m_containsNoLoops; + case Attributes.EventNotifier: return m_eventNotifier; + case Attributes.ContainsNoLoops: return m_containsNoLoops; } return base.Read(attributeId); @@ -1533,7 +1533,7 @@ protected override ServiceResult Write(uint attributeId, object value) { switch (attributeId) { - case Attributes.EventNotifier: { m_eventNotifier = (byte)value; return ServiceResult.Good; } + case Attributes.EventNotifier: { m_eventNotifier = (byte)value; return ServiceResult.Good; } case Attributes.ContainsNoLoops: { m_containsNoLoops = (bool)value; return ServiceResult.Good; } } @@ -1542,11 +1542,11 @@ protected override ServiceResult Write(uint attributeId, object value) #endregion } #endregion - + #region DataTypeNode Class - /// - /// A view node in the server address space. - /// + /// + /// A view node in the server address space. + /// public partial class DataTypeNode : IDataType { #region Constructors diff --git a/Stack/Opc.Ua.Core/Stack/Server/ServerBase.cs b/Stack/Opc.Ua.Core/Stack/Server/ServerBase.cs index d24a45f52..8b3573fc0 100644 --- a/Stack/Opc.Ua.Core/Stack/Server/ServerBase.cs +++ b/Stack/Opc.Ua.Core/Stack/Server/ServerBase.cs @@ -15,6 +15,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. using System; using System.Collections.Generic; +using System.Globalization; using System.Net; using System.Security.Cryptography.X509Certificates; using System.Text; @@ -53,6 +54,7 @@ public ServerBase() public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } /// @@ -849,7 +851,7 @@ protected string NormalizeHostname(string hostname) // substitute the computer name for localhost if localhost used by client. if (Utils.AreDomainsEqual(hostname, "localhost")) { - return computerName.ToUpper(); + return computerName.ToUpper(CultureInfo.InvariantCulture); } // check if client is using an ip address. @@ -859,7 +861,7 @@ protected string NormalizeHostname(string hostname) { if (IPAddress.IsLoopback(address)) { - return computerName.ToUpper(); + return computerName.ToUpper(CultureInfo.InvariantCulture); } // substitute the computer name for any local IP if an IP is used by client. @@ -869,12 +871,12 @@ protected string NormalizeHostname(string hostname) { if (addresses[ii].Equals(address)) { - return computerName.ToUpper(); + return computerName.ToUpper(CultureInfo.InvariantCulture); } } // not a localhost IP address. - return hostname.ToUpper(); + return hostname.ToUpper(CultureInfo.InvariantCulture); } // check for aliases. @@ -895,13 +897,13 @@ protected string NormalizeHostname(string hostname) { if (Utils.AreDomainsEqual(hostname, entry.Aliases[ii])) { - return computerName.ToUpper(); + return computerName.ToUpper(CultureInfo.InvariantCulture); } } } // return normalized hostname. - return hostname.ToUpper(); + return hostname.ToUpper(CultureInfo.InvariantCulture); } /// diff --git a/Stack/Opc.Ua.Core/Stack/State/BaseVariableState.cs b/Stack/Opc.Ua.Core/Stack/State/BaseVariableState.cs index 3dabbf5aa..3a3e280f4 100644 --- a/Stack/Opc.Ua.Core/Stack/State/BaseVariableState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/BaseVariableState.cs @@ -2624,7 +2624,7 @@ protected void SetUpdateList(IList updateList) #endregion } #endregion - + /// /// Used to receive notifications when the value attribute is read or written. /// diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/ChannelAsyncOperation.cs b/Stack/Opc.Ua.Core/Stack/Tcp/ChannelAsyncOperation.cs index 8c8290312..3e06d513e 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/ChannelAsyncOperation.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/ChannelAsyncOperation.cs @@ -47,6 +47,7 @@ public ChannelAsyncOperation(int timeout, AsyncCallback callback, object asyncSt public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } /// diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/TcpMessageSocket.cs b/Stack/Opc.Ua.Core/Stack/Tcp/TcpMessageSocket.cs index 3c25cb54a..e047c4799 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/TcpMessageSocket.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/TcpMessageSocket.cs @@ -96,12 +96,12 @@ public event EventHandler Completed { add { - m_internalComplete += value; + m_InternalComplete += value; m_args.Completed += OnComplete; } remove { - m_internalComplete -= value; + m_InternalComplete -= value; m_args.Completed -= OnComplete; } } @@ -114,7 +114,7 @@ protected void OnComplete(object sender, SocketAsyncEventArgs e) return; } - m_internalComplete(this, e.UserToken as IMessageSocketAsyncEventArgs); + m_InternalComplete(this, e.UserToken as IMessageSocketAsyncEventArgs); } /// @@ -136,7 +136,7 @@ public BufferCollection BufferList public SocketAsyncEventArgs Args => m_args; private SocketAsyncEventArgs m_args; - private event EventHandler m_internalComplete; + private event EventHandler m_InternalComplete; } /// @@ -241,7 +241,7 @@ int receiveBufferSize /// public class TcpMessageSocket : IMessageSocket { - private static readonly int DefaultRetryNextAddressTimeout = 1000; + private static readonly int s_defaultRetryNextAddressTimeout = 1000; #region Constructors /// @@ -291,6 +291,7 @@ public TcpMessageSocket( public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } /// @@ -336,7 +337,11 @@ public async Task BeginConnect( try { // Get DNS host information +#if NET6_0_OR_GREATER + hostAdresses = await Dns.GetHostAddressesAsync(endpointUrl.DnsSafeHost, cts).ConfigureAwait(false); +#else hostAdresses = await Dns.GetHostAddressesAsync(endpointUrl.DnsSafeHost).ConfigureAwait(false); +#endif } catch (SocketException e) { @@ -405,7 +410,7 @@ public async Task BeginConnect( moreAddresses = addressesV6.Length > arrayV6Index || addressesV4.Length > arrayV4Index; if (moreAddresses && !m_tcs.Task.IsCompleted) { - await Task.Delay(DefaultRetryNextAddressTimeout, cts).ContinueWith(tsk => { + await Task.Delay(s_defaultRetryNextAddressTimeout, cts).ContinueWith(tsk => { if (tsk.IsCanceled) { moreAddresses = false; diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryClientChannel.cs b/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryClientChannel.cs index fa7e9fe88..4eb4fd002 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryClientChannel.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryClientChannel.cs @@ -82,8 +82,8 @@ public UaSCUaBinaryClientChannel( m_requests = new Dictionary(); m_lastRequestId = 0; m_ConnectCallback = new EventHandler(OnConnectComplete); - m_StartHandshake = new TimerCallback(OnScheduledHandshake); - m_HandshakeComplete = new AsyncCallback(OnHandshakeComplete); + m_startHandshake = new TimerCallback(OnScheduledHandshake); + m_handshakeComplete = new AsyncCallback(OnHandshakeComplete); m_socketFactory = socketFactory; // save the endpoint. @@ -822,7 +822,7 @@ private void OnScheduledHandshake(object state) } // begin the operation. - m_handshakeOperation = BeginOperation(Int32.MaxValue, m_HandshakeComplete, token); + m_handshakeOperation = BeginOperation(Int32.MaxValue, m_handshakeComplete, token); // send the request. SendOpenSecureChannelRequest(true); @@ -857,7 +857,7 @@ private void OnScheduledHandshake(object state) if (!ReverseSocket) { // create an operation. - m_handshakeOperation = BeginOperation(Int32.MaxValue, m_HandshakeComplete, null); + m_handshakeOperation = BeginOperation(Int32.MaxValue, m_handshakeComplete, null); State = TcpChannelState.Connecting; Socket = m_socketFactory.Create(this, BufferManager, Quotas.MaxBufferSize); @@ -1106,7 +1106,7 @@ private void ForceReconnect(ServiceResult reason) // schedule a reconnect. Utils.LogInfo("ChannelId {0}: Attempting Reconnect in {1} ms. Reason: {2}", ChannelId, m_waitBetweenReconnects, reason.ToLongString()); - m_handshakeTimer = new Timer(m_StartHandshake, null, m_waitBetweenReconnects, Timeout.Infinite); + m_handshakeTimer = new Timer(m_startHandshake, null, m_waitBetweenReconnects, Timeout.Infinite); // set next reconnect period. m_waitBetweenReconnects *= 2; @@ -1155,7 +1155,7 @@ private void ScheduleTokenRenewal(ChannelToken token) Utils.LogInfo("ChannelId {0}: Token Expiry {1}, renewal scheduled in {2} ms.", ChannelId, expiryTime, (int)timeToRenewal); - m_handshakeTimer = new Timer(m_StartHandshake, token, (int)timeToRenewal, Timeout.Infinite); + m_handshakeTimer = new Timer(m_startHandshake, token, (int)timeToRenewal, Timeout.Infinite); } /// @@ -1450,8 +1450,8 @@ private bool ProcessResponseMessage(uint messageType, ArraySegment message private int m_waitBetweenReconnects; private EventHandler m_ConnectCallback; private IMessageSocketFactory m_socketFactory; - private TimerCallback m_StartHandshake; - private AsyncCallback m_HandshakeComplete; + private TimerCallback m_startHandshake; + private AsyncCallback m_handshakeComplete; private List m_queuedOperations; private readonly string g_ImplementationString = ".NET Standard ClientChannel {0} " + Utils.GetAssemblyBuildNumber(); #endregion diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryTransportChannel.cs b/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryTransportChannel.cs index 649dcb5cd..21dc6af6e 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryTransportChannel.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryTransportChannel.cs @@ -41,6 +41,7 @@ public UaSCUaBinaryTransportChannel(IMessageSocketFactory messageSocketFactory) public void Dispose() { Dispose(true); + GC.SuppressFinalize(this); } /// diff --git a/Stack/Opc.Ua.Core/Types/BuiltIn/Variant.cs b/Stack/Opc.Ua.Core/Types/BuiltIn/Variant.cs index d74a930cb..2aa329e3d 100644 --- a/Stack/Opc.Ua.Core/Types/BuiltIn/Variant.cs +++ b/Stack/Opc.Ua.Core/Types/BuiltIn/Variant.cs @@ -2786,7 +2786,7 @@ public override int GetHashCode() /// (Unused) Always pass a NULL value /// The format-provider to use. If unsure, pass an empty string or null /// - /// A containing the value of the current instance in the specified format. + /// A containing the value of the current instance in the specified format. /// /// /// Returns the string representation of the object. diff --git a/Stack/Opc.Ua.Core/Types/Utils/ReadOnlyList.cs b/Stack/Opc.Ua.Core/Types/Utils/ReadOnlyList.cs index 46d907901..aee6047e1 100644 --- a/Stack/Opc.Ua.Core/Types/Utils/ReadOnlyList.cs +++ b/Stack/Opc.Ua.Core/Types/Utils/ReadOnlyList.cs @@ -197,7 +197,7 @@ public static implicit operator ReadOnlyList(T[] values) #region IList Members /// - /// Adds an item to the . + /// Adds an item to the . /// int IList.Add(object value) { @@ -205,7 +205,7 @@ int IList.Add(object value) } /// - /// Removes all items from the . + /// Removes all items from the . /// void IList.Clear() { @@ -213,7 +213,7 @@ void IList.Clear() } /// - /// Determines whether the contains a specific value. + /// Determines whether the contains a specific value. /// bool IList.Contains(object value) { @@ -221,7 +221,7 @@ bool IList.Contains(object value) } /// - /// Determines the index of a specific item in the . + /// Determines the index of a specific item in the . /// int IList.IndexOf(object value) { @@ -229,7 +229,7 @@ int IList.IndexOf(object value) } /// - /// Inserts an item to the at the specified index. + /// Inserts an item to the at the specified index. /// void IList.Insert(int index, object value) { @@ -237,17 +237,17 @@ void IList.Insert(int index, object value) } /// - /// Gets a value indicating whether the has a fixed size. + /// Gets a value indicating whether the has a fixed size. /// bool IList.IsFixedSize => true; /// - /// Gets a value indicating whether the is read-only. + /// Gets a value indicating whether the is read-only. /// bool IList.IsReadOnly => true; /// - /// Removes the first occurrence of a specific object from the . + /// Removes the first occurrence of a specific object from the . /// void IList.Remove(object value) { @@ -255,7 +255,7 @@ void IList.Remove(object value) } /// - /// Removes the item at the specified index. + /// Removes the item at the specified index. /// void IList.RemoveAt(int index) { @@ -281,7 +281,7 @@ object IList.this[int index] #region ICollection Members /// - /// Copies the elements of the to an , starting at a particular index. + /// Copies the elements of the to an , starting at a particular index. /// void ICollection.CopyTo(Array array, int index) { @@ -289,17 +289,17 @@ void ICollection.CopyTo(Array array, int index) } /// - /// Gets the number of elements contained in the . + /// Gets the number of elements contained in the . /// int ICollection.Count => this.Count; /// - /// Gets a value indicating whether access to the is synchronized (thread safe). + /// Gets a value indicating whether access to the is synchronized (thread safe). /// bool ICollection.IsSynchronized => false; /// - /// Gets an object that can be used to synchronize access to the . + /// Gets an object that can be used to synchronize access to the . /// object ICollection.SyncRoot => false; #endregion diff --git a/Stack/Opc.Ua.Core/Types/Utils/Utils.cs b/Stack/Opc.Ua.Core/Types/Utils/Utils.cs index fcc1f17e3..2addf39c7 100644 --- a/Stack/Opc.Ua.Core/Types/Utils/Utils.cs +++ b/Stack/Opc.Ua.Core/Types/Utils/Utils.cs @@ -97,7 +97,6 @@ public static partial class Utils /// /// The urls of the discovery servers on a node. /// - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2105:ArrayFieldsShouldNotBeReadOnly")] public static readonly string[] DiscoveryUrls = new string[] { "opc.tcp://{0}:4840", @@ -138,7 +137,7 @@ public static partial class Utils /// /// List of known default bindings hosted in other assemblies. /// - public static ReadOnlyDictionary DefaultBindings = new ReadOnlyDictionary( + public static readonly ReadOnlyDictionary DefaultBindings = new ReadOnlyDictionary( new Dictionary() { { Utils.UriSchemeHttps, "Opc.Ua.Bindings.Https"} }); @@ -159,7 +158,6 @@ public static partial class Utils /// /// The possible trace output mechanisms. /// - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")] public enum TraceOutput { /// @@ -181,7 +179,6 @@ public enum TraceOutput /// /// The masks used to filter trace messages. /// - [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Design", "CA1034:NestedTypesShouldNotBeVisible")] public static class TraceMasks { /// @@ -1163,7 +1160,6 @@ public static string NormalizedIPAddress(string ipAddress) /// /// Replaces the localhost domain with the current host name. /// - [System.Diagnostics.CodeAnalysis.SuppressMessage("Performance", "RCS1197:Optimize StringBuilder.Append/AppendLine call.")] public static string ReplaceLocalhost(string uri, string hostname = null) { // ignore nulls. @@ -1204,7 +1200,6 @@ public static string ReplaceLocalhost(string uri, string hostname = null) /// /// Replaces the cert subject name DC=localhost with the current host name. /// - [System.Diagnostics.CodeAnalysis.SuppressMessage("Performance", "RCS1197:Optimize StringBuilder.Append/AppendLine call.")] public static string ReplaceDCLocalhost(string subjectName, string hostname = null) { // ignore nulls. @@ -1232,11 +1227,11 @@ public static string ReplaceDCLocalhost(string subjectName, string hostname = nu var buffer = new StringBuilder(); #if NET5_0_OR_GREATER || NETSTANDARD2_1 buffer.Append(subjectName.AsSpan(0, index + 3)) - .Append(hostname == null ? GetHostName() : hostname) + .Append(hostname ?? GetHostName()) .Append(subjectName.AsSpan(index + dclocalhost.Length)); #else buffer.Append(subjectName.Substring(0, index + 3)) - .Append(hostname == null ? GetHostName() : hostname) + .Append(hostname ?? GetHostName()) .Append(subjectName.Substring(index + dclocalhost.Length)); #endif return buffer.ToString(); @@ -1583,7 +1578,6 @@ public static string Format(string text, params object[] args) /// /// Checks if a string is a valid locale identifier. /// - [System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "RCS1075:Avoid empty catch clause that catches System.Exception.")] public static bool IsValidLocaleId(string localeId) { if (String.IsNullOrEmpty(localeId)) @@ -2191,9 +2185,9 @@ public static bool IsEqual(object value1, object value2) } // check for DateTime objects - if (value1 is DateTime) + if (value1 is DateTime time) { - return (Utils.ToOpcUaUniversalTime((DateTime)value1).CompareTo(Utils.ToOpcUaUniversalTime((DateTime)value2))) == 0; + return (Utils.ToOpcUaUniversalTime(time).CompareTo(Utils.ToOpcUaUniversalTime((DateTime)value2))) == 0; } // check for compareable objects. @@ -2209,9 +2203,7 @@ public static bool IsEqual(object value1, object value2) if (encodeable1 != null) { - IEncodeable encodeable2 = value2 as IEncodeable; - - if (encodeable2 == null) + if (!(value2 is IEncodeable encodeable2)) { return false; } @@ -2224,9 +2216,7 @@ public static bool IsEqual(object value1, object value2) if (element1 != null) { - XmlElement element2 = value2 as XmlElement; - - if (element2 == null) + if (!(value2 is XmlElement element2)) { return false; } @@ -2239,10 +2229,8 @@ public static bool IsEqual(object value1, object value2) if (array1 != null) { - Array array2 = value2 as Array; - // arrays are greater than non-arrays. - if (array2 == null) + if (!(value2 is Array array2)) { return false; } @@ -2273,10 +2261,8 @@ public static bool IsEqual(object value1, object value2) if (enumerable1 != null) { - IEnumerable enumerable2 = value2 as IEnumerable; - // collections are greater than non-collections. - if (enumerable2 == null) + if (!(value2 is IEnumerable enumerable2)) { return false; } @@ -2321,13 +2307,13 @@ public static bool IsEqual(object value1, object value2) public static bool Match(string target, string pattern, bool caseSensitive) { // an empty pattern always matches. - if (pattern == null || pattern.Length == 0) + if (string.IsNullOrEmpty(pattern)) { return true; } // an empty string never matches. - if (target == null || target.Length == 0) + if (string.IsNullOrEmpty(target)) { return false; } @@ -2342,7 +2328,7 @@ public static bool Match(string target, string pattern, bool caseSensitive) } else { - if (String.Equals(target, pattern, StringComparison.InvariantCultureIgnoreCase)) + if (String.Equals(target, pattern, StringComparison.OrdinalIgnoreCase)) { return true; } @@ -2537,7 +2523,7 @@ public static bool Match(string target, string pattern, bool caseSensitive) if (tIndex >= target.Length) { - return (pIndex >= pattern.Length); // if end of pattern true + return pIndex >= pattern.Length; // if end of pattern true } return true; @@ -3088,7 +3074,7 @@ private static byte[] PSHA(HMAC hmac, string label, byte[] data, int offset, int } byte[] keySeed = hmac.ComputeHash(seed); - byte[] prfSeed = new byte[hmac.HashSize / 8 + seed.Length]; + byte[] prfSeed = new byte[(hmac.HashSize / 8) + seed.Length]; Array.Copy(keySeed, prfSeed, keySeed.Length); Array.Copy(seed, 0, prfSeed, keySeed.Length, seed.Length); @@ -3151,7 +3137,7 @@ public static bool FindStringIgnoreCase(IList strings, string target) /// /// Lazy helper to allow runtime check for Mono. /// - private static readonly Lazy IsRunningOnMonoValue = new Lazy(() => { + private static readonly Lazy s_isRunningOnMonoValue = new Lazy(() => { return Type.GetType("Mono.Runtime") != null; }); @@ -3161,8 +3147,8 @@ public static bool FindStringIgnoreCase(IList strings, string target) /// true if running on Mono runtime public static bool IsRunningOnMono() { - return IsRunningOnMonoValue.Value; + return s_isRunningOnMonoValue.Value; } - #endregion + #endregion } } diff --git a/Tests/.editorconfig b/Tests/.editorconfig deleted file mode 100644 index 824f8923f..000000000 --- a/Tests/.editorconfig +++ /dev/null @@ -1,10 +0,0 @@ -# Editorconfig for Tests - -root = false - -# Diagnostic settings specific to Tests -[*.cs] - -# RCS1090: Add call to 'ConfigureAwait' (or vice versa) -dotnet_diagnostic.RCS1090.severity = warning - diff --git a/Tests/Opc.Ua.Client.ComplexTypes.Tests/TypeSystemClientTest.cs b/Tests/Opc.Ua.Client.ComplexTypes.Tests/TypeSystemClientTest.cs index 481e5e8e5..5850e1141 100644 --- a/Tests/Opc.Ua.Client.ComplexTypes.Tests/TypeSystemClientTest.cs +++ b/Tests/Opc.Ua.Client.ComplexTypes.Tests/TypeSystemClientTest.cs @@ -49,8 +49,8 @@ namespace Opc.Ua.Client.ComplexTypes.Tests [NonParallelizable] public class TypeSystemClientTest { - const int MaxReferences = 100; - const int MaxTimeout = 10000; + const int kMaxReferences = 100; + const int kMaxTimeout = 10000; ServerFixture m_serverFixture; ClientFixture m_clientFixture; ReferenceServer m_server; diff --git a/Tests/Opc.Ua.Client.Tests/ClientFixture.cs b/Tests/Opc.Ua.Client.Tests/ClientFixture.cs index 255e7db0f..703dbcd8c 100644 --- a/Tests/Opc.Ua.Client.Tests/ClientFixture.cs +++ b/Tests/Opc.Ua.Client.Tests/ClientFixture.cs @@ -97,7 +97,7 @@ public async Task LoadClientConfiguration(string pkiRoot = null, string clientNa /// public async Task StartReverseConnectHost() { - Random m_random = new Random(); + Random random = new Random(); int testPort = ServerFixtureUtils.GetNextFreeIPPort(); bool retryStartServer = false; int serverStartRetries = 25; @@ -118,10 +118,10 @@ public async Task StartReverseConnectHost() { throw; } - testPort = m_random.Next(ServerFixtureUtils.MinTestPort, ServerFixtureUtils.MaxTestPort); + testPort = random.Next(ServerFixtureUtils.MinTestPort, ServerFixtureUtils.MaxTestPort); retryStartServer = true; } - await Task.Delay(m_random.Next(100, 1000)).ConfigureAwait(false); + await Task.Delay(random.Next(100, 1000)).ConfigureAwait(false); } while (retryStartServer); } diff --git a/Tests/Opc.Ua.Client.Tests/ClientTest.cs b/Tests/Opc.Ua.Client.Tests/ClientTest.cs index cbf962212..ce0a75abb 100644 --- a/Tests/Opc.Ua.Client.Tests/ClientTest.cs +++ b/Tests/Opc.Ua.Client.Tests/ClientTest.cs @@ -206,13 +206,13 @@ public async Task Connect(string securityPolicy) [Test, Order(210)] public async Task ConnectAndReconnectAsync() { - const int Timeout = MaxTimeout; + const int connectTimeout = MaxTimeout; var session = await ClientFixture.ConnectAsync(ServerUrl, SecurityPolicies.Basic256Sha256, Endpoints).ConfigureAwait(false); Assert.NotNull(session); ManualResetEvent quitEvent = new ManualResetEvent(false); var reconnectHandler = new SessionReconnectHandler(); - reconnectHandler.BeginReconnect(session, Timeout / 5, + reconnectHandler.BeginReconnect(session, connectTimeout / 5, (object sender, EventArgs e) => { // ignore callbacks from discarded objects. if (!Object.ReferenceEquals(sender, reconnectHandler)) @@ -225,7 +225,7 @@ public async Task ConnectAndReconnectAsync() quitEvent.Set(); }); - var timeout = quitEvent.WaitOne(Timeout); + var timeout = quitEvent.WaitOne(connectTimeout); Assert.True(timeout); var result = session.Close(); diff --git a/Tests/Opc.Ua.Client.Tests/ClientTestFramework.cs b/Tests/Opc.Ua.Client.Tests/ClientTestFramework.cs index 4a2d2e703..9e42e3b08 100644 --- a/Tests/Opc.Ua.Client.Tests/ClientTestFramework.cs +++ b/Tests/Opc.Ua.Client.Tests/ClientTestFramework.cs @@ -52,8 +52,8 @@ public class ClientTestFramework public const int MaxReferences = 100; public const int MaxTimeout = 10000; - public const int TransportQuota_MaxMessageSize = 4 * 1024 * 1024; - public const int TransportQuota_MaxStringLength = 1 * 1024 * 1024; + public const int TransportQuotaMaxMessageSize = 4 * 1024 * 1024; + public const int TransportQuotaMaxStringLength = 1 * 1024 * 1024; public bool SingleSession { get; set; } = true; public bool SupportsExternalServerUrl { get; set; } = false; @@ -139,9 +139,9 @@ public async Task OneTimeSetUpAsync(TextWriter writer = null) await ServerFixture.LoadConfiguration(PkiRoot).ConfigureAwait(false); ServerFixture.Config.TransportQuotas.MaxMessageSize = - ServerFixture.Config.TransportQuotas.MaxBufferSize = TransportQuota_MaxMessageSize; + ServerFixture.Config.TransportQuotas.MaxBufferSize = TransportQuotaMaxMessageSize; ServerFixture.Config.TransportQuotas.MaxByteStringLength = - ServerFixture.Config.TransportQuotas.MaxStringLength = TransportQuota_MaxStringLength; + ServerFixture.Config.TransportQuotas.MaxStringLength = TransportQuotaMaxStringLength; ReferenceServer = await ServerFixture.StartAsync(writer ?? TestContext.Out).ConfigureAwait(false); } diff --git a/Tests/Opc.Ua.Client.Tests/SubscriptionTest.cs b/Tests/Opc.Ua.Client.Tests/SubscriptionTest.cs index f59ff424f..23bd9026f 100644 --- a/Tests/Opc.Ua.Client.Tests/SubscriptionTest.cs +++ b/Tests/Opc.Ua.Client.Tests/SubscriptionTest.cs @@ -46,7 +46,7 @@ namespace Opc.Ua.Client.Tests [SetCulture("en-us"), SetUICulture("en-us")] public class SubscriptionTest : ClientTestFramework { - private readonly string SubscriptionTestXml = Path.Combine(Path.GetTempPath(), "SubscriptionTest.xml"); + private readonly string m_subscriptionTestXml = Path.Combine(Path.GetTempPath(), "SubscriptionTest.xml"); #region Test Setup /// @@ -151,7 +151,7 @@ public void AddSubscription() subscription.Modify(); // save - Session.Save(SubscriptionTestXml); + Session.Save(m_subscriptionTestXml); Thread.Sleep(5000); OutputSubscriptionInfo(TestContext.Out, subscription); @@ -241,7 +241,7 @@ public async Task AddSubscriptionAsync() await subscription.ModifyAsync().ConfigureAwait(false); // save - Session.Save(SubscriptionTestXml); + Session.Save(m_subscriptionTestXml); await Task.Delay(5000).ConfigureAwait(false); OutputSubscriptionInfo(TestContext.Out, subscription); @@ -263,10 +263,10 @@ public async Task AddSubscriptionAsync() [Test, Order(200)] public void LoadSubscription() { - if (!File.Exists(SubscriptionTestXml)) Assert.Ignore("Save file {0} does not exist yet", SubscriptionTestXml); + if (!File.Exists(m_subscriptionTestXml)) Assert.Ignore("Save file {0} does not exist yet", m_subscriptionTestXml); // load - var subscriptions = Session.Load(SubscriptionTestXml); + var subscriptions = Session.Load(m_subscriptionTestXml); Assert.NotNull(subscriptions); Assert.IsNotEmpty(subscriptions); @@ -301,12 +301,12 @@ public void SequentialPublishingSubscription(bool enabled) var subscriptionIds = new UInt32Collection(); var sequenceBroken = new AutoResetEvent(false); var numOfNotifications = 0L; - const int TestWaitTime = 10000; - const int MonitoredItemsPerSubscription = 500; - const int Subscriptions = 10; + const int testWaitTime = 10000; + const int monitoredItemsPerSubscription = 500; + const int subscriptions = 10; // multiple Subscriptions to enforce multiple queued publish requests - for (int i = 0; i < Subscriptions; i++) + for (int i = 0; i < subscriptions; i++) { var s = new Subscription(Session.DefaultSubscription) { SequentialPublishing = enabled, @@ -321,7 +321,7 @@ public void SequentialPublishingSubscription(bool enabled) // Create monitored items on the server // and track the last reported source timestamp - var list = Enumerable.Range(1, MonitoredItemsPerSubscription).Select(_ => new MonitoredItem(subscription.DefaultItem) { + var list = Enumerable.Range(1, monitoredItemsPerSubscription).Select(_ => new MonitoredItem(subscription.DefaultItem) { StartNodeId = new NodeId("Scalar_Simulation_Int32", 2), SamplingInterval = 0, }).ToList(); @@ -359,7 +359,7 @@ public void SequentialPublishingSubscription(bool enabled) Session.SetPublishingMode(null, true, subscriptionIds, out var results, out var diagnosticInfos); // Wait for out-of-order to occur - var failed = sequenceBroken.WaitOne(TestWaitTime); + var failed = sequenceBroken.WaitOne(testWaitTime); // stop Session.SetPublishingMode(null, false, subscriptionIds, out results, out diagnosticInfos); @@ -400,12 +400,12 @@ public async Task PublishRequestCount() { var subscriptionList = new List(); var numOfNotifications = 0L; - const int TestWaitTime = 10000; - const int MonitoredItemsPerSubscription = 50; - const int Subscriptions = 50; - const int MaxServerPublishRequest = 20; + const int testWaitTime = 10000; + const int monitoredItemsPerSubscription = 50; + const int subscriptions = 50; + const int maxServerPublishRequest = 20; - for (int i = 0; i < Subscriptions; i++) + for (int i = 0; i < subscriptions; i++) { var subscription = new Subscription(Session.DefaultSubscription) { PublishingInterval = 0, @@ -416,7 +416,7 @@ public async Task PublishRequestCount() var simulatedNodes = GetTestSetSimulation(Session.NamespaceUris); var list = new List(); var nodeSet = simulatedNodes; - for (int ii = 0; ii < MonitoredItemsPerSubscription; ii++) + for (int ii = 0; ii < monitoredItemsPerSubscription; ii++) { var nextNode = nodeSet[ii % nodeSet.Count]; list.Add(new MonitoredItem(subscription.DefaultItem) { @@ -445,10 +445,10 @@ public async Task PublishRequestCount() await Task.Delay(1000).ConfigureAwait(false); // verify that number of active publishrequests is never exceeded - while (stopwatch.ElapsedMilliseconds < TestWaitTime) + while (stopwatch.ElapsedMilliseconds < testWaitTime) { // use the sample server default for max publish request count - Assert.GreaterOrEqual(MaxServerPublishRequest, Session.GoodPublishRequestCount); + Assert.GreaterOrEqual(maxServerPublishRequest, Session.GoodPublishRequestCount); await Task.Delay(100).ConfigureAwait(false); } diff --git a/Tests/Opc.Ua.Core.Tests/Security/Certificates/CertificateValidatorTest.cs b/Tests/Opc.Ua.Core.Tests/Security/Certificates/CertificateValidatorTest.cs index 9058c08e2..fa732300f 100644 --- a/Tests/Opc.Ua.Core.Tests/Security/Certificates/CertificateValidatorTest.cs +++ b/Tests/Opc.Ua.Core.Tests/Security/Certificates/CertificateValidatorTest.cs @@ -70,7 +70,7 @@ protected void OneTimeSetUp() // good applications test set var appTestDataGenerator = new ApplicationTestDataGenerator(1); m_goodApplicationTestSet = appTestDataGenerator.ApplicationTestSet(kGoodApplicationsTestCount); - m_NotYetValidCertsApplicationTestSet = appTestDataGenerator.ApplicationTestSet(kGoodApplicationsTestCount); + m_notYetValidCertsApplicationTestSet = appTestDataGenerator.ApplicationTestSet(kGoodApplicationsTestCount); // create all certs and CRL m_caChain = new X509Certificate2[kCaChainCount]; @@ -179,7 +179,7 @@ protected void OneTimeSetUp() m_appCerts); // create signed expired app certs - foreach (var app in m_NotYetValidCertsApplicationTestSet) + foreach (var app in m_notYetValidCertsApplicationTestSet) { var subject = app.Subject; var expiredappcert = CertificateFactory.CreateCertificate( @@ -1453,7 +1453,7 @@ public async Task VerifyExistingCRLAppChainsExpiredCertificates(bool rejectUnkno // ****** setting under test ****** certValidator.RejectUnknownRevocationStatus = rejectUnknownRevocationStatus; - foreach (var app in m_NotYetValidCertsApplicationTestSet) + foreach (var app in m_notYetValidCertsApplicationTestSet) { var serviceResultException = Assert.Throws(() => certValidator.Validate(new X509Certificate2(app.Certificate))); Assert.AreEqual(StatusCodes.BadCertificateTimeInvalid, serviceResultException.StatusCode, serviceResultException.Message); @@ -1492,7 +1492,7 @@ public async Task VerifyMissingCRLAppChainsExpiredCertificates(bool rejectUnknow // ****** setting under test ****** certValidator.RejectUnknownRevocationStatus = rejectUnknownRevocationStatus; - foreach (var app in m_NotYetValidCertsApplicationTestSet) + foreach (var app in m_notYetValidCertsApplicationTestSet) { var serviceResultException = Assert.Throws(() => certValidator.Validate(new X509Certificate2(app.Certificate))); Assert.AreEqual(StatusCodes.BadCertificateTimeInvalid, serviceResultException.StatusCode, serviceResultException.Message); @@ -1578,7 +1578,7 @@ private void OnCertificateValidation(object sender, CertificateValidationEventAr private const int kCaChainCount = 3; private const int kGoodApplicationsTestCount = 3; private IList m_goodApplicationTestSet; - private IList m_NotYetValidCertsApplicationTestSet; + private IList m_notYetValidCertsApplicationTestSet; private X509Certificate2[] m_caChain; private X509Certificate2[] m_caDupeChain; private X509CRL[] m_crlChain; diff --git a/Tests/Opc.Ua.Core.Tests/Types/BuiltIn/BuiltInTests.cs b/Tests/Opc.Ua.Core.Tests/Types/BuiltIn/BuiltInTests.cs index b57aa9fcb..b1727a6dd 100644 --- a/Tests/Opc.Ua.Core.Tests/Types/BuiltIn/BuiltInTests.cs +++ b/Tests/Opc.Ua.Core.Tests/Types/BuiltIn/BuiltInTests.cs @@ -43,8 +43,8 @@ namespace Opc.Ua.Core.Tests.Types.BuiltIn [Parallelizable] public class BuiltInTests { - protected const int RandomStart = 4840; - protected const int RandomRepeats = 100; + protected const int kRandomStart = 4840; + protected const int kRandomRepeats = 100; protected RandomSource RandomSource { get; private set; } protected DataGenerator DataGenerator { get; private set; } @@ -63,7 +63,7 @@ protected void OneTimeTearDown() protected void SetUp() { // ensure tests are reproducible, reset for every test - RandomSource = new RandomSource(RandomStart); + RandomSource = new RandomSource(kRandomStart); DataGenerator = new DataGenerator(RandomSource); } @@ -77,7 +77,7 @@ protected void TearDown() /// protected void SetRepeatedRandomSeed() { - int randomSeed = TestContext.CurrentContext.Random.Next() + RandomStart; + int randomSeed = TestContext.CurrentContext.Random.Next() + kRandomStart; RandomSource = new RandomSource(randomSeed); DataGenerator = new DataGenerator(RandomSource); } @@ -87,14 +87,14 @@ protected void SetRepeatedRandomSeed() /// protected void SetRandomSeed(int randomSeed) { - RandomSource = new RandomSource(randomSeed + RandomStart); + RandomSource = new RandomSource(randomSeed + kRandomStart); DataGenerator = new DataGenerator(RandomSource); } #endregion #region DataPointSources [DatapointSource] - public static BuiltInType[] BuiltInTypes = ((BuiltInType[])Enum.GetValues(typeof(BuiltInType))) + public static readonly BuiltInType[] BuiltInTypes = ((BuiltInType[])Enum.GetValues(typeof(BuiltInType))) .ToList().Where(b => (b > BuiltInType.Null) && (b < BuiltInType.DataValue)).ToArray(); #endregion @@ -103,7 +103,7 @@ protected void SetRandomSeed(int randomSeed) /// Initialize Variant with BuiltInType Scalar. /// [Theory] - [Category("BuiltInType"), Repeat(RandomRepeats)] + [Category("BuiltInType"), Repeat(kRandomRepeats)] public void VariantScalarFromBuiltInType(BuiltInType builtInType) { SetRepeatedRandomSeed(); @@ -116,7 +116,7 @@ public void VariantScalarFromBuiltInType(BuiltInType builtInType) /// Initialize Variant with BuiltInType Array. /// [Theory] - [Category("BuiltInType"), Repeat(RandomRepeats)] + [Category("BuiltInType"), Repeat(kRandomRepeats)] public void VariantArrayFromBuiltInType(BuiltInType builtInType, bool useBoundaryValues) { SetRepeatedRandomSeed(); diff --git a/Tests/Opc.Ua.Core.Tests/Types/ContentFilter/ContentFilterTests.cs b/Tests/Opc.Ua.Core.Tests/Types/ContentFilter/ContentFilterTests.cs index f071b8119..1526c8548 100644 --- a/Tests/Opc.Ua.Core.Tests/Types/ContentFilter/ContentFilterTests.cs +++ b/Tests/Opc.Ua.Core.Tests/Types/ContentFilter/ContentFilterTests.cs @@ -56,10 +56,10 @@ public bool IsTypeOf(FilterContext context, NodeId typeDefinitionId) public class ContentFilterTests { #region Shared Properties - public EventFilter Filter { get;} - public FilterContext FilterContext { get;} + public EventFilter Filter { get; } + public FilterContext FilterContext { get; } public TestFilterTarget TestFilterTarget { get; } - + #endregion #region Constructor @@ -130,7 +130,7 @@ public void Between(object operandFirst1, object operandFirst2, object operandFi [TestCase(3, 3, 5, 7, true)] [TestCase(3, 1, 5, 7, false)] [Category("ContentFilter")] - public void InList(object operandFirst1, object operandFirst2, object operandFirst3, object operandFirst4, object expectedResult) + public void InList(object operandFirst1, object operandFirst2, object operandFirst3, object operandFirst4, object expectedResult) { LiteralOperand loperand1 = new LiteralOperand(); LiteralOperand loperand2 = new LiteralOperand(); @@ -209,7 +209,7 @@ public void BinaryFilterOperators(object operandFirst1, object operandFirst2, Fi { loperand2.Value = new Variant(operandFirst2); } - + ContentFilterElement filterElement = new ContentFilterElement(); filterElement.FilterOperator = filterOp; @@ -241,7 +241,7 @@ public void NonBoolWithUnary(object operandFirst1, object operandFirst2, FilterO { loperand2.Value = new Variant(operandFirst2); } - + ContentFilterElement filterElement1 = new ContentFilterElement(); filterElement1.FilterOperator = filterOp1; @@ -305,7 +305,7 @@ public void NonBoolWithBinary(object operandFirst1, object operandFirst2, Filter filterElement2.SetOperands(new List() { lFirstOperand, elementOperand }); Filter.WhereClause.Elements = new[] { filterElement2, filterElement1 }; - + // apply filter. object result = Filter.WhereClause.Evaluate(FilterContext, TestFilterTarget); Assert.AreEqual(expectedResult, result); diff --git a/Tests/Opc.Ua.Core.Tests/Types/Encoders/EncodeableTests.cs b/Tests/Opc.Ua.Core.Tests/Types/Encoders/EncodeableTests.cs index 806cf6ce7..6341a4157 100644 --- a/Tests/Opc.Ua.Core.Tests/Types/Encoders/EncodeableTests.cs +++ b/Tests/Opc.Ua.Core.Tests/Types/Encoders/EncodeableTests.cs @@ -81,7 +81,7 @@ Type systemType int arrayLength = DataGenerator.GetRandomByte(); Array array = Array.CreateInstance(systemType, arrayLength); ExpandedNodeId dataTypeId = NodeId.Null; - for(int i = 0; i < array.Length; i ++) + for (int i = 0; i < array.Length; i++) { IEncodeable testObject = CreateDefaultEncodableType(systemType) as IEncodeable; array.SetValue(testObject, i); @@ -89,7 +89,7 @@ Type systemType { dataTypeId = testObject.TypeId; } - } + } string objectName = "Array"; BuiltInType builtInType = BuiltInType.Variant; @@ -133,7 +133,7 @@ Type systemType int elementsCount = ElementsFromDimension(dimensions); Array array = Array.CreateInstance(systemType, elementsCount); - + ExpandedNodeId dataTypeId = NodeId.Null; for (int i = 0; i < array.Length; i++) @@ -144,7 +144,7 @@ Type systemType { dataTypeId = testObject.TypeId; } - } + } string objectName = "Matrix"; BuiltInType builtInType = BuiltInType.Variant; diff --git a/Tests/Opc.Ua.Core.Tests/Types/Encoders/EncoderCommon.cs b/Tests/Opc.Ua.Core.Tests/Types/Encoders/EncoderCommon.cs index eea82068f..43562fe78 100644 --- a/Tests/Opc.Ua.Core.Tests/Types/Encoders/EncoderCommon.cs +++ b/Tests/Opc.Ua.Core.Tests/Types/Encoders/EncoderCommon.cs @@ -50,9 +50,9 @@ namespace Opc.Ua.Core.Tests.Types.Encoders [SetCulture("en-us")] public class EncoderCommon { - protected const int RandomStart = 4840; - protected const int RandomRepeats = 100; - protected const string ApplicationUri = "uri:localhost:opcfoundation.org:EncoderCommon"; + protected const int kRandomStart = 4840; + protected const int kRandomRepeats = 100; + protected const string kApplicationUri = "uri:localhost:opcfoundation.org:EncoderCommon"; protected RandomSource RandomSource { get; private set; } protected DataGenerator DataGenerator { get; private set; } protected IServiceMessageContext Context { get; private set; } @@ -66,7 +66,7 @@ protected void OneTimeSetUp() Context = new ServiceMessageContext(); NameSpaceUris = Context.NamespaceUris; // namespace index 1 must be the ApplicationUri - NameSpaceUris.GetIndexOrAppend(ApplicationUri); + NameSpaceUris.GetIndexOrAppend(kApplicationUri); NameSpaceUris.GetIndexOrAppend(Namespaces.OpcUaGds); ServerUris = new StringTable(); } @@ -80,7 +80,7 @@ protected void OneTimeTearDown() protected void SetUp() { // ensure tests are reproducible, reset for every test - RandomSource = new RandomSource(RandomStart); + RandomSource = new RandomSource(kRandomStart); DataGenerator = new DataGenerator(RandomSource); } @@ -94,7 +94,7 @@ protected void TearDown() /// protected void SetRepeatedRandomSeed() { - int randomSeed = TestContext.CurrentContext.Random.Next() + RandomStart; + int randomSeed = TestContext.CurrentContext.Random.Next() + kRandomStart; RandomSource = new RandomSource(randomSeed); DataGenerator = new DataGenerator(RandomSource); } @@ -104,14 +104,14 @@ protected void SetRepeatedRandomSeed() /// protected void SetRandomSeed(int randomSeed) { - RandomSource = new RandomSource(randomSeed + RandomStart); + RandomSource = new RandomSource(randomSeed + kRandomStart); DataGenerator = new DataGenerator(RandomSource); } #endregion #region DataPointSources [DatapointSource] - public static BuiltInType[] BuiltInTypes = ((BuiltInType[])Enum.GetValues(typeof(BuiltInType))) + public static readonly BuiltInType[] BuiltInTypes = ((BuiltInType[])Enum.GetValues(typeof(BuiltInType))) .ToList().Where(b => (b != BuiltInType.Variant) && (b != BuiltInType.DiagnosticInfo) && @@ -120,7 +120,7 @@ protected void SetRandomSeed(int randomSeed) ).ToArray(); [DatapointSource] - public static EncodingType[] EncoderTypes = (EncodingType[])Enum.GetValues(typeof(EncodingType)); + public static readonly EncodingType[] EncoderTypes = (EncodingType[])Enum.GetValues(typeof(EncodingType)); #endregion #region Protected Methods @@ -691,14 +691,14 @@ public FooBarEncodeable(string fieldname, string foo) public void Encode(IEncoder encoder) { - encoder.PushNamespace(ApplicationUri); + encoder.PushNamespace(kApplicationUri); encoder.WriteString(FieldName, Foo); encoder.PopNamespace(); } public void Decode(IDecoder decoder) { - decoder.PushNamespace(ApplicationUri); + decoder.PushNamespace(kApplicationUri); Foo = decoder.ReadString(FieldName); decoder.PopNamespace(); } diff --git a/Tests/Opc.Ua.Core.Tests/Types/Encoders/EncoderTests.cs b/Tests/Opc.Ua.Core.Tests/Types/Encoders/EncoderTests.cs index b808edda0..244fb8896 100644 --- a/Tests/Opc.Ua.Core.Tests/Types/Encoders/EncoderTests.cs +++ b/Tests/Opc.Ua.Core.Tests/Types/Encoders/EncoderTests.cs @@ -83,7 +83,7 @@ BuiltInType builtInType /// Verify encode and decode of a random built in type. /// [Theory] - [Category("BuiltInType"), Repeat(RandomRepeats)] + [Category("BuiltInType"), Repeat(kRandomRepeats)] public void ReEncodeBuiltInType( EncodingType encoderType, BuiltInType builtInType @@ -199,7 +199,7 @@ BuiltInType builtInType /// as Variant in a DataValue. /// [Theory] - [Category("BuiltInType"), Repeat(RandomRepeats)] + [Category("BuiltInType"), Repeat(kRandomRepeats)] public void ReEncodeBuiltInTypeRandomVariantInDataValue( EncodingType encoderType ) diff --git a/Tests/Opc.Ua.Core.Tests/Types/Encoders/JsonEncoderBenchmarks.cs b/Tests/Opc.Ua.Core.Tests/Types/Encoders/JsonEncoderBenchmarks.cs index 0f096f8d9..434460c69 100644 --- a/Tests/Opc.Ua.Core.Tests/Types/Encoders/JsonEncoderBenchmarks.cs +++ b/Tests/Opc.Ua.Core.Tests/Types/Encoders/JsonEncoderBenchmarks.cs @@ -156,8 +156,8 @@ private void TestEncoding(IEncoder encoder) encoder.WriteBoolean("Boolean", true); encoder.WriteUInt64("UInt64", 1234566890); encoder.WriteString("String", "The quick brown fox..."); - encoder.WriteNodeId("NodeId", m_nodeId); - encoder.WriteInt32Array("Array", m_list); + encoder.WriteNodeId("NodeId", s_nodeId); + encoder.WriteInt32Array("Array", s_list); } } #endregion @@ -208,8 +208,8 @@ public void GlobalCleanup() #endregion #region Private Fields - private static NodeId m_nodeId = new NodeId(1234); - private static IList m_list = new List() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; + private static NodeId s_nodeId = new NodeId(1234); + private static IList s_list = new List() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; private IServiceMessageContext m_context; private MemoryStream m_memoryStream; private Microsoft.IO.RecyclableMemoryStreamManager m_memoryManager; diff --git a/Tests/Opc.Ua.Core.Tests/Types/Encoders/JsonEncoderTests.cs b/Tests/Opc.Ua.Core.Tests/Types/Encoders/JsonEncoderTests.cs index 905d60d87..8456044f6 100644 --- a/Tests/Opc.Ua.Core.Tests/Types/Encoders/JsonEncoderTests.cs +++ b/Tests/Opc.Ua.Core.Tests/Types/Encoders/JsonEncoderTests.cs @@ -49,11 +49,11 @@ namespace Opc.Ua.Core.Tests.Types.Encoders public class JsonEncoderTests : EncoderCommon { #region DataSource - static TestEnumType[] TestEnumArray = new TestEnumType[] + static TestEnumType[] s_testEnumArray = new TestEnumType[] { TestEnumType.One, TestEnumType.Two, TestEnumType.Hundred }; - static Int32[] TestInt32Array = new Int32[] + static readonly Int32[] s_testInt32Array = new Int32[] { 2, 3, 10 }; - static ExtensionObject TestEncodeable = new ExtensionObject(new FooBarEncodeable(999)); + static ExtensionObject s_testEncodeable = new ExtensionObject(new FooBarEncodeable(999)); /// /// Constants used by test data set. @@ -277,11 +277,11 @@ public class JsonEncoderTests : EncoderCommon { BuiltInType.Enumeration, 22, "22", "\"22\""}, // arrays - { BuiltInType.Enumeration, TestEnumArray, "[1,2,100]", "[\"One_1\",\"Two_2\",\"Hundred_100\"]"}, - { BuiltInType.Enumeration, TestInt32Array, "[2,3,10]", "[\"2\",\"3\",\"10\"]"}, + { BuiltInType.Enumeration, s_testEnumArray, "[1,2,100]", "[\"One_1\",\"Two_2\",\"Hundred_100\"]"}, + { BuiltInType.Enumeration, s_testInt32Array, "[2,3,10]", "[\"2\",\"3\",\"10\"]"}, // IEncodeable - { BuiltInType.ExtensionObject, TestEncodeable, "{\"Body\":{\"Foo\":\"bar_999\"}}", "{\"Foo\":\"bar_999\"}"} + { BuiltInType.ExtensionObject, s_testEncodeable, "{\"Body\":{\"Foo\":\"bar_999\"}}", "{\"Foo\":\"bar_999\"}"} }.ToArray(); #endregion diff --git a/Tests/Opc.Ua.Core.Tests/Types/Utils/HiResClock.cs b/Tests/Opc.Ua.Core.Tests/Types/Utils/HiResClock.cs index 498fae7dd..5adeb9367 100644 --- a/Tests/Opc.Ua.Core.Tests/Types/Utils/HiResClock.cs +++ b/Tests/Opc.Ua.Core.Tests/Types/Utils/HiResClock.cs @@ -46,11 +46,11 @@ public class HiResClockTests /// How long the tests are running. /// public const int HiResClockTestDuration = 2000; + /// /// On MacOS allow higher margin due to flaky tests in CI builds. /// - public readonly int Percent = RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? 5 : 2; - + public int Percent { get => RuntimeInformation.IsOSPlatform(OSPlatform.OSX) ? 5 : 2; } #region Test Setup [OneTimeSetUp] @@ -157,7 +157,18 @@ public void HiResUtcNowTickCount(bool disabled) long elapsed = (lastTickCount - firstTickCount) / TimeSpan.TicksPerMillisecond; TestContext.Out.WriteLine("HiResClock counts: {0} resolution: {1}µs", counts, stopWatch.ElapsedMilliseconds * 1000 / counts); // test accuracy of counter vs. stop watch - Assert.That(elapsed, Is.EqualTo(stopWatch.ElapsedMilliseconds).Within(Percent).Percent); + try + { + Assert.That(elapsed, Is.EqualTo(stopWatch.ElapsedMilliseconds).Within(Percent).Percent); + } + catch (Exception ex) + { + if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) + { + Assert.Inconclusive(ex.Message); + } + throw; + } } #endregion } diff --git a/Tests/Opc.Ua.Core.Tests/Types/Utils/LogTests.cs b/Tests/Opc.Ua.Core.Tests/Types/Utils/LogTests.cs index 050251ba4..0a24a9579 100644 --- a/Tests/Opc.Ua.Core.Tests/Types/Utils/LogTests.cs +++ b/Tests/Opc.Ua.Core.Tests/Types/Utils/LogTests.cs @@ -98,6 +98,7 @@ public void Dispose() Utils.Tracing.TraceEventHandler -= this.TraceEventHandler; m_disposed = true; } + GC.SuppressFinalize(this); } /// diff --git a/Tests/Opc.Ua.Core.Tests/Types/Utils/NumericRangeTests.cs b/Tests/Opc.Ua.Core.Tests/Types/Utils/NumericRangeTests.cs index 503820cc3..a1f97d6fa 100644 --- a/Tests/Opc.Ua.Core.Tests/Types/Utils/NumericRangeTests.cs +++ b/Tests/Opc.Ua.Core.Tests/Types/Utils/NumericRangeTests.cs @@ -179,7 +179,7 @@ public void UpdateByteStringArrayTest() new byte[] { 0x55, 0xDD, 0xEE, 0x88 }, new byte[] { 0x99, 0xAA, 0xBB, 0xCC } }, updatedValue); - + } } diff --git a/Tests/Opc.Ua.Core.Tests/Types/Utils/UtilTests.cs b/Tests/Opc.Ua.Core.Tests/Types/Utils/UtilTests.cs index 7fbef2d04..c22d9546f 100644 --- a/Tests/Opc.Ua.Core.Tests/Types/Utils/UtilTests.cs +++ b/Tests/Opc.Ua.Core.Tests/Types/Utils/UtilTests.cs @@ -231,7 +231,7 @@ public void ExponentialEntityExpansionProcessing() /// [Test] public void BuiltInTypeOfSimpleDataTypes() - + { Assert.AreEqual(BuiltInType.DateTime, TypeInfo.GetBuiltInType(DataTypeIds.UtcTime)); @@ -267,7 +267,7 @@ public void BuiltInTypeOfSimpleDataTypes() Assert.AreEqual(BuiltInType.String, TypeInfo.GetBuiltInType((NodeId)staticValue)); } } - + #endregion } diff --git a/Tests/Opc.Ua.Gds.Tests/Common.cs b/Tests/Opc.Ua.Gds.Tests/Common.cs index 4cad5aee3..a19906f22 100644 --- a/Tests/Opc.Ua.Gds.Tests/Common.cs +++ b/Tests/Opc.Ua.Gds.Tests/Common.cs @@ -43,21 +43,21 @@ namespace Opc.Ua.Gds.Tests { public class ApplicationTestDataGenerator { - private int _randomStart = 1; - private RandomSource _randomSource; - private DataGenerator _dataGenerator; - private ServerCapabilities _serverCapabilities; + private int m_randomStart = 1; + private RandomSource m_randomSource; + private DataGenerator m_dataGenerator; + private ServerCapabilities m_serverCapabilities; public ApplicationTestDataGenerator(int randomStart) { - this._randomStart = randomStart; - _serverCapabilities = new ServerCapabilities(); - _randomSource = new RandomSource(randomStart); - _dataGenerator = new DataGenerator(_randomSource); + this.m_randomStart = randomStart; + m_serverCapabilities = new ServerCapabilities(); + m_randomSource = new RandomSource(randomStart); + m_dataGenerator = new DataGenerator(m_randomSource); } - public RandomSource RandomSource => _randomSource; - public DataGenerator DataGenerator => _dataGenerator; + public RandomSource RandomSource => m_randomSource; + public DataGenerator DataGenerator => m_dataGenerator; public IList ApplicationTestSet(int count, bool invalidateSet) { @@ -72,17 +72,17 @@ public IList ApplicationTestSet(int count, bool invalidateS switch (i % 4) { case 0: - appRecord.ApplicationUri = _dataGenerator.GetRandomString(); + appRecord.ApplicationUri = m_dataGenerator.GetRandomString(); break; case 1: - appRecord.ApplicationType = (ApplicationType)_randomSource.NextInt32(100) + 8; + appRecord.ApplicationType = (ApplicationType)m_randomSource.NextInt32(100) + 8; break; case 2: - appRecord.ProductUri = _dataGenerator.GetRandomString(); + appRecord.ProductUri = m_dataGenerator.GetRandomString(); break; case 3: appRecord.DiscoveryUrls = appRecord.ApplicationType == ApplicationType.Client ? - RandomDiscoveryUrl(new StringCollection { "xxxyyyzzz" }, _randomSource.NextInt32(0x7fff), "TestClient") : null; + RandomDiscoveryUrl(new StringCollection { "xxxyyyzzz" }, m_randomSource.NextInt32(0x7fff), "TestClient") : null; break; case 4: appRecord.ServerCapabilities = appRecord.ApplicationType == ApplicationType.Client ? @@ -101,20 +101,20 @@ public IList ApplicationTestSet(int count, bool invalidateS private ApplicationTestData RandomApplicationTestData() { // TODO: set to discoveryserver - ApplicationType appType = (ApplicationType)_randomSource.NextInt32((int)ApplicationType.ClientAndServer); - string pureAppName = _dataGenerator.GetRandomString("en"); + ApplicationType appType = (ApplicationType)m_randomSource.NextInt32((int)ApplicationType.ClientAndServer); + string pureAppName = m_dataGenerator.GetRandomString("en"); pureAppName = Regex.Replace(pureAppName, @"[^\w\d\s]", ""); string pureAppUri = Regex.Replace(pureAppName, @"[^\w\d]", ""); string appName = "UA " + pureAppName; StringCollection domainNames = RandomDomainNames(); string localhost = domainNames[0]; - string locale = _randomSource.NextInt32(10) == 0 ? null : "en-US"; - string privateKeyFormat = _randomSource.NextInt32(1) == 0 ? "PEM" : "PFX"; + string locale = m_randomSource.NextInt32(10) == 0 ? null : "en-US"; + string privateKeyFormat = m_randomSource.NextInt32(1) == 0 ? "PEM" : "PFX"; string appUri = ("urn:localhost:opcfoundation.org:" + pureAppUri.ToLower()).Replace("localhost", localhost); string prodUri = "http://opcfoundation.org/UA/" + pureAppUri; StringCollection discoveryUrls = new StringCollection(); StringCollection serverCapabilities = new StringCollection(); - int port = (_dataGenerator.GetRandomInt16() & 0x1fff) + 50000; + int port = (m_dataGenerator.GetRandomInt16() & 0x1fff) + 50000; switch (appType) { case ApplicationType.Client: @@ -153,10 +153,10 @@ private ApplicationTestData RandomApplicationTestData() private StringCollection RandomServerCapabilities() { var serverCapabilities = new StringCollection(); - int capabilities = _randomSource.NextInt32(8); - foreach (var cap in _serverCapabilities) + int capabilities = m_randomSource.NextInt32(8); + foreach (var cap in m_serverCapabilities) { - if (_randomSource.NextInt32(100) > 50) + if (m_randomSource.NextInt32(100) > 50) { serverCapabilities.Add(cap.Id); if (capabilities-- == 0) @@ -170,7 +170,7 @@ private StringCollection RandomServerCapabilities() private string RandomLocalHost() { - string localhost = Regex.Replace(_dataGenerator.GetRandomSymbol("en").Trim().ToLower(), @"[^\w\d]", ""); + string localhost = Regex.Replace(m_dataGenerator.GetRandomSymbol("en").Trim().ToLower(), @"[^\w\d]", ""); if (localhost.Length >= 12) { localhost = localhost.Substring(0, 12); @@ -180,7 +180,7 @@ private string RandomLocalHost() private string[] RandomDomainNames() { - int count = _randomSource.NextInt32(8) + 1; + int count = m_randomSource.NextInt32(8) + 1; var result = new string[count]; for (int i = 0; i < count; i++) { @@ -194,7 +194,7 @@ private StringCollection RandomDiscoveryUrl(StringCollection domainNames, int po var result = new StringCollection(); foreach (var name in domainNames) { - int random = _randomSource.NextInt32(7); + int random = m_randomSource.NextInt32(7); if ((result.Count == 0) || (random & 1) == 0) { result.Add(String.Format("opc.tcp://{0}:{1}/{2}", name, (port++).ToString(), appUri)); @@ -250,27 +250,27 @@ private void Initialize() public class ApplicationMessageDlg : IApplicationMessageDlg { - private string message = string.Empty; - private bool ask = false; + private string m_message = string.Empty; + private bool m_ask = false; public override void Message(string text, bool ask) { - this.message = text; - this.ask = ask; + this.m_message = text; + this.m_ask = ask; } public override async Task ShowAsync() { - if (ask) + if (m_ask) { - message += " (y/n, default y): "; - Console.Write(message); + m_message += " (y/n, default y): "; + Console.Write(m_message); } else { - Console.WriteLine(message); + Console.WriteLine(m_message); } - if (ask) + if (m_ask) { try { @@ -289,7 +289,7 @@ public override async Task ShowAsync() public static class TestUtils { - private static Random m_random = new Random(); + private static Random s_random = new Random(); public static async Task CleanupTrustList(ICertificateStore store, bool dispose = true) { @@ -318,10 +318,10 @@ public static void DeleteDirectory(string storePath) } } - const int MinPort = Opc.Ua.Utils.UaTcpDefaultPort; + const int kMinPort = Opc.Ua.Utils.UaTcpDefaultPort; public static void PatchBaseAddressesPorts(ApplicationConfiguration config, int basePort) { - if (basePort >= MinPort && basePort <= ServerFixtureUtils.MaxTestPort) + if (basePort >= kMinPort && basePort <= ServerFixtureUtils.MaxTestPort) { StringCollection newBaseAddresses = new StringCollection(); foreach (var baseAddress in config.ServerConfiguration.BaseAddresses) @@ -336,7 +336,7 @@ public static void PatchBaseAddressesPorts(ApplicationConfiguration config, int public static string PatchOnlyGDSEndpointUrlPort(string url, int port) { - if (port >= MinPort && port <= ServerFixtureUtils.MaxTestPort) + if (port >= kMinPort && port <= ServerFixtureUtils.MaxTestPort) { UriBuilder newUrl = new UriBuilder(url); if (newUrl.Path.Contains("GlobalDiscoveryTestServer")) @@ -364,7 +364,7 @@ public static async Task StartGDS(bool clean) catch (ServiceResultException sre) { serverStartRetries--; - testPort = m_random.Next(ServerFixtureUtils.MinTestPort, ServerFixtureUtils.MaxTestPort); + testPort = s_random.Next(ServerFixtureUtils.MinTestPort, ServerFixtureUtils.MaxTestPort); if (serverStartRetries == 0 || sre.StatusCode != StatusCodes.BadNoCommunication) { @@ -372,7 +372,7 @@ public static async Task StartGDS(bool clean) } retryStartServer = true; } - await Task.Delay(m_random.Next(100, 1000)).ConfigureAwait(false); + await Task.Delay(s_random.Next(100, 1000)).ConfigureAwait(false); } while (retryStartServer); return server; diff --git a/Tests/Opc.Ua.Gds.Tests/GlobalDiscoveryTestServer.cs b/Tests/Opc.Ua.Gds.Tests/GlobalDiscoveryTestServer.cs index 2b1a15507..841099a8f 100644 --- a/Tests/Opc.Ua.Gds.Tests/GlobalDiscoveryTestServer.cs +++ b/Tests/Opc.Ua.Gds.Tests/GlobalDiscoveryTestServer.cs @@ -43,9 +43,9 @@ public class GlobalDiscoveryTestServer public ApplicationConfiguration Config { get; private set; } public int BasePort { get; private set; } - public GlobalDiscoveryTestServer(bool _autoAccept) + public GlobalDiscoveryTestServer(bool autoAccept) { - m_autoAccept = _autoAccept; + s_autoAccept = autoAccept; } public async Task StartServer(bool clean, int basePort = -1) @@ -169,8 +169,8 @@ private static void CertificateValidator_CertificateValidation(CertificateValida { if (e.Error.StatusCode == StatusCodes.BadCertificateUntrusted) { - e.Accept = m_autoAccept; - if (m_autoAccept) + e.Accept = s_autoAccept; + if (s_autoAccept) { Console.WriteLine("Accepted Certificate: {0}", e.Certificate.Subject); } @@ -241,6 +241,6 @@ private static async Task Load(ApplicationInstance app } private GlobalDiscoverySampleServer m_server; - private static bool m_autoAccept = false; + private static bool s_autoAccept = false; } } diff --git a/Tests/Opc.Ua.Gds.Tests/PushTest.cs b/Tests/Opc.Ua.Gds.Tests/PushTest.cs index 81e658e13..ee08d6f37 100644 --- a/Tests/Opc.Ua.Gds.Tests/PushTest.cs +++ b/Tests/Opc.Ua.Gds.Tests/PushTest.cs @@ -400,7 +400,7 @@ public void UpdateCertificateCASigned() Assert.IsNotNull(csr); TestContext.Out.WriteLine("Start Signing Request"); NodeId requestId = m_gdsClient.GDSClient.StartSigningRequest( - _applicationRecord.ApplicationId, + m_applicationRecord.ApplicationId, null, null, csr); @@ -415,7 +415,7 @@ public void UpdateCertificateCASigned() { TestContext.Out.WriteLine("Finish Signing Request"); certificate = m_gdsClient.GDSClient.FinishRequest( - _applicationRecord.ApplicationId, + m_applicationRecord.ApplicationId, requestId, out privateKey, out issuerCertificates); @@ -477,8 +477,8 @@ public void UpdateCertificateSelfSigned(string keyFormat) } X509Certificate2 newCert = CertificateFactory.CreateCertificate( - _applicationRecord.ApplicationUri, - _applicationRecord.ApplicationNames[0].Text, + m_applicationRecord.ApplicationUri, + m_applicationRecord.ApplicationNames[0].Text, m_selfSignedServerCert.Subject, null).CreateForRSA(); @@ -535,7 +535,7 @@ public void UpdateCertificateWithNewKeyPair(string keyFormat) } NodeId requestId = m_gdsClient.GDSClient.StartNewKeyPairRequest( - _applicationRecord.ApplicationId, + m_applicationRecord.ApplicationId, null, null, m_selfSignedServerCert.Subject, @@ -554,7 +554,7 @@ public void UpdateCertificateWithNewKeyPair(string keyFormat) { Thread.Sleep(500); certificate = m_gdsClient.GDSClient.FinishRequest( - _applicationRecord.ApplicationId, + m_applicationRecord.ApplicationId, requestId, out privateKey, out issuerCertificates); @@ -659,11 +659,11 @@ private X509Certificate2Collection CreateCertCollection(ByteStringCollection cer private void RegisterPushServerApplication(string discoveryUrl) { - if (_applicationRecord == null && discoveryUrl != null) + if (m_applicationRecord == null && discoveryUrl != null) { EndpointDescription endpointDescription = CoreClientUtils.SelectEndpoint(m_gdsClient.Configuration, discoveryUrl, true); ApplicationDescription description = endpointDescription.Server; - _applicationRecord = new ApplicationRecordDataType { + m_applicationRecord = new ApplicationRecordDataType { ApplicationNames = new LocalizedTextCollection { description.ApplicationName }, ApplicationUri = description.ApplicationUri, ApplicationType = description.ApplicationType, @@ -672,11 +672,11 @@ private void RegisterPushServerApplication(string discoveryUrl) ServerCapabilities = new StringCollection { "NA" }, }; } - Assert.IsNotNull(_applicationRecord); - Assert.IsNull(_applicationRecord.ApplicationId); - NodeId id = m_gdsClient.GDSClient.RegisterApplication(_applicationRecord); + Assert.IsNotNull(m_applicationRecord); + Assert.IsNull(m_applicationRecord.ApplicationId); + NodeId id = m_gdsClient.GDSClient.RegisterApplication(m_applicationRecord); Assert.IsNotNull(id); - _applicationRecord.ApplicationId = id; + m_applicationRecord.ApplicationId = id; // add issuer and trusted certs to client stores NodeId trustListId = m_gdsClient.GDSClient.GetTrustList(id, null); @@ -689,8 +689,8 @@ private void RegisterPushServerApplication(string discoveryUrl) private void UnRegisterPushServerApplication() { - m_gdsClient.GDSClient.UnregisterApplication(_applicationRecord.ApplicationId); - _applicationRecord.ApplicationId = null; + m_gdsClient.GDSClient.UnregisterApplication(m_applicationRecord.ApplicationId); + m_applicationRecord.ApplicationId = null; } private void VerifyNewPushServerCert(byte[] certificate) @@ -926,7 +926,7 @@ private bool EraseStore(string storePath) private GlobalDiscoveryTestClient m_gdsClient; private ServerConfigurationPushTestClient m_pushClient; private ServerCapabilities m_serverCapabilities; - private ApplicationRecordDataType _applicationRecord; + private ApplicationRecordDataType m_applicationRecord; private X509Certificate2 m_selfSignedServerCert; private string[] m_domainNames; private X509Certificate2 m_caCert; diff --git a/Tests/Opc.Ua.Gds.Tests/ServerConfigurationPushTestClient.cs b/Tests/Opc.Ua.Gds.Tests/ServerConfigurationPushTestClient.cs index 90c8284a2..11e45a9e4 100644 --- a/Tests/Opc.Ua.Gds.Tests/ServerConfigurationPushTestClient.cs +++ b/Tests/Opc.Ua.Gds.Tests/ServerConfigurationPushTestClient.cs @@ -40,7 +40,7 @@ namespace Opc.Ua.Gds.Tests public class ServerConfigurationPushTestClient { - public ServerPushConfigurationClient PushClient => _client; + public ServerPushConfigurationClient PushClient => m_client; public static bool AutoAccept = false; public ServerConfigurationPushTestClient(bool autoAccept) @@ -115,7 +115,7 @@ public async Task LoadClientConfiguration(int port = -1) Config.CertificateValidator.CertificateValidation += new CertificateValidationEventHandler(CertificateValidator_CertificateValidation); ServerConfigurationPushTestClientConfiguration clientConfiguration = application.ApplicationConfiguration.ParseExtension(); - _client = new ServerPushConfigurationClient(application.ApplicationConfiguration) { + m_client = new ServerPushConfigurationClient(application.ApplicationConfiguration) { EndpointUrl = TestUtils.PatchOnlyGDSEndpointUrlPort(clientConfiguration.ServerUrl, port) }; if (String.IsNullOrEmpty(clientConfiguration.AppUserName)) @@ -134,10 +134,10 @@ public void DisconnectClient() { Console.WriteLine("Disconnect Session. Waiting for exit..."); - if (_client != null) + if (m_client != null) { - ServerPushConfigurationClient pushClient = _client; - _client = null; + ServerPushConfigurationClient pushClient = m_client; + m_client = null; pushClient.Disconnect(); } @@ -164,7 +164,7 @@ private static void CertificateValidator_CertificateValidation(CertificateValida } } - private ServerPushConfigurationClient _client; + private ServerPushConfigurationClient m_client; } diff --git a/Tests/Opc.Ua.PubSub.Tests/Configuration/PubSubConfiguratorTests.cs b/Tests/Opc.Ua.PubSub.Tests/Configuration/PubSubConfiguratorTests.cs index b77e221f6..e19fd9f3e 100644 --- a/Tests/Opc.Ua.PubSub.Tests/Configuration/PubSubConfiguratorTests.cs +++ b/Tests/Opc.Ua.PubSub.Tests/Configuration/PubSubConfiguratorTests.cs @@ -66,7 +66,7 @@ public void MyTestInitialize() // Attach triggers that count calls m_uaPubSubConfigurator.ConnectionAdded += (sender, e) => CallCountConnectionAdded += 1; m_uaPubSubConfigurator.ConnectionRemoved += (sender, e) => CallCountConnectionRemoved += 1; - m_uaPubSubConfigurator.PublishedDataSetAdded += (sender,e) => CallCountPublishedDataSetAdded += 1; + m_uaPubSubConfigurator.PublishedDataSetAdded += (sender, e) => CallCountPublishedDataSetAdded += 1; m_uaPubSubConfigurator.PublishedDataSetRemoved += (sender, e) => CallCountPublishedDataSetRemoved += 1; m_uaPubSubConfigurator.DataSetReaderAdded += (sender, e) => CallCountDataSetReaderAdded += 1; m_uaPubSubConfigurator.DataSetReaderRemoved += (sender, e) => CallCountDataSetReaderRemoved += 1; @@ -117,8 +117,8 @@ public void ValidateAddConnectionThrowsArgumentException() connection1.Name = "Name"; StatusCode result = m_uaPubSubConfigurator.AddConnection(connection1); Assert.IsTrue(StatusCode.IsGood(result), "Status code received: " + result); - - Assert.Throws(()=> m_uaPubSubConfigurator.AddConnection(connection1), "AddConnection shall throw ArgumentException if same connection is added twice"); + + Assert.Throws(() => m_uaPubSubConfigurator.AddConnection(connection1), "AddConnection shall throw ArgumentException if same connection is added twice"); } #endregion @@ -147,7 +147,7 @@ public void ValidateAddPublishedDataSetBadBrowseNameDuplicated() { PublishedDataSetDataType publishedDataSetDataType = new PublishedDataSetDataType(); publishedDataSetDataType.Name = "Name"; - StatusCode result = m_uaPubSubConfigurator.AddPublishedDataSet(publishedDataSetDataType); + StatusCode result = m_uaPubSubConfigurator.AddPublishedDataSet(publishedDataSetDataType); Assert.IsTrue(StatusCode.IsGood(result), "Status code received: " + result); PublishedDataSetDataType publishedDataSetDataType2 = new PublishedDataSetDataType(); @@ -177,7 +177,7 @@ public void ValidateReaderGroupAdded() var expected = CallCountReaderGroupAdded + 1; PubSubConnectionDataType newConnection = new PubSubConnectionDataType(); m_uaPubSubConfigurator.AddConnection(newConnection); - uint lastAddedConnId = m_uaPubSubConfigurator.FindIdForObject(newConnection); + uint lastAddedConnId = m_uaPubSubConfigurator.FindIdForObject(newConnection); Assert.IsTrue(StatusCode.IsGood(m_uaPubSubConfigurator.AddReaderGroup(lastAddedConnId, new ReaderGroupDataType()))); Assert.AreEqual(expected, CallCountReaderGroupAdded, 0); } @@ -338,7 +338,7 @@ public void ValidateDataSetReaderAdded() ReaderGroupDataType newReaderGroup = new ReaderGroupDataType(); m_uaPubSubConfigurator.AddReaderGroup(lastAddedConnId, newReaderGroup); uint lastAddedReaderGroupId = m_uaPubSubConfigurator.FindIdForObject(newReaderGroup); - + Assert.IsTrue(StatusCode.IsGood(m_uaPubSubConfigurator.AddDataSetReader(lastAddedReaderGroupId, new DataSetReaderDataType()))); Assert.AreEqual(expected, CallCountDataSetReaderAdded, 0); } @@ -384,7 +384,7 @@ public void ValidateAddDataSetReaderReturnsBadBrowseNameDuplicated() result = m_uaPubSubConfigurator.AddDataSetReader(lastAddedGroup, reader2); Assert.IsTrue(result == StatusCodes.BadBrowseNameDuplicated, "Status code received {0} instead of BadBrowseNameDuplicated", result); - } + } [Test(Description = "Validate AddDataSetReader throws ArgumentException if a dataset-reader is added twice")] public void ValidateAddDataSetReaderThrowsArgumentException() @@ -424,7 +424,7 @@ public void ValidateDataSetWriterAdded() var expected = CallCountDataSetWriterAdded + 1; PubSubConnectionDataType newConnection = new PubSubConnectionDataType(); m_uaPubSubConfigurator.AddConnection(newConnection); - + uint lastAddedConnId = m_uaPubSubConfigurator.FindIdForObject(newConnection); WriterGroupDataType newWriterGroup = new WriterGroupDataType(); @@ -533,7 +533,7 @@ public void ValidatePubConnectionRemovedAndReflectedInApplication() // Prepare an empty configuration for testing the interaction between UaPubSubApplication // and UaPubSubConfigurator UaPubSubApplication uaPubSubApplication = UaPubSubApplication.Create(); - + int initialCount = uaPubSubApplication.PubSubConnections.Count; foreach (PubSubConnectionDataType pscon in m_pubConfigurationLoaded.Connections) { @@ -555,7 +555,7 @@ public void ValidateWriterGroupAddedAndReflectedInApplication() foreach (PubSubConnectionDataType pscon in m_pubConfigurationLoaded.Connections) { PubSubConnectionDataType psconNew = (PubSubConnectionDataType)pscon.MemberwiseClone(); - + var result = uaPubSubApplication.UaPubSubConfigurator.AddConnection(psconNew); Assert.IsTrue(StatusCode.IsGood(result), "Status code received: " + result); @@ -569,7 +569,7 @@ public void ValidateWriterGroupAddedAndReflectedInApplication() uint lastAddedConnId = uaPubSubApplication.UaPubSubConfigurator.FindIdForObject(psconNew); uaPubSubApplication.UaPubSubConfigurator.AddWriterGroup(lastAddedConnId, writerGroup); - + Assert.AreEqual(uaPubSubApplication.PubSubConnections[targetIdx].PubSubConnectionConfiguration, psconNew); Assert.AreEqual(uaPubSubApplication.PubSubConnections[targetIdx]. PubSubConnectionConfiguration.WriterGroups[lastAddedWriterGroupIdx], writerGroup); @@ -595,7 +595,7 @@ public void ValidateWriterGroupRemovedAndReflectedInApplication() WriterGroupDataType writerGroup = (WriterGroupDataType)psconNew.WriterGroups[0].MemberwiseClone(); writerGroup.Name = writerGroup.Name + "_"; - + uint lastAddedConnId = uaPubSubApplication.UaPubSubConfigurator.FindIdForObject(psconNew); int nrInitialWriterGroups = uaPubSubApplication.PubSubConnections[targetIdx]. @@ -641,7 +641,7 @@ public void ValidateDataSetWriterAddedAndReflectedInApplication() result = uaPubSubApplication.UaPubSubConfigurator.AddWriterGroup(lastAddedConnId, writerGroup); Assert.IsTrue(StatusCode.IsGood(result), "Status code received: " + result); - uint addedWriterGroupId = uaPubSubApplication.UaPubSubConfigurator.FindIdForObject(writerGroup); + uint addedWriterGroupId = uaPubSubApplication.UaPubSubConfigurator.FindIdForObject(writerGroup); Assert.AreEqual(uaPubSubApplication.PubSubConnections[targetIdx].PubSubConnectionConfiguration, psconNew); Assert.AreEqual(uaPubSubApplication.PubSubConnections[targetIdx]. PubSubConnectionConfiguration.WriterGroups[lastAddedWriterGroupIdx], writerGroup); @@ -898,7 +898,7 @@ public void ValidateDataSetReaderAddedAndReflectedInApplication() uint lastAddedConnId = uaPubSubApplication.UaPubSubConfigurator.FindIdForObject(psconNew); result = uaPubSubApplication.UaPubSubConfigurator.AddReaderGroup(lastAddedConnId, readerGroup); - Assert.IsTrue(StatusCode.IsGood(result), "Status code received: " + result); + Assert.IsTrue(StatusCode.IsGood(result), "Status code received: " + result); Assert.AreEqual(uaPubSubApplication.PubSubConnections[targetIdx].PubSubConnectionConfiguration, psconNew); Assert.AreEqual(uaPubSubApplication.PubSubConnections[targetIdx]. PubSubConnectionConfiguration.ReaderGroups[lastAddedReaderGroupIdx], readerGroup); diff --git a/Tests/Opc.Ua.PubSub.Tests/Configuration/UaPubSubDataStoreTests.cs b/Tests/Opc.Ua.PubSub.Tests/Configuration/UaPubSubDataStoreTests.cs index 0ba1e7a8d..a2e3b8190 100644 --- a/Tests/Opc.Ua.PubSub.Tests/Configuration/UaPubSubDataStoreTests.cs +++ b/Tests/Opc.Ua.PubSub.Tests/Configuration/UaPubSubDataStoreTests.cs @@ -34,10 +34,10 @@ namespace Opc.Ua.PubSub.Tests.Configuration { [TestFixture(Description = "Tests for UaPubSubDataStore class")] public class UaPubSubDataStoreTests - { + { #region WritePublishedDataItem [Test(Description = "Validate WritePublishedDataItem call with different values")] - + public void ValidateWritePublishedDataItem( [Values(true, (byte)1, (ushort)2, (short)3, (uint)4, (int)5, (ulong)6, (long)7, (double)8, (float)9, "10")] object value) @@ -51,7 +51,7 @@ public void ValidateWritePublishedDataItem( DataValue readDataValue = dataStore.ReadPublishedDataItem(nodeId, Attributes.Value); //Assert - Assert.IsNotNull(readDataValue, "Returned DataValue for written nodeId and attribute is null" ); + Assert.IsNotNull(readDataValue, "Returned DataValue for written nodeId and attribute is null"); Assert.AreEqual(readDataValue.Value, value, "Read after write returned different value"); } @@ -60,7 +60,7 @@ public void ValidateWritePublishedDataItemNullNodeId() { //Arrange UaPubSubDataStore dataStore = new UaPubSubDataStore(); - + //Assert Assert.Throws(typeof(ArgumentException), () => dataStore.WritePublishedDataItem(null)); } @@ -70,9 +70,9 @@ public void ValidateWritePublishedDataItemInvalidAttribute() { //Arrange UaPubSubDataStore dataStore = new UaPubSubDataStore(); - + //Assert - Assert.Throws(typeof(ArgumentException), + Assert.Throws(typeof(ArgumentException), () => dataStore.WritePublishedDataItem(new NodeId("ns=0;i=2253"), (uint)Attributes.AccessLevelEx + 1)); } #endregion @@ -84,10 +84,10 @@ public void ValidateReadPublishedDataItem() //Arrange UaPubSubDataStore dataStore = new UaPubSubDataStore(); NodeId nodeId = new NodeId("ns=1;i=1"); - + //Act DataValue readDataValue = dataStore.ReadPublishedDataItem(nodeId, Attributes.Value); - + //Assert Assert.IsNull(readDataValue, "Returned DataValue for written nodeId and attribute is NOT null"); } @@ -97,7 +97,7 @@ public void ValidateReadPublishedDataItemNullNodeId() { //Arrange UaPubSubDataStore dataStore = new UaPubSubDataStore(); - + //Assert Assert.Throws(typeof(ArgumentException), () => dataStore.ReadPublishedDataItem(null)); } @@ -107,7 +107,7 @@ public void ValidateReadPublishedDataIteminvalidAttribute() { //Arrange UaPubSubDataStore dataStore = new UaPubSubDataStore(); - //Assert + //Assert Assert.Throws(typeof(ArgumentException), () => dataStore.ReadPublishedDataItem(new NodeId("ns=0;i=2253"), (uint)Attributes.AccessLevelEx + 1)); } diff --git a/Tests/Opc.Ua.PubSub.Tests/Encoding/UadpDataSetMessageTests.cs b/Tests/Opc.Ua.PubSub.Tests/Encoding/UadpDataSetMessageTests.cs index e6f99ff03..58692ac64 100644 --- a/Tests/Opc.Ua.PubSub.Tests/Encoding/UadpDataSetMessageTests.cs +++ b/Tests/Opc.Ua.PubSub.Tests/Encoding/UadpDataSetMessageTests.cs @@ -39,8 +39,8 @@ namespace Opc.Ua.PubSub.Tests.Encoding [TestFixture(Description = "Tests for Encoding/Decoding of UadpDataSeMessage objects")] public class UadpDataSetMessageTests { - private string PublisherConfigurationFileName = Path.Combine("Configuration", "PublisherConfiguration.xml"); - private string SubscriberConfigurationFileName = Path.Combine("Configuration", "SubscriberConfiguration.xml"); + private string m_publisherConfigurationFileName = Path.Combine("Configuration", "PublisherConfiguration.xml"); + private string m_subscriberConfigurationFileName = Path.Combine("Configuration", "SubscriberConfiguration.xml"); private PubSubConfigurationDataType m_publisherConfiguration; private UaPubSubApplication m_publisherApplication; @@ -52,20 +52,20 @@ public class UadpDataSetMessageTests private ReaderGroupDataType m_firstReaderGroup; private DataSetReaderDataType m_firstDataSetReaderType; - private const ushort NamespaceIndexSimple = 2; + private const ushort kNamespaceIndexSimple = 2; /// /// just for test match the DataSet1->DataSetWriterId /// - private const ushort TestDataSetWriterId = 1; - private const ushort MessageContentMask = 0x3f; + private const ushort kTestDataSetWriterId = 1; + private const ushort kMessageContentMask = 0x3f; [OneTimeSetUp()] public void MyTestInitialize() { // Create a publisher application // todo refactor to use the MessagesHelper create configuration - string publisherConfigurationFile = Utils.GetAbsoluteFilePath(PublisherConfigurationFileName, true, true, false); + string publisherConfigurationFile = Utils.GetAbsoluteFilePath(m_publisherConfigurationFileName, true, true, false); m_publisherApplication = UaPubSubApplication.Create(publisherConfigurationFile); Assert.IsNotNull(m_publisherApplication, "m_publisherApplication should not be null"); @@ -88,7 +88,7 @@ public void MyTestInitialize() Assert.IsNotEmpty(m_publisherConfiguration.PublishedDataSets, "m_publisherConfiguration.PublishedDataSets should not be empty"); // Create a subscriber application - string subscriberConfigurationFile = Utils.GetAbsoluteFilePath(SubscriberConfigurationFileName, true, true, false); + string subscriberConfigurationFile = Utils.GetAbsoluteFilePath(m_subscriberConfigurationFileName, true, true, false); m_subscriberApplication = UaPubSubApplication.Create(subscriberConfigurationFile); Assert.IsNotNull(m_subscriberApplication, "m_subscriberApplication should not be null"); @@ -127,7 +127,7 @@ public void ValidateDataSetMessageMask( // Act // change network message mask - for (uint dataSetMessageContentMask = 0; dataSetMessageContentMask < MessageContentMask; dataSetMessageContentMask++) + for (uint dataSetMessageContentMask = 0; dataSetMessageContentMask < kMessageContentMask; dataSetMessageContentMask++) { uadpDataSetMessage.SetMessageContentMask((UadpDataSetMessageContentMask)dataSetMessageContentMask); @@ -236,15 +236,15 @@ public void ValidateMajorVersionEqMinorVersionEq( )] DataSetFieldContentMask dataSetFieldContentMask) { - const int VersionValue = 2; + const int versionValue = 2; // Arrange UadpDataSetMessage uadpDataSetMessage = GetFirstDataSetMessage(dataSetFieldContentMask); // Act uadpDataSetMessage.SetMessageContentMask(UadpDataSetMessageContentMask.MajorVersion | UadpDataSetMessageContentMask.MinorVersion); - uadpDataSetMessage.MetaDataVersion.MajorVersion = VersionValue; - uadpDataSetMessage.MetaDataVersion.MinorVersion = VersionValue * 10; + uadpDataSetMessage.MetaDataVersion.MajorVersion = versionValue; + uadpDataSetMessage.MetaDataVersion.MinorVersion = versionValue * 10; IServiceMessageContext messageContextEncode = new ServiceMessageContext(); byte[] bytes; @@ -261,11 +261,11 @@ public void ValidateMajorVersionEqMinorVersionEq( // Make sure the reader MajorVersion and MinorVersion are the same with the ones on the dataset message DataSetReaderDataType reader = (DataSetReaderDataType)m_firstDataSetReaderType.MemberwiseClone(); - reader.DataSetMetaData.ConfigurationVersion.MajorVersion = VersionValue; - reader.DataSetMetaData.ConfigurationVersion.MinorVersion = VersionValue * 10; + reader.DataSetMetaData.ConfigurationVersion.MajorVersion = versionValue; + reader.DataSetMetaData.ConfigurationVersion.MinorVersion = versionValue * 10; // workaround - uaDataSetMessageDecoded.DataSetWriterId = TestDataSetWriterId; + uaDataSetMessageDecoded.DataSetWriterId = kTestDataSetWriterId; uaDataSetMessageDecoded.DecodePossibleDataSetReader(decoder, reader); decoder.Dispose(); @@ -325,7 +325,7 @@ public void ValidateMajorVersionEqMinorVersionDiffer( reader.DataSetMetaData.ConfigurationVersion.MinorVersion = uadpDataSetMessage.MetaDataVersion.MinorVersion + 1; // workaround - uaDataSetMessageDecoded.DataSetWriterId = TestDataSetWriterId; + uaDataSetMessageDecoded.DataSetWriterId = kTestDataSetWriterId; uaDataSetMessageDecoded.DecodePossibleDataSetReader(decoder, reader); decoder.Dispose(); @@ -384,7 +384,7 @@ public void ValidateMajorVersionDiffMinorVersionEq( reader.DataSetMetaData.ConfigurationVersion.MinorVersion = uadpDataSetMessage.MetaDataVersion.MinorVersion; // workaround - uaDataSetMessageDecoded.DataSetWriterId = TestDataSetWriterId; + uaDataSetMessageDecoded.DataSetWriterId = kTestDataSetWriterId; uaDataSetMessageDecoded.DecodePossibleDataSetReader(decoder, reader); decoder.Dispose(); @@ -412,15 +412,15 @@ public void ValidateMajorVersionDiffMinorVersionDiff( )] DataSetFieldContentMask dataSetFieldContentMask) { - const int VersionValue = 2; + const int versionValue = 2; // Arrange UadpDataSetMessage uadpDataSetMessage = GetFirstDataSetMessage(dataSetFieldContentMask); // Act uadpDataSetMessage.SetMessageContentMask(UadpDataSetMessageContentMask.MajorVersion | UadpDataSetMessageContentMask.MinorVersion); - uadpDataSetMessage.MetaDataVersion.MajorVersion = VersionValue; - uadpDataSetMessage.MetaDataVersion.MinorVersion = VersionValue * 10; + uadpDataSetMessage.MetaDataVersion.MajorVersion = versionValue; + uadpDataSetMessage.MetaDataVersion.MinorVersion = versionValue * 10; IServiceMessageContext messageContextEncode = new ServiceMessageContext(); byte[] bytes; @@ -441,7 +441,7 @@ public void ValidateMajorVersionDiffMinorVersionDiff( reader.DataSetMetaData.ConfigurationVersion.MinorVersion = uadpDataSetMessage.MetaDataVersion.MinorVersion + 1; // workaround - uaDataSetMessageDecoded.DataSetWriterId = TestDataSetWriterId; + uaDataSetMessageDecoded.DataSetWriterId = kTestDataSetWriterId; uaDataSetMessageDecoded.DecodePossibleDataSetReader(decoder, reader); decoder.Dispose(); @@ -492,13 +492,13 @@ private void LoadData() #region DataSet Simple // DataSet 'Simple' fill with data DataValue booleanValue = new DataValue(new Variant(true), StatusCodes.Good); - m_publisherApplication.DataStore.WritePublishedDataItem(new NodeId("BoolToggle", NamespaceIndexSimple), Attributes.Value, booleanValue); + m_publisherApplication.DataStore.WritePublishedDataItem(new NodeId("BoolToggle", kNamespaceIndexSimple), Attributes.Value, booleanValue); DataValue scalarInt32XValue = new DataValue(new Variant(100), StatusCodes.Good); - m_publisherApplication.DataStore.WritePublishedDataItem(new NodeId("Int32", NamespaceIndexSimple), Attributes.Value, scalarInt32XValue); + m_publisherApplication.DataStore.WritePublishedDataItem(new NodeId("Int32", kNamespaceIndexSimple), Attributes.Value, scalarInt32XValue); DataValue scalarInt32YValue = new DataValue(new Variant(50), StatusCodes.Good); - m_publisherApplication.DataStore.WritePublishedDataItem(new NodeId("Int32Fast", NamespaceIndexSimple), Attributes.Value, scalarInt32YValue); + m_publisherApplication.DataStore.WritePublishedDataItem(new NodeId("Int32Fast", kNamespaceIndexSimple), Attributes.Value, scalarInt32YValue); DataValue dateTimeValue = new DataValue(new Variant(DateTime.UtcNow), StatusCodes.Good); - m_publisherApplication.DataStore.WritePublishedDataItem(new NodeId("DateTime", NamespaceIndexSimple), Attributes.Value, dateTimeValue); + m_publisherApplication.DataStore.WritePublishedDataItem(new NodeId("DateTime", kNamespaceIndexSimple), Attributes.Value, dateTimeValue); #endregion } @@ -582,7 +582,7 @@ private void CompareEncodeDecode(UadpDataSetMessage uadpDataSetMessage) BinaryDecoder decoder = new BinaryDecoder(bytes, messageContextEncode); // workaround - uaDataSetMessageDecoded.DataSetWriterId = TestDataSetWriterId; + uaDataSetMessageDecoded.DataSetWriterId = kTestDataSetWriterId; uaDataSetMessageDecoded.DecodePossibleDataSetReader(decoder, m_firstDataSetReaderType); decoder.Dispose(); diff --git a/Tests/Opc.Ua.PubSub.Tests/Encoding/UadpNetworkMessageTests.cs b/Tests/Opc.Ua.PubSub.Tests/Encoding/UadpNetworkMessageTests.cs index 5d336f26b..384b4d678 100644 --- a/Tests/Opc.Ua.PubSub.Tests/Encoding/UadpNetworkMessageTests.cs +++ b/Tests/Opc.Ua.PubSub.Tests/Encoding/UadpNetworkMessageTests.cs @@ -41,8 +41,8 @@ namespace Opc.Ua.PubSub.Tests.Encoding [TestFixture(Description = "Tests for Encoding/Decoding of UadpNetworkMessage objects")] public class UadpNetworkMessageTests { - private string PublisherConfigurationFileName = Path.Combine("Configuration", "PublisherConfiguration.xml"); - private string SubscriberConfigurationFileName = Path.Combine("Configuration", "SubscriberConfiguration.xml"); + private string m_publisherConfigurationFileName = Path.Combine("Configuration", "PublisherConfiguration.xml"); + private string m_subscriberConfigurationFileName = Path.Combine("Configuration", "SubscriberConfiguration.xml"); private PubSubConfigurationDataType m_publisherConfiguration; private UaPubSubApplication m_publisherApplication; @@ -58,13 +58,13 @@ public class UadpNetworkMessageTests public const ushort NamespaceIndexAllTypes = 3; public const ushort NamespaceIndexMassTest = 4; - private const uint NetworkMessageContentMask = 0x3ff; + private const uint kNetworkMessageContentMask = 0x3ff; [OneTimeSetUp()] public void MyTestInitialize() { // Create a publisher application - string publisherConfigurationFile = Utils.GetAbsoluteFilePath(PublisherConfigurationFileName, true, true, false); + string publisherConfigurationFile = Utils.GetAbsoluteFilePath(m_publisherConfigurationFileName, true, true, false); m_publisherApplication = UaPubSubApplication.Create(publisherConfigurationFile); Assert.IsNotNull(m_publisherApplication, "m_publisherApplication shall not be null"); @@ -84,7 +84,7 @@ public void MyTestInitialize() Assert.IsNotNull(m_firstWriterGroup, "m_firstWriterGroup should not be null"); // Create a subscriber application - string subscriberConfigurationFile = Utils.GetAbsoluteFilePath(SubscriberConfigurationFileName, true, true, false); + string subscriberConfigurationFile = Utils.GetAbsoluteFilePath(m_subscriberConfigurationFileName, true, true, false); m_subscriberApplication = UaPubSubApplication.Create(subscriberConfigurationFile); Assert.IsNotNull(m_subscriberApplication, "m_subscriberApplication should not be null"); diff --git a/Tests/Opc.Ua.PubSub.Tests/PublishedData/DataCollectorTests.cs b/Tests/Opc.Ua.PubSub.Tests/PublishedData/DataCollectorTests.cs index 796cbd9d0..cbc499673 100644 --- a/Tests/Opc.Ua.PubSub.Tests/PublishedData/DataCollectorTests.cs +++ b/Tests/Opc.Ua.PubSub.Tests/PublishedData/DataCollectorTests.cs @@ -39,7 +39,7 @@ namespace Opc.Ua.PubSub.Tests.PublishedData [TestFixture(Description = "Tests for DataCollector class")] public class DataCollectorTests { - private string ConfigurationFileName = Path.Combine("Configuration", "PublisherConfiguration.xml"); + private string m_configurationFileName = Path.Combine("Configuration", "PublisherConfiguration.xml"); public const int NamespaceIndex = 2; @@ -57,7 +57,7 @@ public void ValidateAddPublishedDataSetWithNullParameter() public void ValidateAddPublishedDataSet() { //Arrange - string configurationFile = Utils.GetAbsoluteFilePath(ConfigurationFileName, true, true, false); + string configurationFile = Utils.GetAbsoluteFilePath(m_configurationFileName, true, true, false); var pubSubConfiguration = UaPubSubConfigurationHelper.LoadConfiguration(configurationFile); DataCollector dataCollector = new DataCollector(new UaPubSubDataStore()); diff --git a/Tests/Opc.Ua.PubSub.Tests/Transport/MqttPubSubConnectionTests.cs b/Tests/Opc.Ua.PubSub.Tests/Transport/MqttPubSubConnectionTests.cs index 14e13d09e..4e70545e3 100644 --- a/Tests/Opc.Ua.PubSub.Tests/Transport/MqttPubSubConnectionTests.cs +++ b/Tests/Opc.Ua.PubSub.Tests/Transport/MqttPubSubConnectionTests.cs @@ -43,12 +43,12 @@ namespace Opc.Ua.PubSub.Tests.Transport [TestFixture(Description = "Tests for Mqtt connections")] public partial class MqttPubSubConnectionTests { - private const UInt16 NamespaceIndexAllTypes = 3; + private const UInt16 kNamespaceIndexAllTypes = 3; private ManualResetEvent m_uaDataShutdownEvent; private ManualResetEvent m_uaMetaDataShutdownEvent; private ManualResetEvent m_uaConfigurationUpdateEvent; - private const int EstimatedPublishingTime = 60000; + private const int kEstimatedPublishingTime = 60000; [OneTimeSetUp()] public void MyTestInitialize() @@ -92,7 +92,7 @@ public void ValidateMqttLocalPubSubConnectionWithUadp( uadpNetworkMessageContentMask: uadpNetworkMessageContentMask, uadpDataSetMessageContentMask: uadpDataSetMessageContentMask, dataSetFieldContentMask: dataSetFieldContentMask, - dataSetMetaDataArray: dataSetMetaDataArray, nameSpaceIndexForData: NamespaceIndexAllTypes); + dataSetMetaDataArray: dataSetMetaDataArray, nameSpaceIndexForData: kNamespaceIndexAllTypes); Assert.IsNotNull(publisherConfiguration, "publisherConfiguration should not be null"); // Configure the mqtt publisher configuration with the MQTTbroker @@ -103,7 +103,7 @@ public void ValidateMqttLocalPubSubConnectionWithUadp( // Create publisher application for multiple datasets UaPubSubApplication publisherApplication = UaPubSubApplication.Create(publisherConfiguration); - MessagesHelper.LoadData(publisherApplication, NamespaceIndexAllTypes); + MessagesHelper.LoadData(publisherApplication, kNamespaceIndexAllTypes); IUaPubSubConnection publisherConnection = publisherApplication.PubSubConnections.First(); Assert.IsNotNull(publisherConnection, "Publisher first connection should not be null"); @@ -126,7 +126,7 @@ public void ValidateMqttLocalPubSubConnectionWithUadp( uadpNetworkMessageContentMask: uadpNetworkMessageContentMask, uadpDataSetMessageContentMask: uadpDataSetMessageContentMask, dataSetFieldContentMask: dataSetFieldContentMask, - dataSetMetaDataArray: dataSetMetaDataArray, nameSpaceIndexForData: NamespaceIndexAllTypes); + dataSetMetaDataArray: dataSetMetaDataArray, nameSpaceIndexForData: kNamespaceIndexAllTypes); Assert.IsNotNull(subscriberConfiguration, "subscriberConfiguration should not be null"); // Create subscriber application for multiple datasets @@ -155,7 +155,7 @@ public void ValidateMqttLocalPubSubConnectionWithUadp( publisherConnection.Start(); //Assert - if (!m_uaDataShutdownEvent.WaitOne(EstimatedPublishingTime)) + if (!m_uaDataShutdownEvent.WaitOne(kEstimatedPublishingTime)) { Assert.Fail("The UADP message was not received"); } @@ -203,7 +203,7 @@ public void ValidateMqttLocalPubSubConnectionWithJson( jsonNetworkMessageContentMask: jsonNetworkMessageContentMask, jsonDataSetMessageContentMask: jsonDataSetMessageContentMask, dataSetFieldContentMask: dataSetFieldContentMask, - dataSetMetaDataArray: dataSetMetaDataArray, nameSpaceIndexForData: NamespaceIndexAllTypes, + dataSetMetaDataArray: dataSetMetaDataArray, nameSpaceIndexForData: kNamespaceIndexAllTypes, metaDataUpdateTime); Assert.IsNotNull(publisherConfiguration, "publisherConfiguration should not be null"); @@ -215,7 +215,7 @@ public void ValidateMqttLocalPubSubConnectionWithJson( // Create publisher application for multiple datasets UaPubSubApplication publisherApplication = UaPubSubApplication.Create(publisherConfiguration); - MessagesHelper.LoadData(publisherApplication, NamespaceIndexAllTypes); + MessagesHelper.LoadData(publisherApplication, kNamespaceIndexAllTypes); IUaPubSubConnection publisherConnection = publisherApplication.PubSubConnections.First(); Assert.IsNotNull(publisherConnection, "Publisher first connection should not be null"); @@ -242,7 +242,7 @@ public void ValidateMqttLocalPubSubConnectionWithJson( jsonNetworkMessageContentMask: jsonNetworkMessageContentMask, jsonDataSetMessageContentMask: jsonDataSetMessageContentMask, dataSetFieldContentMask: dataSetFieldContentMask, - dataSetMetaDataArray: dataSetMetaDataArray, nameSpaceIndexForData: NamespaceIndexAllTypes); + dataSetMetaDataArray: dataSetMetaDataArray, nameSpaceIndexForData: kNamespaceIndexAllTypes); Assert.IsNotNull(subscriberConfiguration, "subscriberConfiguration should not be null"); // Create subscriber application for multiple datasets @@ -277,11 +277,11 @@ public void ValidateMqttLocalPubSubConnectionWithJson( publisherConnection.Start(); //Assert - if (!m_uaDataShutdownEvent.WaitOne(EstimatedPublishingTime)) + if (!m_uaDataShutdownEvent.WaitOne(kEstimatedPublishingTime)) { Assert.Fail("The JSON message was not received"); } - if (!m_uaMetaDataShutdownEvent.WaitOne(EstimatedPublishingTime)) + if (!m_uaMetaDataShutdownEvent.WaitOne(kEstimatedPublishingTime)) { Assert.Fail("The JSON metadata message was not received"); } diff --git a/Tests/Opc.Ua.PubSub.Tests/Transport/UdpClientCreatorTests.cs b/Tests/Opc.Ua.PubSub.Tests/Transport/UdpClientCreatorTests.cs index eea9c805c..827df9cdb 100644 --- a/Tests/Opc.Ua.PubSub.Tests/Transport/UdpClientCreatorTests.cs +++ b/Tests/Opc.Ua.PubSub.Tests/Transport/UdpClientCreatorTests.cs @@ -41,13 +41,12 @@ namespace Opc.Ua.PubSub.Tests.Transport { public partial class UdpClientCreatorTests { - private string PublisherConfigurationFileName = Path.Combine("Configuration", "PublisherConfiguration.xml"); - - private string UrlScheme = string.Format("{0}://", Utils.UriSchemeOpcUdp); + private string m_publisherConfigurationFileName = Path.Combine("Configuration", "PublisherConfiguration.xml"); + private string m_urlScheme = string.Format("{0}://", Utils.UriSchemeOpcUdp); // generic well known address - private string UrlHostName = "192.168.0.1"; - private const int DiscoveryPortNo = 4840; + private string m_urlHostName = "192.168.0.1"; + private const int kDiscoveryPortNo = 4840; private string m_defaultUrl; @@ -60,9 +59,9 @@ public void MyTestInitialize() var localhost = UdpPubSubConnectionTests.GetFirstNic(); if (localhost != null && localhost.Address != null) { - UrlHostName = localhost.Address.ToString(); + m_urlHostName = localhost.Address.ToString(); } - m_defaultUrl = string.Concat(UrlScheme, UrlHostName, ":", DiscoveryPortNo); + m_defaultUrl = string.Concat(m_urlScheme, m_urlHostName, ":", kDiscoveryPortNo); } [Test(Description = "Validate url value")] @@ -71,14 +70,14 @@ public void ValidateUdpClientCreatorGetEndPoint() IPEndPoint ipEndPoint = UdpClientCreator.GetEndPoint(m_defaultUrl); Assert.IsNotNull(ipEndPoint, "GetEndPoint failed: ipEndPoint is null"); - Assert.AreEqual(ipEndPoint.Address.ToString(), UrlHostName, "The url hostname: {0} is not equal to specified hostname: {1}", ipEndPoint.Address.ToString(), UrlHostName); - Assert.AreEqual(ipEndPoint.Port, DiscoveryPortNo, "The url port: {0} is not equal to specified port: {1}", ipEndPoint.Port, DiscoveryPortNo); + Assert.AreEqual(ipEndPoint.Address.ToString(), m_urlHostName, "The url hostname: {0} is not equal to specified hostname: {1}", ipEndPoint.Address.ToString(), m_urlHostName); + Assert.AreEqual(ipEndPoint.Port, kDiscoveryPortNo, "The url port: {0} is not equal to specified port: {1}", ipEndPoint.Port, kDiscoveryPortNo); } [Test(Description = "Invalidate url Scheme value")] public void InvalidateUdpClientCreatorUrlScheme() { - IPEndPoint ipEndPoint = UdpClientCreator.GetEndPoint(string.Concat(Utils.UriSchemeOpcUdp, ":", UrlHostName, ":", DiscoveryPortNo)); + IPEndPoint ipEndPoint = UdpClientCreator.GetEndPoint(string.Concat(Utils.UriSchemeOpcUdp, ":", m_urlHostName, ":", kDiscoveryPortNo)); Assert.IsNull(ipEndPoint, "Url scheme is not corect!"); } @@ -86,19 +85,19 @@ public void InvalidateUdpClientCreatorUrlScheme() public void InvalidateUdpClientCreatorUrlHostName() { string urlHostNameChanged = "192.168.0.280"; - string localhostIP = ReplaceLastIpByte(UrlHostName, "280"); + string localhostIP = ReplaceLastIpByte(m_urlHostName, "280"); if (localhostIP != null) { urlHostNameChanged = localhostIP; } - IPEndPoint ipEndPoint = UdpClientCreator.GetEndPoint(string.Concat(UrlScheme, urlHostNameChanged, ":", DiscoveryPortNo)); + IPEndPoint ipEndPoint = UdpClientCreator.GetEndPoint(string.Concat(m_urlScheme, urlHostNameChanged, ":", kDiscoveryPortNo)); Assert.IsNull(ipEndPoint, "Url hostname is not corect!"); } [Test(Description = "Invalidate url Port number value")] public void InvalidateUdpClientCreatorUrlPort() { - IPEndPoint ipEndPoint = UdpClientCreator.GetEndPoint(string.Concat(UrlScheme, UrlHostName, ":", "0")); + IPEndPoint ipEndPoint = UdpClientCreator.GetEndPoint(string.Concat(m_urlScheme, m_urlHostName, ":", "0")); Assert.IsNull(ipEndPoint, "Url port number is wrong"); } @@ -106,12 +105,12 @@ public void InvalidateUdpClientCreatorUrlPort() public void ValidateUdpClientCreatorUrlIPAddress() { string urlHostNameChanged = "192.168.0.200"; - string localhostIP = ReplaceLastIpByte(UrlHostName, "200"); + string localhostIP = ReplaceLastIpByte(m_urlHostName, "200"); if (localhostIP != null) { urlHostNameChanged = localhostIP; } - var address = string.Concat(UrlScheme, urlHostNameChanged, ":", DiscoveryPortNo); + var address = string.Concat(m_urlScheme, urlHostNameChanged, ":", kDiscoveryPortNo); IPEndPoint ipEndPoint = UdpClientCreator.GetEndPoint(address); Assert.IsNotNull(ipEndPoint, $"Url hostname({address}) is not correct!"); } @@ -125,7 +124,7 @@ public void ValidateUdpClientCreatorUrlHostname() Assert.Ignore("Skip UdpClientCreatorUrl test on mac OS."); } - IPEndPoint ipEndPoint = UdpClientCreator.GetEndPoint(string.Concat(UrlScheme, Environment.MachineName, ":", DiscoveryPortNo)); + IPEndPoint ipEndPoint = UdpClientCreator.GetEndPoint(string.Concat(m_urlScheme, Environment.MachineName, ":", kDiscoveryPortNo)); Assert.IsNotNull(ipEndPoint, "Url hostname is not corect!"); } @@ -136,7 +135,7 @@ public void ValidateUdpClientCreatorUrlHostname() public void ValidateUdpClientCreatorGetUdpClients() { // Create a publisher application - string configurationFile = Utils.GetAbsoluteFilePath(PublisherConfigurationFileName, true, true, false); + string configurationFile = Utils.GetAbsoluteFilePath(m_publisherConfigurationFileName, true, true, false); UaPubSubApplication publisherApplication = UaPubSubApplication.Create(configurationFile); Assert.IsNotNull(publisherApplication, "m_publisherApplication should not be null"); diff --git a/Tests/Opc.Ua.PubSub.Tests/Transport/UdpPubSubConnectionTests.Publisher.cs b/Tests/Opc.Ua.PubSub.Tests/Transport/UdpPubSubConnectionTests.Publisher.cs index cefe15537..432db1017 100644 --- a/Tests/Opc.Ua.PubSub.Tests/Transport/UdpPubSubConnectionTests.Publisher.cs +++ b/Tests/Opc.Ua.PubSub.Tests/Transport/UdpPubSubConnectionTests.Publisher.cs @@ -57,7 +57,7 @@ public void ValidateUdpPubSubConnectionNetworkMessagePublishUnicast() Assert.IsNotNull(localhost.Address, "localhost.Address is null"); //create publisher configuration object with modified port - string configurationFile = Utils.GetAbsoluteFilePath(PublisherConfigurationFileName, true, true, false); + string configurationFile = Utils.GetAbsoluteFilePath(m_publisherConfigurationFileName, true, true, false); PubSubConfigurationDataType publisherConfiguration = UaPubSubConfigurationHelper.LoadConfiguration(configurationFile); Assert.IsNotNull(publisherConfiguration, "publisherConfiguration is null"); Assert.Greater(publisherConfiguration.Connections.Count, 1, "publisherConfiguration.Connection should be > 0"); @@ -66,7 +66,7 @@ public void ValidateUdpPubSubConnectionNetworkMessagePublishUnicast() Assert.IsNotNull(unicastIPAddress, "unicastIPAddress is null"); NetworkAddressUrlDataType publisherAddress = new NetworkAddressUrlDataType(); - publisherAddress.Url = string.Format(UdpUrlFormat, Utils.UriSchemeOpcUdp, unicastIPAddress.ToString()); + publisherAddress.Url = string.Format(kUdpUrlFormat, Utils.UriSchemeOpcUdp, unicastIPAddress.ToString()); publisherConfiguration.Connections.First().Address = new ExtensionObject(publisherAddress); //create publisher UaPubSubApplication with changed configuration settings @@ -80,7 +80,7 @@ public void ValidateUdpPubSubConnectionNetworkMessagePublishUnicast() m_shutdownEvent = new ManualResetEvent(false); //setup uadp client for receiving from multicast (simulate a subscriber unicast) - UdpClient udpUnicastClient = new UdpClientUnicast(localhost.Address, DiscoveryPortNo); + UdpClient udpUnicastClient = new UdpClientUnicast(localhost.Address, kDiscoveryPortNo); Assert.IsNotNull(udpUnicastClient, "udpUnicastClient is null"); udpUnicastClient.BeginReceive(new AsyncCallback(OnReceive), udpUnicastClient); @@ -107,7 +107,7 @@ public void ValidateUdpPubSubConnectionNetworkMessagePublishUnicast() //Assert bool noMessageReceived = false; - if (!m_shutdownEvent.WaitOne(EstimatedPublishingTime)) + if (!m_shutdownEvent.WaitOne(kEstimatedPublishingTime)) { noMessageReceived = true; } @@ -134,7 +134,7 @@ public void ValidateUdpPubSubConnectionNetworkMessagePublishBroadcast() Assert.IsNotNull(localhost.Address, "localhost.Address is null"); //create publisher configuration object with modified port - string configurationFile = Utils.GetAbsoluteFilePath(PublisherConfigurationFileName, true, true, false); + string configurationFile = Utils.GetAbsoluteFilePath(m_publisherConfigurationFileName, true, true, false); PubSubConfigurationDataType publisherConfiguration = UaPubSubConfigurationHelper.LoadConfiguration(configurationFile); Assert.IsNotNull(publisherConfiguration, "publisherConfiguration is null"); Assert.Greater(publisherConfiguration.Connections.Count, 1, "publisherConfiguration.Connection should be > 0"); @@ -143,7 +143,7 @@ public void ValidateUdpPubSubConnectionNetworkMessagePublishBroadcast() Assert.IsNotNull(broadcastIPAddress, "broadcastIPAddress is null"); NetworkAddressUrlDataType publisherAddress = new NetworkAddressUrlDataType(); - publisherAddress.Url = string.Format(UdpUrlFormat, Utils.UriSchemeOpcUdp, broadcastIPAddress.ToString()); + publisherAddress.Url = string.Format(kUdpUrlFormat, Utils.UriSchemeOpcUdp, broadcastIPAddress.ToString()); publisherConfiguration.Connections.First().Address = new ExtensionObject(publisherAddress); //create publisher UaPubSubApplication with changed configuration settings @@ -157,7 +157,7 @@ public void ValidateUdpPubSubConnectionNetworkMessagePublishBroadcast() m_shutdownEvent = new ManualResetEvent(false); //setup uadp client for receiving from broadcast (simulate a subscriber broadcast) - UdpClient udpBroadcastClient = new UdpClientBroadcast(localhost.Address, DiscoveryPortNo, UsedInContext.Subscriber); + UdpClient udpBroadcastClient = new UdpClientBroadcast(localhost.Address, kDiscoveryPortNo, UsedInContext.Subscriber); udpBroadcastClient.BeginReceive(new AsyncCallback(OnReceive), udpBroadcastClient); // prepare a network message @@ -181,7 +181,7 @@ public void ValidateUdpPubSubConnectionNetworkMessagePublishBroadcast() //Assert bool noMessageReceived = false; - if (!m_shutdownEvent.WaitOne(EstimatedPublishingTime)) + if (!m_shutdownEvent.WaitOne(kEstimatedPublishingTime)) { noMessageReceived = true; } @@ -208,17 +208,17 @@ public void ValidateUdpPubSubConnectionNetworkMessagePublishMulticast() Assert.IsNotNull(localhost.Address, "localhost.Address is null"); //create publisher configuration object with modified port - string configurationFile = Utils.GetAbsoluteFilePath(PublisherConfigurationFileName, true, true, false); + string configurationFile = Utils.GetAbsoluteFilePath(m_publisherConfigurationFileName, true, true, false); PubSubConfigurationDataType publisherConfiguration = UaPubSubConfigurationHelper.LoadConfiguration(configurationFile); Assert.IsNotNull(publisherConfiguration, "publisherConfiguration is null"); Assert.Greater(publisherConfiguration.Connections.Count, 1, "publisherConfiguration.Connection should be > 0"); - IPAddress[] multicastIPAddresses = Dns.GetHostAddresses(UdpMulticastIp); + IPAddress[] multicastIPAddresses = Dns.GetHostAddresses(kUdpMulticastIp); IPAddress multicastIPAddress = multicastIPAddresses.First(); Assert.IsNotNull(multicastIPAddress, "multicastIPAddress is null"); NetworkAddressUrlDataType publisherAddress = new NetworkAddressUrlDataType(); - publisherAddress.Url = string.Format(UdpUrlFormat, Utils.UriSchemeOpcUdp, multicastIPAddress.ToString()); + publisherAddress.Url = string.Format(kUdpUrlFormat, Utils.UriSchemeOpcUdp, multicastIPAddress.ToString()); publisherConfiguration.Connections.First().Address = new ExtensionObject(publisherAddress); //create publisher UaPubSubApplication with changed configuration settings @@ -232,7 +232,7 @@ public void ValidateUdpPubSubConnectionNetworkMessagePublishMulticast() m_shutdownEvent = new ManualResetEvent(false); //setup uadp client for receiving from multicast (simulate a subscriber multicast) - UdpClient udpMulticastClient = new UdpClientMulticast(localhost.Address, multicastIPAddress, DiscoveryPortNo); + UdpClient udpMulticastClient = new UdpClientMulticast(localhost.Address, multicastIPAddress, kDiscoveryPortNo); udpMulticastClient.BeginReceive(new AsyncCallback(OnReceive), udpMulticastClient); // prepare a network message @@ -256,7 +256,7 @@ public void ValidateUdpPubSubConnectionNetworkMessagePublishMulticast() //Assert bool noMessageReceived = false; - if (!m_shutdownEvent.WaitOne(EstimatedPublishingTime)) + if (!m_shutdownEvent.WaitOne(kEstimatedPublishingTime)) { noMessageReceived = true; } @@ -283,18 +283,18 @@ public void ValidateUdpPubSubConnectionNetworkMessageDiscoveryPublish() Assert.IsNotNull(localhost.Address, "localhost.Address is null"); //create publisher configuration object with modified port - string configurationFile = Utils.GetAbsoluteFilePath(PublisherConfigurationFileName, true, true, false); + string configurationFile = Utils.GetAbsoluteFilePath(m_publisherConfigurationFileName, true, true, false); PubSubConfigurationDataType publisherConfiguration = UaPubSubConfigurationHelper.LoadConfiguration(configurationFile); Assert.IsNotNull(publisherConfiguration, "publisherConfiguration is null"); Assert.Greater(publisherConfiguration.Connections.Count, 1, "publisherConfiguration.Connection should be > 0"); //discovery IP adress 224.0.2.14 - IPAddress[] multicastIPAddresses = Dns.GetHostAddresses(UdpDiscoveryIp); + IPAddress[] multicastIPAddresses = Dns.GetHostAddresses(kUdpDiscoveryIp); IPAddress multicastIPAddress = multicastIPAddresses.First(); Assert.IsNotNull(multicastIPAddress, "multicastIPAddress is null"); NetworkAddressUrlDataType publisherAddress = new NetworkAddressUrlDataType(); - publisherAddress.Url = string.Format(UdpUrlFormat, Utils.UriSchemeOpcUdp, multicastIPAddress.ToString()); + publisherAddress.Url = string.Format(kUdpUrlFormat, Utils.UriSchemeOpcUdp, multicastIPAddress.ToString()); publisherConfiguration.Connections[0].Address = new ExtensionObject(publisherAddress); //create publisher UaPubSubApplication with changed configuration settings @@ -308,7 +308,7 @@ public void ValidateUdpPubSubConnectionNetworkMessageDiscoveryPublish() m_shutdownEvent = new ManualResetEvent(false); //setup uadp client for receiving from multicast (simulate a subscriber multicast) - UdpClient udpMulticastClient = new UdpClientMulticast(localhost.Address, multicastIPAddress, DiscoveryPortNo); + UdpClient udpMulticastClient = new UdpClientMulticast(localhost.Address, multicastIPAddress, kDiscoveryPortNo); udpMulticastClient.BeginReceive(new AsyncCallback(OnReceive), udpMulticastClient); // prepare a network message @@ -337,7 +337,7 @@ public void ValidateUdpPubSubConnectionNetworkMessageDiscoveryPublish() //Assert bool noMessageReceived = false; - if (!m_shutdownEvent.WaitOne(EstimatedPublishingTime)) + if (!m_shutdownEvent.WaitOne(kEstimatedPublishingTime)) { noMessageReceived = true; } diff --git a/Tests/Opc.Ua.PubSub.Tests/Transport/UdpPubSubConnectionTests.Subscriber.cs b/Tests/Opc.Ua.PubSub.Tests/Transport/UdpPubSubConnectionTests.Subscriber.cs index 19dade628..a2ba8696c 100644 --- a/Tests/Opc.Ua.PubSub.Tests/Transport/UdpPubSubConnectionTests.Subscriber.cs +++ b/Tests/Opc.Ua.PubSub.Tests/Transport/UdpPubSubConnectionTests.Subscriber.cs @@ -46,7 +46,7 @@ namespace Opc.Ua.PubSub.Tests.Transport #endif public partial class UdpPubSubConnectionTests { - private static object m_lock = new object(); + private static object s_lock = new object(); private byte[] m_sentBytes; [Test(Description = "Validate subscriber data on first nic;" + @@ -58,12 +58,12 @@ public void ValidateUdpPubSubConnectionNetworkMessageReceiveFromUnicast() Assert.IsNotNull(localhost, "localhost is null"); Assert.IsNotNull(localhost.Address, "localhost.Address is null"); - string configurationFile = Utils.GetAbsoluteFilePath(SubscriberConfigurationFileName, true, true, false); + string configurationFile = Utils.GetAbsoluteFilePath(m_subscriberConfigurationFileName, true, true, false); PubSubConfigurationDataType subscriberConfiguration = UaPubSubConfigurationHelper.LoadConfiguration(configurationFile); Assert.IsNotNull(subscriberConfiguration, "subscriberConfiguration is null"); NetworkAddressUrlDataType subscriberAddress = new NetworkAddressUrlDataType(); - subscriberAddress.Url = string.Format(UdpUrlFormat, Utils.UriSchemeOpcUdp, localhost.Address.ToString()); + subscriberAddress.Url = string.Format(kUdpUrlFormat, Utils.UriSchemeOpcUdp, localhost.Address.ToString()); subscriberConfiguration.Connections.First().Address = new ExtensionObject(subscriberAddress); UaPubSubApplication subscriberApplication = UaPubSubApplication.Create(subscriberConfiguration); Assert.IsNotNull(subscriberApplication, "subscriberApplication is null"); @@ -73,12 +73,12 @@ public void ValidateUdpPubSubConnectionNetworkMessageReceiveFromUnicast() subscriberApplication.RawDataReceived += RawDataReceived; - configurationFile = Utils.GetAbsoluteFilePath(PublisherConfigurationFileName, true, true, false); + configurationFile = Utils.GetAbsoluteFilePath(m_publisherConfigurationFileName, true, true, false); PubSubConfigurationDataType publisherConfiguration = UaPubSubConfigurationHelper.LoadConfiguration(configurationFile); Assert.IsNotNull(publisherConfiguration, "publisherConfiguration is null"); NetworkAddressUrlDataType publisherAddress = new NetworkAddressUrlDataType(); - publisherAddress.Url = string.Format(UdpUrlFormat, Utils.UriSchemeOpcUdp, localhost.Address.ToString()); + publisherAddress.Url = string.Format(kUdpUrlFormat, Utils.UriSchemeOpcUdp, localhost.Address.ToString()); publisherConfiguration.Connections.First().Address = new ExtensionObject(publisherAddress); UaPubSubApplication publisherApplication = UaPubSubApplication.Create(publisherConfiguration); Assert.IsNotNull(publisherApplication, "publisherApplication is null"); @@ -91,21 +91,21 @@ public void ValidateUdpPubSubConnectionNetworkMessageReceiveFromUnicast() m_shutdownEvent = new ManualResetEvent(false); // physical network ip is mandatory on UdpClientUnicast as parameter - UdpClient udpUnicastClient = new UdpClientUnicast(localhost.Address, DiscoveryPortNo); + UdpClient udpUnicastClient = new UdpClientUnicast(localhost.Address, kDiscoveryPortNo); Assert.IsNotNull(udpUnicastClient, "udpUnicastClient is null"); // first physical network ip = unicast address ip - IPEndPoint remoteEndPoint = new IPEndPoint(localhost.Address, DiscoveryPortNo); + IPEndPoint remoteEndPoint = new IPEndPoint(localhost.Address, kDiscoveryPortNo); Assert.IsNotNull(remoteEndPoint, "remoteEndPoint is null"); m_sentBytes = PrepareData(publisherConnection); int sentBytesLen = udpUnicastClient.Send(m_sentBytes, m_sentBytes.Length, remoteEndPoint); Assert.AreEqual(sentBytesLen, m_sentBytes.Length, "Sent bytes size not equal to published bytes size!"); - Thread.Sleep(EstimatedPublishingTime); + Thread.Sleep(kEstimatedPublishingTime); // Assert - if (!m_shutdownEvent.WaitOne(EstimatedPublishingTime)) + if (!m_shutdownEvent.WaitOne(kEstimatedPublishingTime)) { Assert.Fail("Subscriber unicast error ... published data not received"); } @@ -125,12 +125,12 @@ public void ValidateUdpPubSubConnectionNetworkMessageReceiveFromBroadcast() Assert.IsNotNull(localhost, "localhost is null"); Assert.IsNotNull(localhost.Address, "localhost.Address is null"); - string configurationFile = Utils.GetAbsoluteFilePath(SubscriberConfigurationFileName, true, true, false); + string configurationFile = Utils.GetAbsoluteFilePath(m_subscriberConfigurationFileName, true, true, false); PubSubConfigurationDataType subscriberConfiguration = UaPubSubConfigurationHelper.LoadConfiguration(configurationFile); Assert.IsNotNull(subscriberConfiguration, "subscriberConfiguration is null"); NetworkAddressUrlDataType subscriberAddress = new NetworkAddressUrlDataType(); - subscriberAddress.Url = string.Format(UdpUrlFormat, Utils.UriSchemeOpcUdp, localhost.Address.ToString()); + subscriberAddress.Url = string.Format(kUdpUrlFormat, Utils.UriSchemeOpcUdp, localhost.Address.ToString()); subscriberConfiguration.Connections.First().Address = new ExtensionObject(subscriberAddress); UaPubSubApplication subscriberApplication = UaPubSubApplication.Create(subscriberConfiguration); Assert.IsNotNull(subscriberApplication, "subscriberApplication is null"); @@ -140,7 +140,7 @@ public void ValidateUdpPubSubConnectionNetworkMessageReceiveFromBroadcast() subscriberApplication.RawDataReceived += RawDataReceived; - configurationFile = Utils.GetAbsoluteFilePath(PublisherConfigurationFileName, true, true, false); + configurationFile = Utils.GetAbsoluteFilePath(m_publisherConfigurationFileName, true, true, false); PubSubConfigurationDataType publisherConfiguration = UaPubSubConfigurationHelper.LoadConfiguration(configurationFile); Assert.IsNotNull(publisherConfiguration, "publisherConfiguration is null"); @@ -148,7 +148,7 @@ public void ValidateUdpPubSubConnectionNetworkMessageReceiveFromBroadcast() Assert.IsNotNull(broadcastIPAddress, "broadcastIPAddress is null"); NetworkAddressUrlDataType publisherAddress = new NetworkAddressUrlDataType(); - publisherAddress.Url = string.Format(UdpUrlFormat, Utils.UriSchemeOpcUdp, broadcastIPAddress.ToString()); + publisherAddress.Url = string.Format(kUdpUrlFormat, Utils.UriSchemeOpcUdp, broadcastIPAddress.ToString()); publisherConfiguration.Connections.First().Address = new ExtensionObject(publisherAddress); UaPubSubApplication publisherApplication = UaPubSubApplication.Create(publisherConfiguration); Assert.IsNotNull(publisherApplication, "publisherApplication is null"); @@ -162,17 +162,17 @@ public void ValidateUdpPubSubConnectionNetworkMessageReceiveFromBroadcast() m_sentBytes = PrepareData(publisherConnection); // first physical network ip is mandatory on UdpClientBroadcast as parameter - UdpClient udpBroadcastClient = new UdpClientBroadcast(localhost.Address, DiscoveryPortNo, UsedInContext.Publisher); + UdpClient udpBroadcastClient = new UdpClientBroadcast(localhost.Address, kDiscoveryPortNo, UsedInContext.Publisher); Assert.IsNotNull(udpBroadcastClient, "udpBroadcastClient is null"); - IPEndPoint remoteEndPoint = new IPEndPoint(broadcastIPAddress, DiscoveryPortNo); + IPEndPoint remoteEndPoint = new IPEndPoint(broadcastIPAddress, kDiscoveryPortNo); int sentBytesLen = udpBroadcastClient.Send(m_sentBytes, m_sentBytes.Length, remoteEndPoint); Assert.AreEqual(sentBytesLen, m_sentBytes.Length, "Sent bytes size not equal to published bytes size!"); - Thread.Sleep(EstimatedPublishingTime); + Thread.Sleep(kEstimatedPublishingTime); // Assert - if (!m_shutdownEvent.WaitOne(EstimatedPublishingTime)) + if (!m_shutdownEvent.WaitOne(kEstimatedPublishingTime)) { Assert.Fail("Subscriber broadcast error ... published data not received"); } @@ -196,12 +196,12 @@ public void ValidateUdpPubSubConnectionNetworkMessageReceiveFromMulticast() IPAddress multicastIPAddress = new IPAddress(new byte[4] { 239, 0, 0, 1 }); Assert.IsNotNull(multicastIPAddress, "multicastIPAddress is null"); - string configurationFile = Utils.GetAbsoluteFilePath(SubscriberConfigurationFileName, true, true, false); + string configurationFile = Utils.GetAbsoluteFilePath(m_subscriberConfigurationFileName, true, true, false); PubSubConfigurationDataType subscriberConfiguration = UaPubSubConfigurationHelper.LoadConfiguration(configurationFile); Assert.IsNotNull(subscriberConfiguration, "subscriberConfiguration is null"); NetworkAddressUrlDataType subscriberAddress = new NetworkAddressUrlDataType(); - subscriberAddress.Url = string.Format(UdpUrlFormat, Utils.UriSchemeOpcUdp, multicastIPAddress.ToString()); + subscriberAddress.Url = string.Format(kUdpUrlFormat, Utils.UriSchemeOpcUdp, multicastIPAddress.ToString()); subscriberConfiguration.Connections[0].Address = new ExtensionObject(subscriberAddress); UaPubSubApplication subscriberApplication = UaPubSubApplication.Create(subscriberConfiguration); Assert.IsNotNull(subscriberApplication, "subscriberApplication is null"); @@ -211,12 +211,12 @@ public void ValidateUdpPubSubConnectionNetworkMessageReceiveFromMulticast() subscriberApplication.RawDataReceived += RawDataReceived; - configurationFile = Utils.GetAbsoluteFilePath(PublisherConfigurationFileName, true, true, false); + configurationFile = Utils.GetAbsoluteFilePath(m_publisherConfigurationFileName, true, true, false); PubSubConfigurationDataType publisherConfiguration = UaPubSubConfigurationHelper.LoadConfiguration(configurationFile); Assert.IsNotNull(publisherConfiguration, "publisherConfiguration is null"); NetworkAddressUrlDataType publisherAddress = new NetworkAddressUrlDataType(); - publisherAddress.Url = string.Format(UdpUrlFormat, Utils.UriSchemeOpcUdp, multicastIPAddress.ToString()); + publisherAddress.Url = string.Format(kUdpUrlFormat, Utils.UriSchemeOpcUdp, multicastIPAddress.ToString()); publisherConfiguration.Connections.First().Address = new ExtensionObject(publisherAddress); UaPubSubApplication publisherApplication = UaPubSubApplication.Create(publisherConfiguration); Assert.IsNotNull(publisherApplication, "publisherApplication is null"); @@ -233,14 +233,14 @@ public void ValidateUdpPubSubConnectionNetworkMessageReceiveFromMulticast() UdpClient udpMulticastClient = new UdpClientMulticast(localhost.Address, multicastIPAddress, 0); Assert.IsNotNull(udpMulticastClient, "udpMulticastClient is null"); - IPEndPoint remoteEndPoint = new IPEndPoint(multicastIPAddress, DiscoveryPortNo); + IPEndPoint remoteEndPoint = new IPEndPoint(multicastIPAddress, kDiscoveryPortNo); int sentBytesLen = udpMulticastClient.Send(m_sentBytes, m_sentBytes.Length, remoteEndPoint); Assert.AreEqual(sentBytesLen, m_sentBytes.Length, "Sent bytes size not equal to published bytes size!"); - Thread.Sleep(EstimatedPublishingTime); + Thread.Sleep(kEstimatedPublishingTime); // Assert - if (!m_shutdownEvent.WaitOne(EstimatedPublishingTime)) + if (!m_shutdownEvent.WaitOne(kEstimatedPublishingTime)) { Assert.Fail("Subscriber multicast error ... published data not received"); } @@ -265,12 +265,12 @@ public void ValidateUdpPubSubConnectionNetworkMessageReceiveFromDiscoveryRespons IPAddress multicastIPAddress = new IPAddress(new byte[4] { 224, 0, 2, 14 }); Assert.IsNotNull(multicastIPAddress, "multicastIPAddress is null"); - string configurationFile = Utils.GetAbsoluteFilePath(SubscriberConfigurationFileName, true, true, false); + string configurationFile = Utils.GetAbsoluteFilePath(m_subscriberConfigurationFileName, true, true, false); PubSubConfigurationDataType subscriberConfiguration = UaPubSubConfigurationHelper.LoadConfiguration(configurationFile); Assert.IsNotNull(subscriberConfiguration, "subscriberConfiguration is null"); NetworkAddressUrlDataType subscriberAddress = new NetworkAddressUrlDataType(); - subscriberAddress.Url = string.Format(UdpUrlFormat, Utils.UriSchemeOpcUdp, multicastIPAddress.ToString()); + subscriberAddress.Url = string.Format(kUdpUrlFormat, Utils.UriSchemeOpcUdp, multicastIPAddress.ToString()); subscriberConfiguration.Connections[0].Address = new ExtensionObject(subscriberAddress); UaPubSubApplication subscriberApplication = UaPubSubApplication.Create(subscriberConfiguration); Assert.IsNotNull(subscriberApplication, "subscriberApplication is null"); @@ -280,12 +280,12 @@ public void ValidateUdpPubSubConnectionNetworkMessageReceiveFromDiscoveryRespons subscriberApplication.RawDataReceived += RawDataReceived; - configurationFile = Utils.GetAbsoluteFilePath(PublisherConfigurationFileName, true, true, false); + configurationFile = Utils.GetAbsoluteFilePath(m_publisherConfigurationFileName, true, true, false); PubSubConfigurationDataType publisherConfiguration = UaPubSubConfigurationHelper.LoadConfiguration(configurationFile); Assert.IsNotNull(publisherConfiguration, "publisherConfiguration is null"); NetworkAddressUrlDataType publisherAddress = new NetworkAddressUrlDataType(); - publisherAddress.Url = string.Format(UdpUrlFormat, Utils.UriSchemeOpcUdp, multicastIPAddress.ToString()); + publisherAddress.Url = string.Format(kUdpUrlFormat, Utils.UriSchemeOpcUdp, multicastIPAddress.ToString()); publisherConfiguration.Connections.First().Address = new ExtensionObject(publisherAddress); UaPubSubApplication publisherApplication = UaPubSubApplication.Create(publisherConfiguration); Assert.IsNotNull(publisherApplication, "publisherApplication is null"); @@ -302,14 +302,14 @@ public void ValidateUdpPubSubConnectionNetworkMessageReceiveFromDiscoveryRespons UdpClient udpMulticastClient = new UdpClientMulticast(localhost.Address, multicastIPAddress, 0); Assert.IsNotNull(udpMulticastClient, "udpMulticastClient is null"); - IPEndPoint remoteEndPoint = new IPEndPoint(multicastIPAddress, DiscoveryPortNo); + IPEndPoint remoteEndPoint = new IPEndPoint(multicastIPAddress, kDiscoveryPortNo); int sentBytesLen = udpMulticastClient.Send(m_sentBytes, m_sentBytes.Length, remoteEndPoint); Assert.AreEqual(sentBytesLen, m_sentBytes.Length, "Sent bytes size not equal to published bytes size!"); - Thread.Sleep(EstimatedPublishingTime); + Thread.Sleep(kEstimatedPublishingTime); // Assert - if (!m_shutdownEvent.WaitOne(EstimatedPublishingTime)) + if (!m_shutdownEvent.WaitOne(kEstimatedPublishingTime)) { Assert.Fail("Subscriber multicast error ... published data not received"); } @@ -324,7 +324,7 @@ public void ValidateUdpPubSubConnectionNetworkMessageReceiveFromDiscoveryRespons /// private void RawDataReceived(object sender, RawDataReceivedEventArgs e) { - lock (m_lock) + lock (s_lock) { // Assert var localhost = GetFirstNic(); diff --git a/Tests/Opc.Ua.PubSub.Tests/Transport/UdpPubSubConnectionTests.cs b/Tests/Opc.Ua.PubSub.Tests/Transport/UdpPubSubConnectionTests.cs index fb6a8425f..350a42b3a 100644 --- a/Tests/Opc.Ua.PubSub.Tests/Transport/UdpPubSubConnectionTests.cs +++ b/Tests/Opc.Ua.PubSub.Tests/Transport/UdpPubSubConnectionTests.cs @@ -45,12 +45,12 @@ namespace Opc.Ua.PubSub.Tests.Transport public partial class UdpPubSubConnectionTests { #region Fields - private const int EstimatedPublishingTime = 10000; + private const int kEstimatedPublishingTime = 10000; - private const string UdpUrlFormat = "{0}://{1}:4840"; - private const string UdpDiscoveryIp = "224.0.2.14"; - private const string UdpMulticastIp = "239.0.0.1"; - private const int DiscoveryPortNo = 4840; + private const string kUdpUrlFormat = "{0}://{1}:4840"; + private const string kUdpDiscoveryIp = "224.0.2.14"; + private const string kUdpMulticastIp = "239.0.0.1"; + private const int kDiscoveryPortNo = 4840; protected enum UdpConnectionType { @@ -71,8 +71,8 @@ protected enum UadpDiscoveryType Response } - private string PublisherConfigurationFileName = Path.Combine("Configuration", "PublisherConfiguration.xml"); - private string SubscriberConfigurationFileName = Path.Combine("Configuration", "SubscriberConfiguration.xml"); + private string m_publisherConfigurationFileName = Path.Combine("Configuration", "PublisherConfiguration.xml"); + private string m_subscriberConfigurationFileName = Path.Combine("Configuration", "SubscriberConfiguration.xml"); private PubSubConfigurationDataType m_publisherConfiguration; private UaPubSubApplication m_uaPublisherApplication; @@ -86,7 +86,7 @@ protected enum UadpDiscoveryType public void MyTestInitialize() { // Create a publisher application - string configurationFile = Utils.GetAbsoluteFilePath(PublisherConfigurationFileName, true, true, false); + string configurationFile = Utils.GetAbsoluteFilePath(m_publisherConfigurationFileName, true, true, false); m_uaPublisherApplication = UaPubSubApplication.Create(configurationFile); Assert.IsNotNull(m_uaPublisherApplication, "m_publisherApplication should not be null"); diff --git a/Tests/Opc.Ua.Server.Tests/ReferenceServerTest.cs b/Tests/Opc.Ua.Server.Tests/ReferenceServerTest.cs index 409903825..f55036c43 100644 --- a/Tests/Opc.Ua.Server.Tests/ReferenceServerTest.cs +++ b/Tests/Opc.Ua.Server.Tests/ReferenceServerTest.cs @@ -47,8 +47,8 @@ namespace Opc.Ua.Server.Tests [DisassemblyDiagnoser] public class ReferenceServerTests { - const double MaxAge = 10000; - const uint TimeoutHint = 10000; + const double kMaxAge = 10000; + const uint kTimeoutHint = 10000; ServerFixture m_fixture; ReferenceServer m_server; RequestHeader m_requestHeader; @@ -89,7 +89,7 @@ public void SetUp() m_fixture.SetTraceOutput(TestContext.Out); m_requestHeader = m_server.CreateAndActivateSession(TestContext.CurrentContext.Test.Name); m_requestHeader.Timestamp = DateTime.UtcNow; - m_requestHeader.TimeoutHint = TimeoutHint; + m_requestHeader.TimeoutHint = kTimeoutHint; } /// @@ -175,7 +175,7 @@ public void GetOperationLimits() var requestHeader = m_requestHeader; requestHeader.Timestamp = DateTime.UtcNow; - var response = m_server.Read(requestHeader, MaxAge, TimestampsToReturn.Neither, readIdCollection, out var results, out var diagnosticInfos); + var response = m_server.Read(requestHeader, kMaxAge, TimestampsToReturn.Neither, readIdCollection, out var results, out var diagnosticInfos); ServerFixtureUtils.ValidateResponse(response); ServerFixtureUtils.ValidateDiagnosticInfos(diagnosticInfos, results); @@ -214,7 +214,7 @@ public void Read() { nodesToRead.Add(new ReadValueId() { NodeId = nodeId, AttributeId = attributeId }); } - var response = m_server.Read(requestHeader, MaxAge, TimestampsToReturn.Neither, nodesToRead, + var response = m_server.Read(requestHeader, kMaxAge, TimestampsToReturn.Neither, nodesToRead, out var dataValues, out var diagnosticInfos); ServerFixtureUtils.ValidateResponse(response); ServerFixtureUtils.ValidateDiagnosticInfos(diagnosticInfos, dataValues); @@ -248,7 +248,7 @@ public void ReadAllNodes() nodesToRead.Add(new ReadValueId() { NodeId = nodeId, AttributeId = attributeId }); } TestContext.Out.WriteLine("NodeId {0} {1}", reference.NodeId, reference.BrowseName); - var response = m_server.Read(requestHeader, MaxAge, TimestampsToReturn.Both, nodesToRead, + var response = m_server.Read(requestHeader, kMaxAge, TimestampsToReturn.Both, nodesToRead, out var dataValues, out var diagnosticInfos); ServerFixtureUtils.ValidateResponse(response); ServerFixtureUtils.ValidateDiagnosticInfos(diagnosticInfos, dataValues); diff --git a/Tests/Opc.Ua.Server.Tests/ServerFixture.cs b/Tests/Opc.Ua.Server.Tests/ServerFixture.cs index afe3124ab..3c8c1e689 100644 --- a/Tests/Opc.Ua.Server.Tests/ServerFixture.cs +++ b/Tests/Opc.Ua.Server.Tests/ServerFixture.cs @@ -132,7 +132,7 @@ public Task StartAsync(TextWriter writer, int port = 0) /// public async Task StartAsync(TextWriter writer, string pkiRoot, int port = 0) { - Random m_random = new Random(); + Random random = new Random(); bool retryStartServer = false; int testPort = port; int serverStartRetries = 1; @@ -162,10 +162,10 @@ public async Task StartAsync(TextWriter writer, string pkiRoot, int port = 0) throw; } serverStartRetries--; - testPort = m_random.Next(ServerFixtureUtils.MinTestPort, ServerFixtureUtils.MaxTestPort); + testPort = random.Next(ServerFixtureUtils.MinTestPort, ServerFixtureUtils.MaxTestPort); retryStartServer = true; } - await Task.Delay(m_random.Next(100, 1000)).ConfigureAwait(false); + await Task.Delay(random.Next(100, 1000)).ConfigureAwait(false); } while (retryStartServer); return Server; diff --git a/Tests/Opc.Ua.Server.Tests/ServerFixtureUtils.cs b/Tests/Opc.Ua.Server.Tests/ServerFixtureUtils.cs index ecea3b64c..31f244258 100644 --- a/Tests/Opc.Ua.Server.Tests/ServerFixtureUtils.cs +++ b/Tests/Opc.Ua.Server.Tests/ServerFixtureUtils.cs @@ -27,6 +27,7 @@ * http://opcfoundation.org/License/MIT/1.00/ * ======================================================================*/ +using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -68,12 +69,12 @@ public static RequestHeader CreateAndActivateSession( // Find TCP endpoint var endpoints = server.GetEndpoints(); var endpoint = endpoints.FirstOrDefault(e => - e.TransportProfileUri.Equals(Profiles.UaTcpTransport) || - e.TransportProfileUri.Equals(Profiles.HttpsBinaryTransport)); + e.TransportProfileUri.Equals(Profiles.UaTcpTransport, StringComparison.Ordinal) || + e.TransportProfileUri.Equals(Profiles.HttpsBinaryTransport, StringComparison.Ordinal)); if (endpoint == null) { - throw new System.Exception("Unsupported transport profile."); + throw new Exception("Unsupported transport profile."); } // fake profiles diff --git a/Tests/Opc.Ua.Server.Tests/ServerStartupTests.cs b/Tests/Opc.Ua.Server.Tests/ServerStartupTests.cs index 3d39c3fd6..65e9fa9b6 100644 --- a/Tests/Opc.Ua.Server.Tests/ServerStartupTests.cs +++ b/Tests/Opc.Ua.Server.Tests/ServerStartupTests.cs @@ -40,8 +40,8 @@ namespace Opc.Ua.Server.Tests [Parallelizable] public class ServerStartupTests { - const double MaxAge = 10000; - const uint TimeoutHint = 10000; + const double kMaxAge = 10000; + const uint kTimeoutHint = 10000; [DatapointSource] public string[] UriSchemes = { Utils.UriSchemeOpcTcp, Utils.UriSchemeHttps }; diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 37e193ef1..95c415889 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -25,6 +25,7 @@ pr: variables: FullBuild: ${{ or(ne(variables['Build.Reason'], 'PullRequest'), ne(variables['System.PullRequest.IsFork'], 'False')) }} + ScheduledBuild: ${{ eq(variables['Build.Reason'], 'Schedule') }} stages: - stage: build @@ -68,6 +69,11 @@ stages: configuration: Release framework: netcoreapp3.1 jobnamesuffix: core3 +- stage: test6release + dependsOn: [build] + displayName: 'Test .NET 6 Core and SDK Release' + condition: and(succeeded(), ne(variables.ScheduledBuild, 'False')) + jobs: - template: .azurepipelines/test.yml parameters: configuration: Release @@ -77,7 +83,7 @@ stages: - stage: testreleasepr dependsOn: [] displayName: 'Fast PR Test Core and SDK Release' - condition: eq(variables.FullBuild, 'False') + condition: and(eq(variables.FullBuild, 'False'), eq(variables.ScheduledBuild, 'False')) jobs: - template: .azurepipelines/test.yml parameters: @@ -88,7 +94,7 @@ stages: - stage: testdebug dependsOn: [build] displayName: 'Test Core and SDK Debug' - condition: and(succeeded(), ne(variables.FullBuild, 'False')) + condition: and(succeeded(), ne(variables.ScheduledBuild, 'False')) jobs: - template: .azurepipelines/test.yml parameters: @@ -97,7 +103,7 @@ stages: - stage: coverage dependsOn: [testdebug,testrelease] displayName: 'Code Coverage' - condition: and(succeeded(), ne(variables.FullBuild, 'False')) + condition: and(succeeded(), ne(variables.ScheduledBuild, 'False')) jobs: - template: .azurepipelines/testcc.yml parameters: diff --git a/common.props b/common.props index dd44ce1e5..1fe5cdd79 100644 --- a/common.props +++ b/common.props @@ -4,20 +4,27 @@ https://github.com/OPCFoundation/UA-.NETStandard 1.04.368 preview-$([System.DateTime]::Now.ToString("yyyyMMdd")) - Copyright © 2004-2021 OPC Foundation, Inc + Copyright © 2004-2022 OPC Foundation, Inc OPC Foundation OPC Foundation - NU5125;RCS1138;RCS1139;RCS1075 + NU5125;CA2254 en-US true false - true true 7.3 + + true + Recommended + latest + preview-all + false + + images/logo.jpg $(RepositoryUrl) @@ -33,15 +40,6 @@ - - - - - - - - - From 41346dab50a021f513a74981911038fba0e0ff8b Mon Sep 17 00:00:00 2001 From: Alin Moldovean Date: Tue, 15 Mar 2022 15:29:57 +0200 Subject: [PATCH 07/19] fix CurrentSubscriptionCount at CloseSession() with active subscriptions --- .../Opc.Ua.Server/Subscription/SubscriptionManager.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Libraries/Opc.Ua.Server/Subscription/SubscriptionManager.cs b/Libraries/Opc.Ua.Server/Subscription/SubscriptionManager.cs index 3ba5afad2..0f847a799 100644 --- a/Libraries/Opc.Ua.Server/Subscription/SubscriptionManager.cs +++ b/Libraries/Opc.Ua.Server/Subscription/SubscriptionManager.cs @@ -260,6 +260,7 @@ public virtual void SessionClosing(OperationContext context, NodeId sessionId, b // close the publish queue for the session. SessionPublishQueue queue = null; IList subscriptionsToDelete = null; + uint publishingIntervalCount = 0; lock (m_lock) { @@ -304,6 +305,16 @@ public virtual void SessionClosing(OperationContext context, NodeId sessionId, b // delete subscription. subscription.Delete(context); + + // get the count for the diagnostics. + publishingIntervalCount = GetPublishingIntervalCount(); + + lock (m_server.DiagnosticsWriteLock) + { + ServerDiagnosticsSummaryDataType diagnostics = m_server.ServerDiagnostics; + diagnostics.CurrentSubscriptionCount--; + diagnostics.PublishingIntervalCount = publishingIntervalCount; + } } // mark the subscriptions as abandoned. From 5c8cea29900122a12867904d5d1d65f5c30477a7 Mon Sep 17 00:00:00 2001 From: Martin Regen Date: Fri, 18 Mar 2022 15:36:40 +0100 Subject: [PATCH 08/19] Offload .NET 6 tests and code coverage to github actions (#1730) * add buildandtest.yml with test and coverage build --- .github/workflows/buildandtest.yml | 62 +++++++++++++++++++ .../Opc.Ua.Client.Tests/ReverseConnectTest.cs | 2 +- Tests/Opc.Ua.Client.Tests/SubscriptionTest.cs | 15 +++-- 3 files changed, 72 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/buildandtest.yml diff --git a/.github/workflows/buildandtest.yml b/.github/workflows/buildandtest.yml new file mode 100644 index 000000000..ee136448c --- /dev/null +++ b/.github/workflows/buildandtest.yml @@ -0,0 +1,62 @@ +name: Build and Test .NET 6.0 + +on: + push: + pull_request: + branches: [ master ] + paths: + - '**.cs' + - '**.csproj' + +env: + ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' + +jobs: + build-and-test: + name: build-and-test-${{matrix.os}} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest, macOS-latest] + include: + - framework: 'net6.0' + dotnet-version: '6.0.x' + configuration: 'Release' + + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Setup .NET ${{ matrix.dotnet-version }} + uses: actions/setup-dotnet@v1 + with: + dotnet-version: ${{ matrix.dotnet-version }} + + - name: Build + run: dotnet build --force --framework ${{ matrix.framework }} --configuration ${{ matrix.configuration }} "UA Core Library.sln" + + - name: Test + # note: /p:CollectCoverage=true is only used to disable deterministc builds + run: dotnet test --no-build --framework ${{ matrix.framework }} --logger trx --configuration ${{ matrix.configuration }} /p:CollectCoverage=true --collect:"XPlat Code Coverage" --settings ./Tests/coverlet.runsettings.xml --results-directory "TestResults-${{matrix.os}}-${{matrix.framework}}-${{matrix.configuration}}" "UA Core Library.sln" + + - name: Upload test results + uses: actions/upload-artifact@v3 + with: + name: dotnet-results-${{matrix.os}}-${{matrix.framework}}-${{matrix.configuration}} + path: "TestResults-${{matrix.os}}-${{matrix.framework}}-${{matrix.configuration}}" + # Use always() to always run this step to publish test results when there are test failures + if: ${{ always() }} + + - name: Upload to Codecov + uses: codecov/codecov-action@v2 + with: + name: codecov-umbrella + #token: ${{ secrets.CODECOV_TOKEN }} + directory: "TestResults-${{matrix.os}}-${{matrix.framework}}-${{matrix.configuration}}" + env_vars: matrix.os,matrix.dotnet-version,matrix.configuration + fail_ci_if_error: false + path_to_write_report: "./coverage/codecov_report-${{matrix.os}}-${{matrix.framework}}-${{matrix.configuration}}/" + verbose: true + if: ${{ always() }} diff --git a/Tests/Opc.Ua.Client.Tests/ReverseConnectTest.cs b/Tests/Opc.Ua.Client.Tests/ReverseConnectTest.cs index 142a38da0..a80b3cbb5 100644 --- a/Tests/Opc.Ua.Client.Tests/ReverseConnectTest.cs +++ b/Tests/Opc.Ua.Client.Tests/ReverseConnectTest.cs @@ -65,7 +65,7 @@ public async Task OneTimeSetUpAsync() { Assert.Ignore("Reverse connect fails on mac OS."); } - + // pki directory root for test runs. PkiRoot = Path.GetTempPath() + Path.GetRandomFileName(); diff --git a/Tests/Opc.Ua.Client.Tests/SubscriptionTest.cs b/Tests/Opc.Ua.Client.Tests/SubscriptionTest.cs index 23bd9026f..9d9716422 100644 --- a/Tests/Opc.Ua.Client.Tests/SubscriptionTest.cs +++ b/Tests/Opc.Ua.Client.Tests/SubscriptionTest.cs @@ -412,6 +412,13 @@ public async Task PublishRequestCount() DisableMonitoredItemCache = true, PublishingEnabled = true }; + + subscription.FastDataChangeCallback = (_, notification, __) => { + notification.MonitoredItems.ForEach(item => { + Interlocked.Increment(ref numOfNotifications); + }); + }; + subscriptionList.Add(subscription); var simulatedNodes = GetTestSetSimulation(Session.NamespaceUris); var list = new List(); @@ -431,13 +438,9 @@ public async Task PublishRequestCount() Assert.True(result); await subscription.CreateAsync().ConfigureAwait(false); var publishInterval = (int)subscription.CurrentPublishingInterval; - TestContext.Out.WriteLine($"CurrentPublishingInterval: {publishInterval}"); - subscription.FastDataChangeCallback = (_, notification, __) => { - notification.MonitoredItems.ForEach(item => { - Interlocked.Increment(ref numOfNotifications); - }); - }; + TestContext.Out.WriteLine($"Id: {subscription.Id} CurrentPublishingInterval: {publishInterval}"); + } var stopwatch = Stopwatch.StartNew(); From 24931cfea0a3ec0926d5fdead4a855faccabee28 Mon Sep 17 00:00:00 2001 From: Martin Regen Date: Tue, 22 Mar 2022 07:29:31 +0100 Subject: [PATCH 09/19] fix SByte vs Byte collection (#1740) --- Stack/Opc.Ua.Core/Types/BuiltIn/BuiltInTypeCollections.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Stack/Opc.Ua.Core/Types/BuiltIn/BuiltInTypeCollections.cs b/Stack/Opc.Ua.Core/Types/BuiltIn/BuiltInTypeCollections.cs index 5eeba0d58..d94f82632 100644 --- a/Stack/Opc.Ua.Core/Types/BuiltIn/BuiltInTypeCollections.cs +++ b/Stack/Opc.Ua.Core/Types/BuiltIn/BuiltInTypeCollections.cs @@ -180,12 +180,12 @@ public static implicit operator SByteCollection(sbyte[] values) } /// - /// A collection of SByte values. + /// A collection of Byte values. /// /// - /// Provides a strongly-typed list of values. + /// Provides a strongly-typed list of values. /// - [CollectionDataContract(Name = "ListOfSByte", Namespace = Namespaces.OpcUaXsd, ItemName = "SByte")] + [CollectionDataContract(Name = "ListOfByte", Namespace = Namespaces.OpcUaXsd, ItemName = "Byte")] public partial class ByteCollection : List { /// From 244234cdf0724ebfbf5c8df27ae13c2de09c0948 Mon Sep 17 00:00:00 2001 From: Suciu Mircea Adrian Date: Fri, 25 Mar 2022 10:32:48 +0200 Subject: [PATCH 10/19] Changes for testing and fixing git bug #1694 (#1747) * Changes for testing and fixing git bug 1694 * Removed the duplicate server address differing by port number --- Stack/Opc.Ua.Core/Stack/Client/DiscoveryClient.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Stack/Opc.Ua.Core/Stack/Client/DiscoveryClient.cs b/Stack/Opc.Ua.Core/Stack/Client/DiscoveryClient.cs index e1227d6b2..9c9483553 100644 --- a/Stack/Opc.Ua.Core/Stack/Client/DiscoveryClient.cs +++ b/Stack/Opc.Ua.Core/Stack/Client/DiscoveryClient.cs @@ -273,11 +273,10 @@ private EndpointDescriptionCollection PatchEndpointUrls(EndpointDescriptionColle foreach (EndpointDescription discoveryEndPoint in endpoints) { Uri discoveryEndPointUri = Utils.ParseUri(discoveryEndPoint.EndpointUrl); - if (endpointUrl.Scheme == discoveryEndPointUri.Scheme) + if ( (endpointUrl.Scheme == discoveryEndPointUri.Scheme) && (endpointUrl.Port == discoveryEndPointUri.Port)) { UriBuilder builder = new UriBuilder(discoveryEndPointUri); builder.Host = endpointUrl.DnsSafeHost; - builder.Port = endpointUrl.Port; discoveryEndPoint.EndpointUrl = builder.ToString(); } From 0a838e03199fcfc790a53af51d7b3193fde39f82 Mon Sep 17 00:00:00 2001 From: KUNYUAN XIAO <30423949+xky0007@users.noreply.github.com> Date: Mon, 28 Mar 2022 14:29:38 +0800 Subject: [PATCH 11/19] Fix session recreate TransferSubscriptions bug. (#1746) * Fixed session recreate TransferSubscriptions bug. 1. When session is recreated and there is no subscription is needed to transfer, it will throw Exception - BadNothingToDo. After adding check the subscriptions count, it won't try to subscribe non-existing subscriptions. 2. When session is recreated and there are subscriptions are needed to transer, it transferred wrong subscriptions. It should transfer old subscriptions in old session, but current code transfer new subscriptions in new session to new session - which will always throw Exception - "A subscription can not be transferred due to missing transfer Id" * Log update and TransferSubscriptions update. fixes #1733 and #1734 --- Libraries/Opc.Ua.Client/Session.cs | 62 ++++++++++++++++++------------ 1 file changed, 38 insertions(+), 24 deletions(-) diff --git a/Libraries/Opc.Ua.Client/Session.cs b/Libraries/Opc.Ua.Client/Session.cs index d5bfe9897..be24837d3 100644 --- a/Libraries/Opc.Ua.Client/Session.cs +++ b/Libraries/Opc.Ua.Client/Session.cs @@ -1003,7 +1003,7 @@ public static Session Recreate(Session template) template.m_checkDomain); // try transfer - if (!session.TransferSubscriptions(new SubscriptionCollection(session.Subscriptions), false)) + if (!session.TransferSubscriptions(new SubscriptionCollection(template.Subscriptions), false)) { // if transfer failed, create the subscriptions. foreach (Subscription subscription in session.Subscriptions) @@ -1057,7 +1057,7 @@ public static Session Recreate(Session template, ITransportWaitingConnection con template.m_checkDomain); // try transfer - if (!session.TransferSubscriptions(new SubscriptionCollection(session.Subscriptions), false)) + if (!session.TransferSubscriptions(new SubscriptionCollection(template.Subscriptions), false)) { // if transfer failed, create the subscriptions. foreach (Subscription subscription in session.Subscriptions) @@ -3432,37 +3432,51 @@ public bool TransferSubscriptions( lock (SyncRoot) { - ResponseHeader responseHeader = TransferSubscriptions(null, subscriptionIds, sendInitialValues, out var results, out var diagnosticInfos); - if (!StatusCode.IsGood(responseHeader.ServiceResult)) + if (subscriptionIds.Count > 0) { - Utils.LogError("TransferSubscription failed: {0}", responseHeader.ServiceResult); - return false; - } - - ClientBase.ValidateResponse(results, subscriptionIds); - ClientBase.ValidateDiagnosticInfos(diagnosticInfos, subscriptionIds); + ResponseHeader responseHeader = TransferSubscriptions(null, subscriptionIds, sendInitialValues, out var results, out var diagnosticInfos); + if (!StatusCode.IsGood(responseHeader.ServiceResult)) + { + Utils.LogError("TransferSubscription failed: {0}", responseHeader.ServiceResult); + return false; + } + ClientBase.ValidateResponse(results, subscriptionIds); + ClientBase.ValidateDiagnosticInfos(diagnosticInfos, subscriptionIds); + var failedSubscriptionIds = new UInt32Collection(); - for (int ii = 0; ii < subscriptions.Count; ii++) - { - if (StatusCode.IsGood(results[ii].StatusCode)) + for (int ii = 0; ii < subscriptions.Count; ii++) { - if (subscriptions[ii].Transfer(this, subscriptionIds[ii], results[ii].AvailableSequenceNumbers)) - { // create ack for available sequence numbers - foreach (var sequenceNumber in results[ii].AvailableSequenceNumbers) - { - var ack = new SubscriptionAcknowledgement() { - SubscriptionId = subscriptionIds[ii], - SequenceNumber = sequenceNumber - }; - m_acknowledgementsToSend.Add(ack); + if (StatusCode.IsGood(results[ii].StatusCode)) + { + if (subscriptions[ii].Transfer(this, subscriptionIds[ii], results[ii].AvailableSequenceNumbers)) + { // create ack for available sequence numbers + foreach (var sequenceNumber in results[ii].AvailableSequenceNumbers) + { + var ack = new SubscriptionAcknowledgement() { + SubscriptionId = subscriptionIds[ii], + SequenceNumber = sequenceNumber + }; + m_acknowledgementsToSend.Add(ack); + } } } + else + { + Utils.LogError("SubscriptionId {0} failed to transfer, StatusCode={1}", subscriptionIds[ii], results[ii].StatusCode); + failedSubscriptionIds.Add(subscriptions[ii].TransferId); + } } - else + if(failedSubscriptionIds.Count > 0) { - Utils.LogError("SubscriptionId {0} failed to transfer, StatusCode={1}", subscriptionIds[ii], results[ii].StatusCode); + return false; } } + else + { + Utils.LogInfo("No subscriptions. Transfersubscription skipped."); + } + + } return true; From 0c707a4294e5bd06055f5d24fb59d38ed1f1fa29 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Mar 2022 08:30:15 +0200 Subject: [PATCH 12/19] Bump NUnit from 3.13.2 to 3.13.3 (#1741) Bumps [NUnit](https://github.com/nunit/nunit) from 3.13.2 to 3.13.3. - [Release notes](https://github.com/nunit/nunit/releases) - [Changelog](https://github.com/nunit/nunit/blob/v3.13.3/CHANGES.md) - [Commits](https://github.com/nunit/nunit/compare/v3.13.2...v3.13.3) --- updated-dependencies: - dependency-name: NUnit dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .../Opc.Ua.Client.ComplexTypes.Tests.csproj | 2 +- Tests/Opc.Ua.Client.Tests/Opc.Ua.Client.Tests.csproj | 2 +- .../Opc.Ua.Configuration.Tests.csproj | 2 +- Tests/Opc.Ua.Core.Tests/Opc.Ua.Core.Tests.csproj | 2 +- Tests/Opc.Ua.Gds.Tests/Opc.Ua.Gds.Tests.csproj | 2 +- Tests/Opc.Ua.PubSub.Tests/Opc.Ua.PubSub.Tests.csproj | 2 +- .../Opc.Ua.Security.Certificates.Tests.csproj | 2 +- Tests/Opc.Ua.Server.Tests/Opc.Ua.Server.Tests.csproj | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Tests/Opc.Ua.Client.ComplexTypes.Tests/Opc.Ua.Client.ComplexTypes.Tests.csproj b/Tests/Opc.Ua.Client.ComplexTypes.Tests/Opc.Ua.Client.ComplexTypes.Tests.csproj index 8220faaac..b95eb9224 100644 --- a/Tests/Opc.Ua.Client.ComplexTypes.Tests/Opc.Ua.Client.ComplexTypes.Tests.csproj +++ b/Tests/Opc.Ua.Client.ComplexTypes.Tests/Opc.Ua.Client.ComplexTypes.Tests.csproj @@ -8,7 +8,7 @@ - + all diff --git a/Tests/Opc.Ua.Client.Tests/Opc.Ua.Client.Tests.csproj b/Tests/Opc.Ua.Client.Tests/Opc.Ua.Client.Tests.csproj index 1cd993648..6b012beac 100644 --- a/Tests/Opc.Ua.Client.Tests/Opc.Ua.Client.Tests.csproj +++ b/Tests/Opc.Ua.Client.Tests/Opc.Ua.Client.Tests.csproj @@ -10,7 +10,7 @@ - + all diff --git a/Tests/Opc.Ua.Configuration.Tests/Opc.Ua.Configuration.Tests.csproj b/Tests/Opc.Ua.Configuration.Tests/Opc.Ua.Configuration.Tests.csproj index 3533b0c49..1a18c1261 100644 --- a/Tests/Opc.Ua.Configuration.Tests/Opc.Ua.Configuration.Tests.csproj +++ b/Tests/Opc.Ua.Configuration.Tests/Opc.Ua.Configuration.Tests.csproj @@ -9,7 +9,7 @@ - + all diff --git a/Tests/Opc.Ua.Core.Tests/Opc.Ua.Core.Tests.csproj b/Tests/Opc.Ua.Core.Tests/Opc.Ua.Core.Tests.csproj index 94f2d3f93..fb8765a72 100644 --- a/Tests/Opc.Ua.Core.Tests/Opc.Ua.Core.Tests.csproj +++ b/Tests/Opc.Ua.Core.Tests/Opc.Ua.Core.Tests.csproj @@ -10,7 +10,7 @@ - + all diff --git a/Tests/Opc.Ua.Gds.Tests/Opc.Ua.Gds.Tests.csproj b/Tests/Opc.Ua.Gds.Tests/Opc.Ua.Gds.Tests.csproj index 4166358f9..439983149 100644 --- a/Tests/Opc.Ua.Gds.Tests/Opc.Ua.Gds.Tests.csproj +++ b/Tests/Opc.Ua.Gds.Tests/Opc.Ua.Gds.Tests.csproj @@ -13,7 +13,7 @@ - + all diff --git a/Tests/Opc.Ua.PubSub.Tests/Opc.Ua.PubSub.Tests.csproj b/Tests/Opc.Ua.PubSub.Tests/Opc.Ua.PubSub.Tests.csproj index c360d9735..16792d5af 100644 --- a/Tests/Opc.Ua.PubSub.Tests/Opc.Ua.PubSub.Tests.csproj +++ b/Tests/Opc.Ua.PubSub.Tests/Opc.Ua.PubSub.Tests.csproj @@ -9,7 +9,7 @@ - + all diff --git a/Tests/Opc.Ua.Security.Certificates.Tests/Opc.Ua.Security.Certificates.Tests.csproj b/Tests/Opc.Ua.Security.Certificates.Tests/Opc.Ua.Security.Certificates.Tests.csproj index f6fc4c126..265cf4991 100644 --- a/Tests/Opc.Ua.Security.Certificates.Tests/Opc.Ua.Security.Certificates.Tests.csproj +++ b/Tests/Opc.Ua.Security.Certificates.Tests/Opc.Ua.Security.Certificates.Tests.csproj @@ -25,7 +25,7 @@ - + all diff --git a/Tests/Opc.Ua.Server.Tests/Opc.Ua.Server.Tests.csproj b/Tests/Opc.Ua.Server.Tests/Opc.Ua.Server.Tests.csproj index 7e29b6e3b..ec8ec690e 100644 --- a/Tests/Opc.Ua.Server.Tests/Opc.Ua.Server.Tests.csproj +++ b/Tests/Opc.Ua.Server.Tests/Opc.Ua.Server.Tests.csproj @@ -9,7 +9,7 @@ - + all From 1263881a7fde233d8efa7a74a49a8233d2ba5e7a Mon Sep 17 00:00:00 2001 From: Martin Regen Date: Mon, 28 Mar 2022 13:01:42 +0200 Subject: [PATCH 13/19] Adapt logging abstractions version to target framework (#1751) * fix the nuget versions * revert targetframework * avoid build warning --- .../ConsoleReferenceServer.csproj | 17 ++++++++++++++++- Stack/Opc.Ua.Core/Opc.Ua.Core.csproj | 16 +++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/Applications/ConsoleReferenceServer/ConsoleReferenceServer.csproj b/Applications/ConsoleReferenceServer/ConsoleReferenceServer.csproj index 835cc9af5..7cfc18f6a 100644 --- a/Applications/ConsoleReferenceServer/ConsoleReferenceServer.csproj +++ b/Applications/ConsoleReferenceServer/ConsoleReferenceServer.csproj @@ -28,8 +28,23 @@ + + + + + + + + + + + + + + + - diff --git a/Stack/Opc.Ua.Core/Opc.Ua.Core.csproj b/Stack/Opc.Ua.Core/Opc.Ua.Core.csproj index 4ef377bb1..761dc7d72 100644 --- a/Stack/Opc.Ua.Core/Opc.Ua.Core.csproj +++ b/Stack/Opc.Ua.Core/Opc.Ua.Core.csproj @@ -38,8 +38,22 @@ + + + + + + + + + + + + + + - From 6f9f70cd4b55f354186c20e89f90074042f96dd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20J=C3=B6hnk?= <93274944+TimJoehnk@users.noreply.github.com> Date: Tue, 29 Mar 2022 11:20:17 +0200 Subject: [PATCH 14/19] Expose actual network client connected states in IUaPubSubConnections (#1725) * Expose actual network client connected states in IUaPubSubConnections --- .../Opc.Ua.PubSub/IUaPubSubConnection.cs | 5 ++++ .../Transport/MqttPubSubConnection.cs | 10 +++++++ .../Transport/UdpPubSubConnection.cs | 9 +++++- .../Opc.Ua.PubSub/UaPubSubApplication.cs | 7 ++--- Libraries/Opc.Ua.PubSub/UaPubSubConnection.cs | 28 +++++++++++++------ 5 files changed, 45 insertions(+), 14 deletions(-) diff --git a/Libraries/Opc.Ua.PubSub/IUaPubSubConnection.cs b/Libraries/Opc.Ua.PubSub/IUaPubSubConnection.cs index 73130daf0..08f54df00 100644 --- a/Libraries/Opc.Ua.PubSub/IUaPubSubConnection.cs +++ b/Libraries/Opc.Ua.PubSub/IUaPubSubConnection.cs @@ -82,6 +82,11 @@ public interface IUaPubSubConnection : IDisposable /// bool PublishNetworkMessage(UaNetworkMessage networkMessage); + /// + /// Get flag that indicates if all the network clients are connected + /// + bool AreClientsConnected(); + /// /// Get current list of dataset readers available in this UaSubscriber component /// diff --git a/Libraries/Opc.Ua.PubSub/Transport/MqttPubSubConnection.cs b/Libraries/Opc.Ua.PubSub/Transport/MqttPubSubConnection.cs index 3daae9b06..889d78603 100644 --- a/Libraries/Opc.Ua.PubSub/Transport/MqttPubSubConnection.cs +++ b/Libraries/Opc.Ua.PubSub/Transport/MqttPubSubConnection.cs @@ -272,6 +272,16 @@ public override bool PublishNetworkMessage(UaNetworkMessage networkMessage) return false; } + + /// + /// Get flag that indicates if all the network connections are active and connected + /// + public override bool AreClientsConnected() + { + // Check if existing clients are connected + return (m_publisherMqttClient == null || m_publisherMqttClient.IsConnected) + && (m_subscriberMqttClient == null || m_subscriberMqttClient.IsConnected); + } #endregion Public Methods #region Protected Methods diff --git a/Libraries/Opc.Ua.PubSub/Transport/UdpPubSubConnection.cs b/Libraries/Opc.Ua.PubSub/Transport/UdpPubSubConnection.cs index 6aebe6204..6f05c4e39 100644 --- a/Libraries/Opc.Ua.PubSub/Transport/UdpPubSubConnection.cs +++ b/Libraries/Opc.Ua.PubSub/Transport/UdpPubSubConnection.cs @@ -85,7 +85,6 @@ public UdpPubSubConnection(UaPubSubApplication uaPubSubApplication, PubSubConnec /// Get the port from configured .Address /// public int Port { get; private set; } - #endregion #region UaPubSubConnection - Overrides @@ -347,6 +346,14 @@ public override bool PublishNetworkMessage(UaNetworkMessage networkMessage) return false; } + + /// + /// Always returns true since UDP is a connectionless protocol + /// + public override bool AreClientsConnected() + { + return true; + } #endregion #region Private methods diff --git a/Libraries/Opc.Ua.PubSub/UaPubSubApplication.cs b/Libraries/Opc.Ua.PubSub/UaPubSubApplication.cs index 79343d295..e961e7615 100644 --- a/Libraries/Opc.Ua.PubSub/UaPubSubApplication.cs +++ b/Libraries/Opc.Ua.PubSub/UaPubSubApplication.cs @@ -149,20 +149,19 @@ public static string[] SupportedTransportProfiles /// public IUaPubSubDataStore DataStore { get { return m_dataStore; } } - #endregion - - #region Internal Properties /// /// Get the read only list of created for this Application instance /// - internal ReadOnlyList PubSubConnections + public ReadOnlyList PubSubConnections { get { return new ReadOnlyList(m_uaPubSubConnections); } } + #endregion + #region Internal Properties /// /// Get reference to current configured DataCollector for this UaPubSubApplication /// diff --git a/Libraries/Opc.Ua.PubSub/UaPubSubConnection.cs b/Libraries/Opc.Ua.PubSub/UaPubSubConnection.cs index c61143d39..b2e235d27 100644 --- a/Libraries/Opc.Ua.PubSub/UaPubSubConnection.cs +++ b/Libraries/Opc.Ua.PubSub/UaPubSubConnection.cs @@ -56,7 +56,8 @@ internal abstract class UaPubSubConnection : IUaPubSubConnection internal UaPubSubConnection(UaPubSubApplication parentUaPubSubApplication, PubSubConnectionDataType pubSubConnectionDataType) { // set the default message context that uses the GlobalContext - MessageContext = new ServiceMessageContext { + MessageContext = new ServiceMessageContext + { NamespaceUris = ServiceMessageContext.GlobalContext.NamespaceUris, ServerUris = ServiceMessageContext.GlobalContext.ServerUris }; @@ -129,6 +130,7 @@ internal IReadOnlyCollection Publishers { get { return m_publishers.AsReadOnly(); } } + #endregion #region IDisposable Implementation @@ -247,6 +249,11 @@ public bool CanPublish(WriterGroupDataType writerGroupConfiguration) /// True if send was successful. public abstract bool PublishNetworkMessage(UaNetworkMessage networkMessage); + /// + /// Get flag that indicates if all the network clients are connected + /// + public abstract bool AreClientsConnected(); + /// /// Get current list of Operational DataSetReaders available in this UaSubscriber component /// @@ -285,7 +292,7 @@ public List GetOperationalDataSetReaders() /// Perform specific Stop tasks /// protected abstract Task InternalStop(); - + /// /// Processes the decoded and /// raises the or event. @@ -294,7 +301,7 @@ public List GetOperationalDataSetReaders() /// The source of the received event. protected void ProcessDecodedNetworkMessage(UaNetworkMessage networkMessage, string source) { - if (networkMessage.IsMetaDataMessage) + if (networkMessage.IsMetaDataMessage) { // update configuration of the corresponding reader objects found in this connection configuration List allReaders = GetAllDataSetReaders(); @@ -315,9 +322,10 @@ protected void ProcessDecodedNetworkMessage(UaNetworkMessage networkMessage, str } if (raiseChangedEvent) - { + { // raise event - ConfigurationUpdatingEventArgs metaDataUpdatedEventArgs = new ConfigurationUpdatingEventArgs() { + ConfigurationUpdatingEventArgs metaDataUpdatedEventArgs = new ConfigurationUpdatingEventArgs() + { ChangedProperty = ConfigurationProperty.DataSetMetaData, Parent = reader, NewValue = networkMessage.DataSetMetaData, @@ -341,7 +349,8 @@ protected void ProcessDecodedNetworkMessage(UaNetworkMessage networkMessage, str } } - SubscribedDataEventArgs subscribedDataEventArgs = new SubscribedDataEventArgs() { + SubscribedDataEventArgs subscribedDataEventArgs = new SubscribedDataEventArgs() + { NetworkMessage = networkMessage, Source = source }; @@ -356,7 +365,8 @@ protected void ProcessDecodedNetworkMessage(UaNetworkMessage networkMessage, str } else if (networkMessage.DataSetMessages != null && networkMessage.DataSetMessages.Count > 0) { - SubscribedDataEventArgs subscribedDataEventArgs = new SubscribedDataEventArgs() { + SubscribedDataEventArgs subscribedDataEventArgs = new SubscribedDataEventArgs() + { NetworkMessage = networkMessage, Source = source }; @@ -380,7 +390,7 @@ protected void ProcessDecodedNetworkMessage(UaNetworkMessage networkMessage, str /// protected List GetAllDataSetReaders() { - List readersList = new List(); + List readersList = new List(); foreach (ReaderGroupDataType readerGroup in m_pubSubConnectionDataType.ReaderGroups) { foreach (DataSetReaderDataType reader in readerGroup.DataSetReaders) @@ -397,7 +407,7 @@ protected List GetAllDataSetReaders() protected List GetAllDataSetWriters() { List writerList = new List(); - + foreach (WriterGroupDataType writerGroup in m_pubSubConnectionDataType.WriterGroups) { foreach (DataSetWriterDataType writer in writerGroup.DataSetWriters) From 8d0eb4020645039b558c464dc0d40fe14bb7f012 Mon Sep 17 00:00:00 2001 From: Martin Regen Date: Tue, 29 Mar 2022 14:23:55 +0200 Subject: [PATCH 15/19] Update README.md and templates (#1749) - fix a few badges - add new template for issues and PR --- .github/ISSUE_TEMPLATE/issue_report.md | 51 ------------ .github/ISSUE_TEMPLATE/issue_report.yml | 77 +++++++++++++++++++ .github/PULL_REQUEST_TEMPLATE/pull_request.md | 33 ++++++++ CONTRIBUTING.md | 5 ++ README.md | 6 +- 5 files changed, 119 insertions(+), 53 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/issue_report.md create mode 100644 .github/ISSUE_TEMPLATE/issue_report.yml create mode 100644 .github/PULL_REQUEST_TEMPLATE/pull_request.md create mode 100644 CONTRIBUTING.md diff --git a/.github/ISSUE_TEMPLATE/issue_report.md b/.github/ISSUE_TEMPLATE/issue_report.md deleted file mode 100644 index 9d06bb1dd..000000000 --- a/.github/ISSUE_TEMPLATE/issue_report.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -name: Issue report -about: Create an issue report to help us improve -title: '' -labels: '' -assignees: '' - ---- - -**Type of Issue** -- [ ] Bug -- [ ] Enhancement -- [ ] Compliance -- [ ] Question -- [ ] Help wanted - -**Describe the Issue** - -A clear and concise description of what the issue is. - -**To Reproduce** -Steps to reproduce the behavior: -1. Compile Sample '...' -2. Connect to Server '....' -3. Browse Address space '....' -3. Subscribe to Node '....' -4. See error - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Log output** -If applicable, add log output to help explain your problem. - -**Code snippets** -If applicable, add a code snippet to help explain your problem. - -**Environment (please complete the following information):** - - OS: [e.g. Windows 10, Ubuntu, macOS] - - Development environment: [e.g. Visual Studio 2019 16.7.2] - - Runtime: [e.g. .NET 4.6.2, .NET Core 3.1] - - OPC Package Release Version [e.g. 1.4.363.107] - - Component: [e.g. Opc.Ua.Core] - - Server: [e.g. Reference Server] - - Client: [e.g. UA Expert] - -**Additional context** -Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/issue_report.yml b/.github/ISSUE_TEMPLATE/issue_report.yml new file mode 100644 index 000000000..276393584 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/issue_report.yml @@ -0,0 +1,77 @@ +name: 🐞Bug/Issue report +description: Create an issue report to help us improve +title: "" +labels: [Needs Triage] +body: +- type: checkboxes + attributes: + label: Type of issue + description: Please provide information on the type of issue. + options: + - label: Bug + required: false + - label: Enhancement + required: false + - label: Compliance + required: false + - label: Question + required: false + - label: Help wanted + required: false +- type: textarea + attributes: + label: Current Behavior + description: A clear and concise description of what the issue is. + validations: + required: true +- type: textarea + attributes: + label: Expected Behavior + description: A clear and concise description of what you expected to happen. + validations: + required: false +- type: textarea + attributes: + label: Steps To Reproduce + description: Steps to reproduce the behavior. + placeholder: | + 1. Compile Sample '...' + 2. Connect to Server '....' + 3. Browse Address space '....' + 4. Subscribe to Node '....' + 5. See error + validations: + required: false +- type: textarea + attributes: + label: Environment + description: | + examples: + - **OS**: [Windows 10, Ubuntu, macOS] + - **Environment**: [e.g. Visual Studio 2019 16.7.2] + - **Runtime**: [e.g. .NET 4.6.2, .NET Core 3.1] + - **Nuget Version**: [e.g. 1.4.368.33] + - **Component**: [e.g. Opc.Ua.Core] + - **Server**: [e.g. Reference Server] + - **Client**: [e.g. UA Expert] + value: | + - OS: + - Environment: + - Runtime: + - Nuget Version: + - Component: + - Server: + - Client: + render: markdown + validations: + required: false +- type: textarea + attributes: + label: Anything else? + description: | + Links? References? Log files? Code snippets? + Anything that will give us more context about the issue you are encountering! + + Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in. + validations: + required: false diff --git a/.github/PULL_REQUEST_TEMPLATE/pull_request.md b/.github/PULL_REQUEST_TEMPLATE/pull_request.md new file mode 100644 index 000000000..70151b7cc --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/pull_request.md @@ -0,0 +1,33 @@ +## Proposed changes + +Describe the changes here to communicate to the maintainers why we should accept this pull request. If it fixes a bug or resolves a feature request, be sure to link to that issue. + +## Related Issues + +- Fixes # + +## Types of changes + +What types of changes does your code introduce to Appium? +_Put an `x` in the boxes that apply_ + +- [ ] Bugfix (non-breaking change which fixes an issue) +- [ ] Enhancement (non-breaking change which adds functionality) +- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected, requires version increase of Nuget packages) +- [ ] Documentation Update (if none of the other choices apply) + +## Checklist + +_Put an `x` in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code._ + +- [ ] I have read the [CONTRIBUTING](https://github.com/OPCFoundation/UA-.NETStandard/blob/master/CONTRIBUTING.md) doc. +- [ ] I have signed the [CLA](https://opcfoundation.org/license/cla/ContributorLicenseAgreementv1.0.pdf). +- [ ] I ran tests locally with my changes, all passed. +- [ ] I fixed all failing tests in the CI pipelines. +- [ ] I have added tests that prove my fix is effective or that my feature works. +- [ ] I have added necessary documentation (if appropriate). +- [ ] Any dependent changes have been merged and published in downstream modules. + +## Further comments + +If this is a relatively large or complex change, kick off the discussion by explaining why you chose the solution you did and what alternatives you considered, etc... diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..1f6f85b7d --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,5 @@ +## Contributing + +We strongly encourage community participation and contribution to this project. First, please fork the repository and commit your changes there. Once happy with your changes you can generate a 'pull request'. + +You must agree to the contributor license agreement before we can accept your changes. The CLA and "I AGREE" button is automatically displayed when you perform the pull request. You can preview CLA [here](https://opcfoundation.org/license/cla/ContributorLicenseAgreementv1.0.pdf). diff --git a/README.md b/README.md index ccd20475b..dc7a93fd7 100644 --- a/README.md +++ b/README.md @@ -56,12 +56,14 @@ More samples based on the official [Nuget](https://www.nuget.org/packages/OPCFou [![Nuget Downloads](https://img.shields.io/nuget/dt/OPCFoundation.NetStandard.Opc.Ua)](https://www.nuget.org/packages/OPCFoundation.NetStandard.Opc.Ua/) ### Build Status -[![Build Status](https://opcfoundation.visualstudio.com/opcua-netstandard/_apis/build/status/OPCFoundation.UA-.NETStandard?branchName=master)](https://opcfoundation.visualstudio.com/opcua-netstandard/_build/latest?definitionId=14&branchName=master) +[![Azure DevOps](https://opcfoundation.visualstudio.com/opcua-netstandard/_apis/build/status/OPCFoundation.UA-.NETStandard?branchName=master)](https://opcfoundation.visualstudio.com/opcua-netstandard/_build/latest?definitionId=14&branchName=master) +[![Github Actions](https://github.com/OPCFoundation/UA-.NETStandard/actions/workflows/buildandtest.yml/badge.svg)](https://github.com/OPCFoundation/UA-.NETStandard/actions/workflows/buildandtest.yml) [![Build Status](https://img.shields.io/appveyor/build/opcfoundation-org/ua-netstandardlibrary/master?label=Appveyor)](https://ci.appveyor.com/project/opcfoundation-org/ua-netstandardlibrary) ### Code Quality [![Test Status](https://img.shields.io/azure-devops/tests/opcfoundation/opcua-netstandard/14?style=plastic)](https://opcfoundation.visualstudio.com/opcua-netstandard/_test/analytics?definitionId=14&contextType=build) -[![Coverage Status](https://img.shields.io/azure-devops/coverage/opcfoundation/opcua-netstandard/14/master?style=plastic)](https://codecov.io/gh/OPCFoundation/UA-.NETStandard/branch/master) +[![CodeQL](https://github.com/OPCFoundation/UA-.NETStandard/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/OPCFoundation/UA-.NETStandard/actions/workflows/codeql-analysis.yml) +[![Coverage Status](https://codecov.io/gh/OPCFoundation/UA-.NETStandard/branch/master/graph/badge.svg?token=vDf5AnilUt)](https://codecov.io/gh/OPCFoundation/UA-.NETStandard) ## Getting Started All the tools you need for .NET Standard come with the .NET Core tools. See [Get started with .NET Core](https://docs.microsoft.com/en-us/dotnet/articles/core/getting-started) for what you need. From 8ddda78affed2b7344f50099661ae75c133a7aa8 Mon Sep 17 00:00:00 2001 From: Martin Regen <mregen@microsoft.com> Date: Wed, 30 Mar 2022 09:20:13 +0200 Subject: [PATCH 16/19] Fix for Usertokenpolicy Anonymous, security policy default should be None (#1756) - Only an issue if the configuration does not specify the security policy uri for anonymous token - If the config does not specify the security policy, for anonymous user token the security profile Basic256Sha256 was chosen. - This setting requires for the client to trust the server certificate if it tries to connect with security None, may cause IOP issues when no security is chosen and encryption is required for the anonymous user token. --- .../ConsoleReferenceClient/Program.cs | 6 ++++ .../ConsoleReferenceServer/Program.cs | 6 ++++ .../Quickstarts.ReferenceServer.Config.xml | 2 +- Stack/Opc.Ua.Core/Stack/Server/ServerBase.cs | 13 ++++++-- Tests/Opc.Ua.Client.Tests/ClientTest.cs | 31 ++++++++++++------- 5 files changed, 44 insertions(+), 14 deletions(-) diff --git a/Applications/ConsoleReferenceClient/Program.cs b/Applications/ConsoleReferenceClient/Program.cs index c24bc33bd..50961cbc9 100644 --- a/Applications/ConsoleReferenceClient/Program.cs +++ b/Applications/ConsoleReferenceClient/Program.cs @@ -28,6 +28,7 @@ * ======================================================================*/ using System; +using System.Globalization; using System.IO; using System.Threading; using System.Threading.Tasks; @@ -50,6 +51,11 @@ public static async Task Main(string[] args) TextWriter output = Console.Out; output.WriteLine("OPC UA Console Reference Client"); + output.WriteLine("OPC UA library: {0} @ {1} -- {2}", + Utils.GetAssemblyBuildNumber(), + Utils.GetAssemblyTimestamp().ToString("G", CultureInfo.InvariantCulture), + Utils.GetAssemblySoftwareVersion()); + // The application name and config file names var applicationName = "ConsoleReferenceClient"; var configSectionName = "Quickstarts.ReferenceClient"; diff --git a/Applications/ConsoleReferenceServer/Program.cs b/Applications/ConsoleReferenceServer/Program.cs index 69426f77b..8afc00e2c 100644 --- a/Applications/ConsoleReferenceServer/Program.cs +++ b/Applications/ConsoleReferenceServer/Program.cs @@ -28,6 +28,7 @@ * ======================================================================*/ using System; +using System.Globalization; using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; @@ -45,6 +46,11 @@ public static async Task<int> Main(string[] args) TextWriter output = Console.Out; output.WriteLine("{0} OPC UA Reference Server", Utils.IsRunningOnMono() ? "Mono" : ".NET Core"); + output.WriteLine("OPC UA library: {0} @ {1} -- {2}", + Utils.GetAssemblyBuildNumber(), + Utils.GetAssemblyTimestamp().ToString("G", CultureInfo.InvariantCulture), + Utils.GetAssemblySoftwareVersion()); + // The application name and config file names var applicationName = Utils.IsRunningOnMono() ? "MonoReferenceServer" : "ConsoleReferenceServer"; var configSectionName = Utils.IsRunningOnMono() ? "Quickstarts.MonoReferenceServer" : "Quickstarts.ReferenceServer"; diff --git a/Applications/ConsoleReferenceServer/Quickstarts.ReferenceServer.Config.xml b/Applications/ConsoleReferenceServer/Quickstarts.ReferenceServer.Config.xml index 1fcffc07e..287f0a74d 100644 --- a/Applications/ConsoleReferenceServer/Quickstarts.ReferenceServer.Config.xml +++ b/Applications/ConsoleReferenceServer/Quickstarts.ReferenceServer.Config.xml @@ -141,7 +141,7 @@ <!-- Allows anonymous users --> <ua:UserTokenPolicy> <ua:TokenType>Anonymous_0</ua:TokenType> - <!-- passwords must be encrypted - no setting lets the stack select a secure profile --> + <!-- <ua:SecurityPolicyUri>http://opcfoundation.org/UA/SecurityPolicy#None</ua:SecurityPolicyUri> --> </ua:UserTokenPolicy> <!-- Allows username/password --> diff --git a/Stack/Opc.Ua.Core/Stack/Server/ServerBase.cs b/Stack/Opc.Ua.Core/Stack/Server/ServerBase.cs index 8b3573fc0..822ac15c1 100644 --- a/Stack/Opc.Ua.Core/Stack/Server/ServerBase.cs +++ b/Stack/Opc.Ua.Core/Stack/Server/ServerBase.cs @@ -826,10 +826,19 @@ public virtual UserTokenPolicyCollection GetUserTokenPolicies(ApplicationConfigu { if (description.SecurityMode == MessageSecurityMode.None) { - // ensure a security policy is specified for user tokens. - clone.SecurityPolicyUri = SecurityPolicies.Basic256Sha256; + if (clone.TokenType == UserTokenType.Anonymous) + { + // no need for security with anonymous token + clone.SecurityPolicyUri = SecurityPolicies.None; + } + else + { + // ensure a security policy is specified for user tokens. + clone.SecurityPolicyUri = SecurityPolicies.Basic256Sha256; + } } } + // ensure each policy has a unique id within the context of the Server clone.PolicyId = Utils.Format("{0}", ++m_userTokenPolicyId); diff --git a/Tests/Opc.Ua.Client.Tests/ClientTest.cs b/Tests/Opc.Ua.Client.Tests/ClientTest.cs index ce0a75abb..974069442 100644 --- a/Tests/Opc.Ua.Client.Tests/ClientTest.cs +++ b/Tests/Opc.Ua.Client.Tests/ClientTest.cs @@ -138,21 +138,30 @@ public async Task GetEndpointsAsync() TestContext.Out.WriteLine("Endpoints:"); foreach (var endpoint in Endpoints) { - using (var cert = new X509Certificate2(endpoint.ServerCertificate)) + TestContext.Out.WriteLine("{0}", endpoint.Server.ApplicationName); + TestContext.Out.WriteLine(" {0}", endpoint.Server.ApplicationUri); + TestContext.Out.WriteLine(" {0}", endpoint.EndpointUrl); + TestContext.Out.WriteLine(" {0}", endpoint.EncodingSupport); + TestContext.Out.WriteLine(" {0}/{1}/{2}", endpoint.SecurityLevel, endpoint.SecurityMode, endpoint.SecurityPolicyUri); + + if (endpoint.ServerCertificate != null) { - TestContext.Out.WriteLine("{0}", endpoint.Server.ApplicationName); - TestContext.Out.WriteLine(" {0}", endpoint.Server.ApplicationUri); - TestContext.Out.WriteLine(" {0}", endpoint.EndpointUrl); - TestContext.Out.WriteLine(" {0}", endpoint.EncodingSupport); - TestContext.Out.WriteLine(" {0}/{1}/{2}", endpoint.SecurityLevel, endpoint.SecurityMode, endpoint.SecurityPolicyUri); - TestContext.Out.WriteLine(" [{0}]", cert.Thumbprint); - foreach (var userIdentity in endpoint.UserIdentityTokens) + using (var cert = new X509Certificate2(endpoint.ServerCertificate)) { - TestContext.Out.WriteLine(" {0}", userIdentity.TokenType); - TestContext.Out.WriteLine(" {0}", userIdentity.PolicyId); - TestContext.Out.WriteLine(" {0}", userIdentity.SecurityPolicyUri); + TestContext.Out.WriteLine(" [{0}]", cert.Thumbprint); } } + else + { + TestContext.Out.WriteLine(" [no certificate]"); + } + + foreach (var userIdentity in endpoint.UserIdentityTokens) + { + TestContext.Out.WriteLine(" {0}", userIdentity.TokenType); + TestContext.Out.WriteLine(" {0}", userIdentity.PolicyId); + TestContext.Out.WriteLine(" {0}", userIdentity.SecurityPolicyUri); + } } } } From 3a378e864453e58662b47e2e3c52a61966962933 Mon Sep 17 00:00:00 2001 From: Martin Regen <mregen@microsoft.com> Date: Thu, 31 Mar 2022 13:14:17 +0200 Subject: [PATCH 17/19] Fix dual license headers (#1763) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Headers incorrectly state that the RCL applies to members, however the OPC Source Deliverables license states RCL is applicable only to corporate members. The OPC Foundation Technical Control Board on March 30th decided on the following changes with regard of the license headers: • Change the dual license in the source files so that “members” are replaced with “corporate members”. Co-authored-by: Suciu Mircea Adrian <Mircea-Adrian.Suciu@softing.com> --- .../Properties/AssemblyInfo.cs | 4 +-- .../Stack/Https/HttpsServiceHost.cs | 29 +++++-------------- .../Stack/Https/HttpsTransportChannel.cs | 4 +-- .../Stack/Https/HttpsTransportListener.cs | 29 +++++-------------- .../Documentation/Opc.Ua.Bindings.cs | 4 +-- .../Documentation/Opc.Ua.Configuration.cs | 4 +-- .../Documentation/Opc.Ua.Schema.Binary.cs | 4 +-- .../Documentation/Opc.Ua.Schema.Xml.cs | 4 +-- .../Documentation/Opc.Ua.Schema.cs | 4 +-- Stack/Opc.Ua.Core/Documentation/Opc.Ua.cs | 4 +-- Stack/Opc.Ua.Core/Properties/AssemblyInfo.cs | 4 +-- .../Schema/ApplicationConfiguration.cs | 4 +-- .../Schema/SecuredApplicationHelpers.cs | 4 +-- Stack/Opc.Ua.Core/Schema/UANodeSetHelpers.cs | 4 +-- Stack/Opc.Ua.Core/Security/Audit.cs | 4 +-- .../Certificates/CertificateFactory.cs | 4 +-- .../Certificates/CertificateIdentifier.cs | 4 +-- .../CertificatePasswordProvider.cs | 4 +-- .../CertificateStoreIdentifier.cs | 4 +-- .../Certificates/CertificateTrustList.cs | 4 +-- .../Certificates/CertificateValidator.cs | 4 +-- .../Certificates/DirectoryCertificateStore.cs | 4 +-- .../Security/Certificates/EncryptedData.cs | 4 +-- .../Certificates/ICertificateStore.cs | 4 +-- .../Certificates/ICertificateStoreType.cs | 4 +-- .../Certificates/ICertificateValidator.cs | 4 +-- .../Security/Certificates/RsaUtils.cs | 4 +-- .../Certificates/SecurityConfiguration.cs | 4 +-- .../Certificates/X509CertificateStore.cs | 4 +-- .../Security/Certificates/X509Utils.cs | 4 +-- .../Security/Constants/SecurityConstants.cs | 4 +-- .../Security/Constants/SecurityPolicies.cs | 4 +-- .../Stack/Bindings/ArraySegmentStream.cs | 4 +-- .../Opc.Ua.Core/Stack/Bindings/BaseBinding.cs | 4 +-- .../Stack/Bindings/BufferManager.cs | 4 +-- .../Stack/Bindings/ITransportBindings.cs | 4 +-- .../Stack/Bindings/TransportBindings.cs | 4 +-- .../Stack/Bindings/TransportBindingsBase.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Client/ClientBase.cs | 4 +-- .../Stack/Client/DiscoveryClient.cs | 4 +-- .../Opc.Ua.Core/Stack/Client/IChannelBase.cs | 4 +-- .../Stack/Client/IServiceRequest.cs | 4 +-- .../Opc.Ua.Core/Stack/Client/IUserIdentity.cs | 4 +-- .../Stack/Client/InvokeServiceMessage.cs | 4 +-- .../Stack/Client/RegistrationClient.cs | 4 +-- .../Stack/Client/ReverseConnectHost.cs | 4 +-- .../Stack/Client/SessionChannel.cs | 4 +-- .../Opc.Ua.Core/Stack/Client/UaChannelBase.cs | 4 +-- .../Opc.Ua.Core/Stack/Client/UserIdentity.cs | 4 +-- .../Configuration/ApplicationConfiguration.cs | 4 +-- .../Configuration/ConfigurationWatcher.cs | 4 +-- .../Configuration/ConfiguredEndpoints.cs | 4 +-- .../Configuration/EndpointConfiguration.cs | 4 +-- .../Configuration/EndpointDescription.cs | 4 +-- .../ISecurityConfigurationManager.cs | 4 +-- .../SecurityConfigurationManager.cs | 4 +-- .../Stack/Configuration/ServerProperties.cs | 4 +-- .../Stack/Constants/ConditionStateNames.cs | 4 +-- .../Stack/Constants/DataTypes.Helpers.cs | 4 +-- .../Opc.Ua.Core/Stack/Constants/Namespaces.cs | 4 +-- .../Stack/Constants/ReferenceTypes.Helpers.cs | 4 +-- .../Opc.Ua.Core/Stack/Nodes/ContentFilter.cs | 4 +-- .../Opc.Ua.Core/Stack/Nodes/IFilterTarget.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Nodes/INode.cs | 4 +-- .../Stack/Nodes/IOperationContext.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Nodes/Node.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Nodes/NodeSet.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Nodes/NodeTable.cs | 4 +-- .../Opc.Ua.Core/Stack/Nodes/ReferenceTable.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Nodes/TypeTable.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Nodes/ViewTable.cs | 4 +-- .../Opc.Ua.Core/Stack/Server/EndpointBase.cs | 4 +-- .../Opc.Ua.Core/Stack/Server/IEndpointBase.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Server/IServerBase.cs | 4 +-- .../Stack/Server/SecureChannelContext.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Server/ServerBase.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Server/ServiceHost.cs | 4 +-- .../State/AcknowledgeableConditionState.cs | 4 +-- .../Stack/State/AlarmConditionState.cs | 4 +-- .../Stack/State/AuditEventState.cs | 4 +-- .../Opc.Ua.Core/Stack/State/BaseEventState.cs | 4 +-- .../Stack/State/BaseInstanceState.cs | 4 +-- .../Stack/State/BaseInstanceStateSnapshot.cs | 4 +-- .../Stack/State/BaseObjectState.cs | 4 +-- .../Stack/State/BaseObjectTypeState.cs | 4 +-- .../Opc.Ua.Core/Stack/State/BaseTypeState.cs | 4 +-- .../Stack/State/BaseVariableState.cs | 4 +-- .../Stack/State/BaseVariableTypeState.cs | 4 +-- .../Opc.Ua.Core/Stack/State/ConditionState.cs | 4 +-- .../Opc.Ua.Core/Stack/State/DataTypeState.cs | 4 +-- .../Stack/State/DialogConditionState.cs | 4 +-- .../Stack/State/ExclusiveLimitAlarmState.cs | 4 +-- .../State/ExclusiveLimitStateMachineState.cs | 4 +-- .../Stack/State/FiniteStateMachineState.cs | 4 +-- .../Opc.Ua.Core/Stack/State/ISystemContext.cs | 4 +-- .../Stack/State/LimitAlarmState.cs | 4 +-- Stack/Opc.Ua.Core/Stack/State/MethodState.cs | 4 +-- .../Stack/State/ModelCompilerExtension.cs | 4 +-- Stack/Opc.Ua.Core/Stack/State/NodeBrowser.cs | 4 +-- Stack/Opc.Ua.Core/Stack/State/NodeState.cs | 4 +-- .../Stack/State/NodeStateCollection.cs | 4 +-- .../State/NonExclusiveLimitAlarmState.cs | 4 +-- .../Stack/State/ProgramStateMachineState.cs | 4 +-- .../Stack/State/ReferenceTypeState.cs | 4 +-- .../Stack/State/ShelvedStateMachineState.cs | 4 +-- Stack/Opc.Ua.Core/Stack/State/ViewState.cs | 4 +-- .../Stack/Tcp/ChannelAsyncOperation.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Tcp/ChannelQuotas.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Tcp/ChannelToken.cs | 4 +-- .../Stack/Tcp/ITcpChannelListener.cs | 4 +-- .../Stack/Tcp/TcpListenerChannel.cs | 4 +-- .../Opc.Ua.Core/Stack/Tcp/TcpMessageSocket.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Tcp/TcpMessageType.cs | 4 +-- .../Stack/Tcp/TcpReverseConnectChannel.cs | 4 +-- .../Opc.Ua.Core/Stack/Tcp/TcpServerChannel.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Tcp/TcpServiceHost.cs | 4 +-- .../Stack/Tcp/TcpTransportListener.cs | 4 +-- .../Stack/Tcp/UaSCBinaryChannel.Asymmetric.cs | 4 +-- .../Stack/Tcp/UaSCBinaryChannel.Rsa.cs | 4 +-- .../Stack/Tcp/UaSCBinaryChannel.Symmetric.cs | 4 +-- .../Stack/Tcp/UaSCBinaryChannel.cs | 4 +-- .../Stack/Tcp/UaSCBinaryClientChannel.cs | 4 +-- .../Stack/Tcp/UaSCBinaryTransportChannel.cs | 4 +-- .../Stack/Transport/AsyncResultBase.cs | 4 +-- .../Stack/Transport/ConnectionEvents.cs | 4 +-- .../Stack/Transport/IMessageSocket.cs | 4 +-- .../Stack/Transport/ITransportChannel.cs | 4 +-- .../Stack/Transport/ITransportListener.cs | 4 +-- .../Transport/ITransportListenerCallback.cs | 4 +-- .../Transport/TransportChannelSettings.cs | 4 +-- .../Transport/TransportListenerSettings.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Types/Argument.cs | 4 +-- .../Stack/Types/BrowseDescription.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Types/BrowsePath.cs | 4 +-- .../Stack/Types/CallMethodRequest.cs | 4 +-- .../Stack/Types/ContentFilter.Evaluate.cs | 4 +-- .../Opc.Ua.Core/Stack/Types/EUInformation.cs | 4 +-- .../Opc.Ua.Core/Stack/Types/EventFieldList.cs | 4 +-- .../Stack/Types/HistoryReadValueId.cs | 4 +-- .../Stack/Types/HistoryUpdateDetails.cs | 4 +-- .../Stack/Types/MonitoredItemCreateRequest.cs | 4 +-- .../Stack/Types/MonitoredItemCreateResult.cs | 4 +-- .../Stack/Types/MonitoredItemModifyRequest.cs | 4 +-- .../Stack/Types/MonitoredItemNotification.cs | 4 +-- .../Stack/Types/MonitoringFilter.cs | 4 +-- .../Stack/Types/NotificationMessage.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Types/QueryDataSet.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Types/Range.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Types/ReadValueId.cs | 4 +-- .../Stack/Types/ReferenceDescription.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Types/ServiceFault.cs | 4 +-- .../Stack/Types/SoftwareCertficate.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Types/StatusResult.cs | 4 +-- .../Stack/Types/StructureDefinition.cs | 4 +-- .../Stack/Types/UserIdentityToken.cs | 4 +-- .../Stack/Types/UserTokenPolicy.cs | 4 +-- .../Stack/Types/VariableAttributes.cs | 4 +-- .../Stack/Types/ViewDescription.cs | 4 +-- Stack/Opc.Ua.Core/Stack/Types/WriteValue.cs | 4 +-- .../Types/BuiltIn/AttributeValues.cs | 4 +-- .../Types/BuiltIn/BuiltInTypeCollections.cs | 4 +-- Stack/Opc.Ua.Core/Types/BuiltIn/DataValue.cs | 4 +-- .../Types/BuiltIn/DiagnosticInfo.cs | 4 +-- .../Types/BuiltIn/DiagnosticMasks.cs | 4 +-- .../Types/BuiltIn/ExpandedNodeId.cs | 4 +-- .../Types/BuiltIn/ExtensionObject.cs | 4 +-- .../Types/BuiltIn/ITranslatableObject.cs | 4 +-- Stack/Opc.Ua.Core/Types/BuiltIn/ITypeTable.cs | 4 +-- .../Types/BuiltIn/LocalizedText.cs | 4 +-- .../Types/BuiltIn/MessageContextExtension.cs | 4 +-- Stack/Opc.Ua.Core/Types/BuiltIn/NodeId.cs | 4 +-- .../Types/BuiltIn/QualifiedName.cs | 4 +-- .../BuiltIn/SessionLessServiceMessage.cs | 4 +-- Stack/Opc.Ua.Core/Types/BuiltIn/StatusCode.cs | 4 +-- Stack/Opc.Ua.Core/Types/BuiltIn/Uuid.cs | 4 +-- Stack/Opc.Ua.Core/Types/BuiltIn/Variant.cs | 4 +-- .../Types/Constants/Attributes.Helpers.cs | 4 +-- .../Types/Constants/StatusCodes.Helpers.cs | 4 +-- .../Types/Encoders/BinaryDecoder.cs | 4 +-- .../Types/Encoders/BinaryEncoder.cs | 4 +-- .../Types/Encoders/EncodableObject.cs | 4 +-- .../Types/Encoders/EncodeableFactory.cs | 4 +-- .../Types/Encoders/IComplexTypeInstance.cs | 4 +-- Stack/Opc.Ua.Core/Types/Encoders/IDecoder.cs | 4 +-- .../Opc.Ua.Core/Types/Encoders/IEncodable.cs | 4 +-- .../Types/Encoders/IEncodeableFactory.cs | 4 +-- Stack/Opc.Ua.Core/Types/Encoders/IEncoder.cs | 4 +-- .../Types/Encoders/IStructureTypeInfo.cs | 4 +-- .../Opc.Ua.Core/Types/Encoders/JsonDecoder.cs | 4 +-- .../Opc.Ua.Core/Types/Encoders/JsonEncoder.cs | 4 +-- .../Opc.Ua.Core/Types/Encoders/XmlDecoder.cs | 4 +-- .../Opc.Ua.Core/Types/Encoders/XmlEncoder.cs | 4 +-- .../Opc.Ua.Core/Types/Schemas/BinarySchema.cs | 4 +-- .../Types/Schemas/BinarySchemaValidator.cs | 4 +-- .../Types/Schemas/OPCBinarySchema.cs | 4 +-- .../Types/Schemas/SchemaValidator.cs | 4 +-- .../Types/Schemas/XmlSchemaValidator.cs | 4 +-- Stack/Opc.Ua.Core/Types/Utils/DataComparer.cs | 4 +-- .../Opc.Ua.Core/Types/Utils/DataGenerator.cs | 4 +-- Stack/Opc.Ua.Core/Types/Utils/HiResClock.cs | 4 +-- .../Types/Utils/IServiceMessageContext.cs | 4 +-- .../Opc.Ua.Core/Types/Utils/NamespaceTable.cs | 4 +-- Stack/Opc.Ua.Core/Types/Utils/NumericRange.cs | 4 +-- .../Types/Utils/OpcUaCoreEventSource.cs | 4 +-- Stack/Opc.Ua.Core/Types/Utils/ReadOnlyList.cs | 4 +-- Stack/Opc.Ua.Core/Types/Utils/RelativePath.cs | 4 +-- .../Types/Utils/ServiceMessageContext.cs | 4 +-- .../Opc.Ua.Core/Types/Utils/ServiceResult.cs | 4 +-- .../Types/Utils/ServiceResultException.cs | 4 +-- .../Opc.Ua.Core/Types/Utils/TraceEventArgs.cs | 4 +-- .../Types/Utils/TraceEventLogger.cs | 4 +-- Stack/Opc.Ua.Core/Types/Utils/Tracing.cs | 4 +-- Stack/Opc.Ua.Core/Types/Utils/TypeInfo.cs | 4 +-- Stack/Opc.Ua.Core/Types/Utils/Utils.cs | 4 +-- 214 files changed, 438 insertions(+), 468 deletions(-) diff --git a/Stack/Opc.Ua.Bindings.Https/Properties/AssemblyInfo.cs b/Stack/Opc.Ua.Bindings.Https/Properties/AssemblyInfo.cs index 289dc8e48..f392c8d60 100644 --- a/Stack/Opc.Ua.Bindings.Https/Properties/AssemblyInfo.cs +++ b/Stack/Opc.Ua.Bindings.Https/Properties/AssemblyInfo.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Bindings.Https/Stack/Https/HttpsServiceHost.cs b/Stack/Opc.Ua.Bindings.Https/Stack/Https/HttpsServiceHost.cs index 632d3bb19..f55c67224 100644 --- a/Stack/Opc.Ua.Bindings.Https/Stack/Https/HttpsServiceHost.cs +++ b/Stack/Opc.Ua.Bindings.Https/Stack/Https/HttpsServiceHost.cs @@ -1,25 +1,10 @@ -/* ======================================================================== - * Copyright (c) 2005-2020 The OPC Foundation, Inc. All rights reserved. - * - * OPC Reciprocal Community License ("RCL") Version 1.00 - * - * Unless explicitly acquired and licensed from Licensor under another - * license, the contents of this file are subject to the Reciprocal - * Community License ("RCL") Version 1.00, or subsequent versions - * as allowed by the RCL, and You may not copy or use this file in either - * source code or executable form, except in compliance with the terms and - * conditions of the RCL. - * - * All software distributed under the RCL is provided strictly on an - * "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, - * AND LICENSOR HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT - * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE, QUIET ENJOYMENT, OR NON-INFRINGEMENT. See the RCL for specific - * language governing rights and limitations under the RCL. - * - * The complete license agreement can be found here: - * http://opcfoundation.org/License/RCL/1.00/ - * ======================================================================*/ +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. + The source code in this file is covered under a dual-license scenario: + - RCL: for OPC Foundation Corporate Members in good-standing + - GPL V2: everybody else + RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ + GNU General Public License as published by the Free Software Foundation; +*/ using System; using System.Collections.Generic; diff --git a/Stack/Opc.Ua.Bindings.Https/Stack/Https/HttpsTransportChannel.cs b/Stack/Opc.Ua.Bindings.Https/Stack/Https/HttpsTransportChannel.cs index 3474f3061..b31fa2515 100644 --- a/Stack/Opc.Ua.Bindings.Https/Stack/Https/HttpsTransportChannel.cs +++ b/Stack/Opc.Ua.Bindings.Https/Stack/Https/HttpsTransportChannel.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Bindings.Https/Stack/Https/HttpsTransportListener.cs b/Stack/Opc.Ua.Bindings.Https/Stack/Https/HttpsTransportListener.cs index 4427a318b..46dfd1346 100644 --- a/Stack/Opc.Ua.Bindings.Https/Stack/Https/HttpsTransportListener.cs +++ b/Stack/Opc.Ua.Bindings.Https/Stack/Https/HttpsTransportListener.cs @@ -1,25 +1,10 @@ -/* ======================================================================== - * Copyright (c) 2005-2020 The OPC Foundation, Inc. All rights reserved. - * - * OPC Reciprocal Community License ("RCL") Version 1.00 - * - * Unless explicitly acquired and licensed from Licensor under another - * license, the contents of this file are subject to the Reciprocal - * Community License ("RCL") Version 1.00, or subsequent versions - * as allowed by the RCL, and You may not copy or use this file in either - * source code or executable form, except in compliance with the terms and - * conditions of the RCL. - * - * All software distributed under the RCL is provided strictly on an - * "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, - * AND LICENSOR HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT - * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR - * PURPOSE, QUIET ENJOYMENT, OR NON-INFRINGEMENT. See the RCL for specific - * language governing rights and limitations under the RCL. - * - * The complete license agreement can be found here: - * http://opcfoundation.org/License/RCL/1.00/ - * ======================================================================*/ +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. + The source code in this file is covered under a dual-license scenario: + - RCL: for OPC Foundation Corporate Members in good-standing + - GPL V2: everybody else + RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ + GNU General Public License as published by the Free Software Foundation; +*/ using System; using System.IO; diff --git a/Stack/Opc.Ua.Core/Documentation/Opc.Ua.Bindings.cs b/Stack/Opc.Ua.Core/Documentation/Opc.Ua.Bindings.cs index a49f80ea1..7bccd5eba 100644 --- a/Stack/Opc.Ua.Core/Documentation/Opc.Ua.Bindings.cs +++ b/Stack/Opc.Ua.Core/Documentation/Opc.Ua.Bindings.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Documentation/Opc.Ua.Configuration.cs b/Stack/Opc.Ua.Core/Documentation/Opc.Ua.Configuration.cs index a4f6eae83..6ac66ce41 100644 --- a/Stack/Opc.Ua.Core/Documentation/Opc.Ua.Configuration.cs +++ b/Stack/Opc.Ua.Core/Documentation/Opc.Ua.Configuration.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Documentation/Opc.Ua.Schema.Binary.cs b/Stack/Opc.Ua.Core/Documentation/Opc.Ua.Schema.Binary.cs index 2e56a01b2..e375892ad 100644 --- a/Stack/Opc.Ua.Core/Documentation/Opc.Ua.Schema.Binary.cs +++ b/Stack/Opc.Ua.Core/Documentation/Opc.Ua.Schema.Binary.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Documentation/Opc.Ua.Schema.Xml.cs b/Stack/Opc.Ua.Core/Documentation/Opc.Ua.Schema.Xml.cs index 779f2e32b..159bff021 100644 --- a/Stack/Opc.Ua.Core/Documentation/Opc.Ua.Schema.Xml.cs +++ b/Stack/Opc.Ua.Core/Documentation/Opc.Ua.Schema.Xml.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Documentation/Opc.Ua.Schema.cs b/Stack/Opc.Ua.Core/Documentation/Opc.Ua.Schema.cs index 0216886e0..371f99c70 100644 --- a/Stack/Opc.Ua.Core/Documentation/Opc.Ua.Schema.cs +++ b/Stack/Opc.Ua.Core/Documentation/Opc.Ua.Schema.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Documentation/Opc.Ua.cs b/Stack/Opc.Ua.Core/Documentation/Opc.Ua.cs index 169d19305..2e0b5bf54 100644 --- a/Stack/Opc.Ua.Core/Documentation/Opc.Ua.cs +++ b/Stack/Opc.Ua.Core/Documentation/Opc.Ua.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Properties/AssemblyInfo.cs b/Stack/Opc.Ua.Core/Properties/AssemblyInfo.cs index 289dc8e48..f392c8d60 100644 --- a/Stack/Opc.Ua.Core/Properties/AssemblyInfo.cs +++ b/Stack/Opc.Ua.Core/Properties/AssemblyInfo.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Schema/ApplicationConfiguration.cs b/Stack/Opc.Ua.Core/Schema/ApplicationConfiguration.cs index 3344693f9..ddf89321a 100644 --- a/Stack/Opc.Ua.Core/Schema/ApplicationConfiguration.cs +++ b/Stack/Opc.Ua.Core/Schema/ApplicationConfiguration.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Schema/SecuredApplicationHelpers.cs b/Stack/Opc.Ua.Core/Schema/SecuredApplicationHelpers.cs index 012caca15..ca51be734 100644 --- a/Stack/Opc.Ua.Core/Schema/SecuredApplicationHelpers.cs +++ b/Stack/Opc.Ua.Core/Schema/SecuredApplicationHelpers.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Schema/UANodeSetHelpers.cs b/Stack/Opc.Ua.Core/Schema/UANodeSetHelpers.cs index 913e6ddbe..0ecd2e749 100644 --- a/Stack/Opc.Ua.Core/Schema/UANodeSetHelpers.cs +++ b/Stack/Opc.Ua.Core/Schema/UANodeSetHelpers.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Security/Audit.cs b/Stack/Opc.Ua.Core/Security/Audit.cs index e324d1d6a..d6c5ba6e9 100644 --- a/Stack/Opc.Ua.Core/Security/Audit.cs +++ b/Stack/Opc.Ua.Core/Security/Audit.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Security/Certificates/CertificateFactory.cs b/Stack/Opc.Ua.Core/Security/Certificates/CertificateFactory.cs index 730ed0b92..23c13e078 100644 --- a/Stack/Opc.Ua.Core/Security/Certificates/CertificateFactory.cs +++ b/Stack/Opc.Ua.Core/Security/Certificates/CertificateFactory.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Security/Certificates/CertificateIdentifier.cs b/Stack/Opc.Ua.Core/Security/Certificates/CertificateIdentifier.cs index 7fe1c30f5..adffb86a2 100644 --- a/Stack/Opc.Ua.Core/Security/Certificates/CertificateIdentifier.cs +++ b/Stack/Opc.Ua.Core/Security/Certificates/CertificateIdentifier.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Security/Certificates/CertificatePasswordProvider.cs b/Stack/Opc.Ua.Core/Security/Certificates/CertificatePasswordProvider.cs index db9b65ffc..f1ad4421f 100644 --- a/Stack/Opc.Ua.Core/Security/Certificates/CertificatePasswordProvider.cs +++ b/Stack/Opc.Ua.Core/Security/Certificates/CertificatePasswordProvider.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2021 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Security/Certificates/CertificateStoreIdentifier.cs b/Stack/Opc.Ua.Core/Security/Certificates/CertificateStoreIdentifier.cs index 65aaa1f8b..279636e63 100644 --- a/Stack/Opc.Ua.Core/Security/Certificates/CertificateStoreIdentifier.cs +++ b/Stack/Opc.Ua.Core/Security/Certificates/CertificateStoreIdentifier.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Security/Certificates/CertificateTrustList.cs b/Stack/Opc.Ua.Core/Security/Certificates/CertificateTrustList.cs index 49ef2d182..365f4ed13 100644 --- a/Stack/Opc.Ua.Core/Security/Certificates/CertificateTrustList.cs +++ b/Stack/Opc.Ua.Core/Security/Certificates/CertificateTrustList.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Security/Certificates/CertificateValidator.cs b/Stack/Opc.Ua.Core/Security/Certificates/CertificateValidator.cs index 422e0026b..a23e32eea 100644 --- a/Stack/Opc.Ua.Core/Security/Certificates/CertificateValidator.cs +++ b/Stack/Opc.Ua.Core/Security/Certificates/CertificateValidator.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Security/Certificates/DirectoryCertificateStore.cs b/Stack/Opc.Ua.Core/Security/Certificates/DirectoryCertificateStore.cs index 7d8e67bf3..5a860392d 100644 --- a/Stack/Opc.Ua.Core/Security/Certificates/DirectoryCertificateStore.cs +++ b/Stack/Opc.Ua.Core/Security/Certificates/DirectoryCertificateStore.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Security/Certificates/EncryptedData.cs b/Stack/Opc.Ua.Core/Security/Certificates/EncryptedData.cs index 95071b5a2..0cf67a3b2 100644 --- a/Stack/Opc.Ua.Core/Security/Certificates/EncryptedData.cs +++ b/Stack/Opc.Ua.Core/Security/Certificates/EncryptedData.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Security/Certificates/ICertificateStore.cs b/Stack/Opc.Ua.Core/Security/Certificates/ICertificateStore.cs index 3c7b00035..1d7932109 100644 --- a/Stack/Opc.Ua.Core/Security/Certificates/ICertificateStore.cs +++ b/Stack/Opc.Ua.Core/Security/Certificates/ICertificateStore.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Security/Certificates/ICertificateStoreType.cs b/Stack/Opc.Ua.Core/Security/Certificates/ICertificateStoreType.cs index ad4b3f957..35596884b 100644 --- a/Stack/Opc.Ua.Core/Security/Certificates/ICertificateStoreType.cs +++ b/Stack/Opc.Ua.Core/Security/Certificates/ICertificateStoreType.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Security/Certificates/ICertificateValidator.cs b/Stack/Opc.Ua.Core/Security/Certificates/ICertificateValidator.cs index 7ac52f307..eed735bd2 100644 --- a/Stack/Opc.Ua.Core/Security/Certificates/ICertificateValidator.cs +++ b/Stack/Opc.Ua.Core/Security/Certificates/ICertificateValidator.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Security/Certificates/RsaUtils.cs b/Stack/Opc.Ua.Core/Security/Certificates/RsaUtils.cs index 6a2e2dac3..68fb7d708 100644 --- a/Stack/Opc.Ua.Core/Security/Certificates/RsaUtils.cs +++ b/Stack/Opc.Ua.Core/Security/Certificates/RsaUtils.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Security/Certificates/SecurityConfiguration.cs b/Stack/Opc.Ua.Core/Security/Certificates/SecurityConfiguration.cs index aae11b473..cc0cc34e5 100644 --- a/Stack/Opc.Ua.Core/Security/Certificates/SecurityConfiguration.cs +++ b/Stack/Opc.Ua.Core/Security/Certificates/SecurityConfiguration.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Security/Certificates/X509CertificateStore.cs b/Stack/Opc.Ua.Core/Security/Certificates/X509CertificateStore.cs index 2602f0bd5..735b1b6b9 100644 --- a/Stack/Opc.Ua.Core/Security/Certificates/X509CertificateStore.cs +++ b/Stack/Opc.Ua.Core/Security/Certificates/X509CertificateStore.cs @@ -1,7 +1,7 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ diff --git a/Stack/Opc.Ua.Core/Security/Certificates/X509Utils.cs b/Stack/Opc.Ua.Core/Security/Certificates/X509Utils.cs index d752356fb..1750e29b4 100644 --- a/Stack/Opc.Ua.Core/Security/Certificates/X509Utils.cs +++ b/Stack/Opc.Ua.Core/Security/Certificates/X509Utils.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Security/Constants/SecurityConstants.cs b/Stack/Opc.Ua.Core/Security/Constants/SecurityConstants.cs index dc2d718fd..fe3ba6505 100644 --- a/Stack/Opc.Ua.Core/Security/Constants/SecurityConstants.cs +++ b/Stack/Opc.Ua.Core/Security/Constants/SecurityConstants.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Security/Constants/SecurityPolicies.cs b/Stack/Opc.Ua.Core/Security/Constants/SecurityPolicies.cs index 566fe3d5e..4b673890f 100644 --- a/Stack/Opc.Ua.Core/Security/Constants/SecurityPolicies.cs +++ b/Stack/Opc.Ua.Core/Security/Constants/SecurityPolicies.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Bindings/ArraySegmentStream.cs b/Stack/Opc.Ua.Core/Stack/Bindings/ArraySegmentStream.cs index 5d90cd9f3..52c2aa212 100644 --- a/Stack/Opc.Ua.Core/Stack/Bindings/ArraySegmentStream.cs +++ b/Stack/Opc.Ua.Core/Stack/Bindings/ArraySegmentStream.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Bindings/BaseBinding.cs b/Stack/Opc.Ua.Core/Stack/Bindings/BaseBinding.cs index fbb72e0af..8594827a4 100644 --- a/Stack/Opc.Ua.Core/Stack/Bindings/BaseBinding.cs +++ b/Stack/Opc.Ua.Core/Stack/Bindings/BaseBinding.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Bindings/BufferManager.cs b/Stack/Opc.Ua.Core/Stack/Bindings/BufferManager.cs index ec246e784..840a19fd4 100644 --- a/Stack/Opc.Ua.Core/Stack/Bindings/BufferManager.cs +++ b/Stack/Opc.Ua.Core/Stack/Bindings/BufferManager.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Bindings/ITransportBindings.cs b/Stack/Opc.Ua.Core/Stack/Bindings/ITransportBindings.cs index 917325ed6..9390e5b01 100644 --- a/Stack/Opc.Ua.Core/Stack/Bindings/ITransportBindings.cs +++ b/Stack/Opc.Ua.Core/Stack/Bindings/ITransportBindings.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Bindings/TransportBindings.cs b/Stack/Opc.Ua.Core/Stack/Bindings/TransportBindings.cs index f6955bd6a..36acfb737 100644 --- a/Stack/Opc.Ua.Core/Stack/Bindings/TransportBindings.cs +++ b/Stack/Opc.Ua.Core/Stack/Bindings/TransportBindings.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Bindings/TransportBindingsBase.cs b/Stack/Opc.Ua.Core/Stack/Bindings/TransportBindingsBase.cs index 04157c977..774364f42 100644 --- a/Stack/Opc.Ua.Core/Stack/Bindings/TransportBindingsBase.cs +++ b/Stack/Opc.Ua.Core/Stack/Bindings/TransportBindingsBase.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Client/ClientBase.cs b/Stack/Opc.Ua.Core/Stack/Client/ClientBase.cs index 6261e8666..568ea2c8c 100644 --- a/Stack/Opc.Ua.Core/Stack/Client/ClientBase.cs +++ b/Stack/Opc.Ua.Core/Stack/Client/ClientBase.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Client/DiscoveryClient.cs b/Stack/Opc.Ua.Core/Stack/Client/DiscoveryClient.cs index 9c9483553..dc1eda2ad 100644 --- a/Stack/Opc.Ua.Core/Stack/Client/DiscoveryClient.cs +++ b/Stack/Opc.Ua.Core/Stack/Client/DiscoveryClient.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Client/IChannelBase.cs b/Stack/Opc.Ua.Core/Stack/Client/IChannelBase.cs index aca628bdc..71876a244 100644 --- a/Stack/Opc.Ua.Core/Stack/Client/IChannelBase.cs +++ b/Stack/Opc.Ua.Core/Stack/Client/IChannelBase.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Client/IServiceRequest.cs b/Stack/Opc.Ua.Core/Stack/Client/IServiceRequest.cs index ef684e4ff..794f890eb 100644 --- a/Stack/Opc.Ua.Core/Stack/Client/IServiceRequest.cs +++ b/Stack/Opc.Ua.Core/Stack/Client/IServiceRequest.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Client/IUserIdentity.cs b/Stack/Opc.Ua.Core/Stack/Client/IUserIdentity.cs index 0e0deb6ac..c93013d02 100644 --- a/Stack/Opc.Ua.Core/Stack/Client/IUserIdentity.cs +++ b/Stack/Opc.Ua.Core/Stack/Client/IUserIdentity.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Client/InvokeServiceMessage.cs b/Stack/Opc.Ua.Core/Stack/Client/InvokeServiceMessage.cs index ff5933c1e..4c69c751e 100644 --- a/Stack/Opc.Ua.Core/Stack/Client/InvokeServiceMessage.cs +++ b/Stack/Opc.Ua.Core/Stack/Client/InvokeServiceMessage.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2019 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Client/RegistrationClient.cs b/Stack/Opc.Ua.Core/Stack/Client/RegistrationClient.cs index 1e575b7fe..9278d9fed 100644 --- a/Stack/Opc.Ua.Core/Stack/Client/RegistrationClient.cs +++ b/Stack/Opc.Ua.Core/Stack/Client/RegistrationClient.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Client/ReverseConnectHost.cs b/Stack/Opc.Ua.Core/Stack/Client/ReverseConnectHost.cs index 533a84a64..d820dd31f 100644 --- a/Stack/Opc.Ua.Core/Stack/Client/ReverseConnectHost.cs +++ b/Stack/Opc.Ua.Core/Stack/Client/ReverseConnectHost.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Client/SessionChannel.cs b/Stack/Opc.Ua.Core/Stack/Client/SessionChannel.cs index 1e7f04d1e..9187dbec2 100644 --- a/Stack/Opc.Ua.Core/Stack/Client/SessionChannel.cs +++ b/Stack/Opc.Ua.Core/Stack/Client/SessionChannel.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Client/UaChannelBase.cs b/Stack/Opc.Ua.Core/Stack/Client/UaChannelBase.cs index d1ad384ee..f249b0663 100644 --- a/Stack/Opc.Ua.Core/Stack/Client/UaChannelBase.cs +++ b/Stack/Opc.Ua.Core/Stack/Client/UaChannelBase.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Client/UserIdentity.cs b/Stack/Opc.Ua.Core/Stack/Client/UserIdentity.cs index 4225e53cc..7ee7edc73 100644 --- a/Stack/Opc.Ua.Core/Stack/Client/UserIdentity.cs +++ b/Stack/Opc.Ua.Core/Stack/Client/UserIdentity.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Configuration/ApplicationConfiguration.cs b/Stack/Opc.Ua.Core/Stack/Configuration/ApplicationConfiguration.cs index a94f2dac5..78e8bf0f0 100644 --- a/Stack/Opc.Ua.Core/Stack/Configuration/ApplicationConfiguration.cs +++ b/Stack/Opc.Ua.Core/Stack/Configuration/ApplicationConfiguration.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2021 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Configuration/ConfigurationWatcher.cs b/Stack/Opc.Ua.Core/Stack/Configuration/ConfigurationWatcher.cs index ba58edb65..09e875ecd 100644 --- a/Stack/Opc.Ua.Core/Stack/Configuration/ConfigurationWatcher.cs +++ b/Stack/Opc.Ua.Core/Stack/Configuration/ConfigurationWatcher.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Configuration/ConfiguredEndpoints.cs b/Stack/Opc.Ua.Core/Stack/Configuration/ConfiguredEndpoints.cs index 64f7056ca..ee7032b81 100644 --- a/Stack/Opc.Ua.Core/Stack/Configuration/ConfiguredEndpoints.cs +++ b/Stack/Opc.Ua.Core/Stack/Configuration/ConfiguredEndpoints.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Configuration/EndpointConfiguration.cs b/Stack/Opc.Ua.Core/Stack/Configuration/EndpointConfiguration.cs index b31f793aa..84f01dd4e 100644 --- a/Stack/Opc.Ua.Core/Stack/Configuration/EndpointConfiguration.cs +++ b/Stack/Opc.Ua.Core/Stack/Configuration/EndpointConfiguration.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Configuration/EndpointDescription.cs b/Stack/Opc.Ua.Core/Stack/Configuration/EndpointDescription.cs index ea8e13f64..df5cf4b9e 100644 --- a/Stack/Opc.Ua.Core/Stack/Configuration/EndpointDescription.cs +++ b/Stack/Opc.Ua.Core/Stack/Configuration/EndpointDescription.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Configuration/ISecurityConfigurationManager.cs b/Stack/Opc.Ua.Core/Stack/Configuration/ISecurityConfigurationManager.cs index 3a38bf583..b480becb5 100644 --- a/Stack/Opc.Ua.Core/Stack/Configuration/ISecurityConfigurationManager.cs +++ b/Stack/Opc.Ua.Core/Stack/Configuration/ISecurityConfigurationManager.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Configuration/SecurityConfigurationManager.cs b/Stack/Opc.Ua.Core/Stack/Configuration/SecurityConfigurationManager.cs index 7418dfed0..230791f77 100644 --- a/Stack/Opc.Ua.Core/Stack/Configuration/SecurityConfigurationManager.cs +++ b/Stack/Opc.Ua.Core/Stack/Configuration/SecurityConfigurationManager.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Configuration/ServerProperties.cs b/Stack/Opc.Ua.Core/Stack/Configuration/ServerProperties.cs index 8f819d092..7940ee385 100644 --- a/Stack/Opc.Ua.Core/Stack/Configuration/ServerProperties.cs +++ b/Stack/Opc.Ua.Core/Stack/Configuration/ServerProperties.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Constants/ConditionStateNames.cs b/Stack/Opc.Ua.Core/Stack/Constants/ConditionStateNames.cs index 9a13b3ecf..b2200b926 100644 --- a/Stack/Opc.Ua.Core/Stack/Constants/ConditionStateNames.cs +++ b/Stack/Opc.Ua.Core/Stack/Constants/ConditionStateNames.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Constants/DataTypes.Helpers.cs b/Stack/Opc.Ua.Core/Stack/Constants/DataTypes.Helpers.cs index 532f3785d..4c84279ee 100644 --- a/Stack/Opc.Ua.Core/Stack/Constants/DataTypes.Helpers.cs +++ b/Stack/Opc.Ua.Core/Stack/Constants/DataTypes.Helpers.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Constants/Namespaces.cs b/Stack/Opc.Ua.Core/Stack/Constants/Namespaces.cs index 7ca8ba2eb..477e29f06 100644 --- a/Stack/Opc.Ua.Core/Stack/Constants/Namespaces.cs +++ b/Stack/Opc.Ua.Core/Stack/Constants/Namespaces.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Constants/ReferenceTypes.Helpers.cs b/Stack/Opc.Ua.Core/Stack/Constants/ReferenceTypes.Helpers.cs index 7d903b7da..b08683733 100644 --- a/Stack/Opc.Ua.Core/Stack/Constants/ReferenceTypes.Helpers.cs +++ b/Stack/Opc.Ua.Core/Stack/Constants/ReferenceTypes.Helpers.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Nodes/ContentFilter.cs b/Stack/Opc.Ua.Core/Stack/Nodes/ContentFilter.cs index e13af41e5..87827685b 100644 --- a/Stack/Opc.Ua.Core/Stack/Nodes/ContentFilter.cs +++ b/Stack/Opc.Ua.Core/Stack/Nodes/ContentFilter.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Nodes/IFilterTarget.cs b/Stack/Opc.Ua.Core/Stack/Nodes/IFilterTarget.cs index 9bc3884b7..523f904d8 100644 --- a/Stack/Opc.Ua.Core/Stack/Nodes/IFilterTarget.cs +++ b/Stack/Opc.Ua.Core/Stack/Nodes/IFilterTarget.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Nodes/INode.cs b/Stack/Opc.Ua.Core/Stack/Nodes/INode.cs index c61cd9df1..b12a05f44 100644 --- a/Stack/Opc.Ua.Core/Stack/Nodes/INode.cs +++ b/Stack/Opc.Ua.Core/Stack/Nodes/INode.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Nodes/IOperationContext.cs b/Stack/Opc.Ua.Core/Stack/Nodes/IOperationContext.cs index cca2835fb..5c6a655ea 100644 --- a/Stack/Opc.Ua.Core/Stack/Nodes/IOperationContext.cs +++ b/Stack/Opc.Ua.Core/Stack/Nodes/IOperationContext.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Nodes/Node.cs b/Stack/Opc.Ua.Core/Stack/Nodes/Node.cs index 9e612b359..ee62b1907 100644 --- a/Stack/Opc.Ua.Core/Stack/Nodes/Node.cs +++ b/Stack/Opc.Ua.Core/Stack/Nodes/Node.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Nodes/NodeSet.cs b/Stack/Opc.Ua.Core/Stack/Nodes/NodeSet.cs index 0e508f087..c79ea4745 100644 --- a/Stack/Opc.Ua.Core/Stack/Nodes/NodeSet.cs +++ b/Stack/Opc.Ua.Core/Stack/Nodes/NodeSet.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Nodes/NodeTable.cs b/Stack/Opc.Ua.Core/Stack/Nodes/NodeTable.cs index 9884d9202..71b08c34f 100644 --- a/Stack/Opc.Ua.Core/Stack/Nodes/NodeTable.cs +++ b/Stack/Opc.Ua.Core/Stack/Nodes/NodeTable.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Nodes/ReferenceTable.cs b/Stack/Opc.Ua.Core/Stack/Nodes/ReferenceTable.cs index 0b322851a..36083d869 100644 --- a/Stack/Opc.Ua.Core/Stack/Nodes/ReferenceTable.cs +++ b/Stack/Opc.Ua.Core/Stack/Nodes/ReferenceTable.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Nodes/TypeTable.cs b/Stack/Opc.Ua.Core/Stack/Nodes/TypeTable.cs index e3def2fbb..e5aa6b4ed 100644 --- a/Stack/Opc.Ua.Core/Stack/Nodes/TypeTable.cs +++ b/Stack/Opc.Ua.Core/Stack/Nodes/TypeTable.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Nodes/ViewTable.cs b/Stack/Opc.Ua.Core/Stack/Nodes/ViewTable.cs index 6079d3e34..79999b58b 100644 --- a/Stack/Opc.Ua.Core/Stack/Nodes/ViewTable.cs +++ b/Stack/Opc.Ua.Core/Stack/Nodes/ViewTable.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Server/EndpointBase.cs b/Stack/Opc.Ua.Core/Stack/Server/EndpointBase.cs index 74d2bc227..31560191e 100644 --- a/Stack/Opc.Ua.Core/Stack/Server/EndpointBase.cs +++ b/Stack/Opc.Ua.Core/Stack/Server/EndpointBase.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Server/IEndpointBase.cs b/Stack/Opc.Ua.Core/Stack/Server/IEndpointBase.cs index 707abe865..2f512c259 100644 --- a/Stack/Opc.Ua.Core/Stack/Server/IEndpointBase.cs +++ b/Stack/Opc.Ua.Core/Stack/Server/IEndpointBase.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Server/IServerBase.cs b/Stack/Opc.Ua.Core/Stack/Server/IServerBase.cs index bd7209ec5..f4af40307 100644 --- a/Stack/Opc.Ua.Core/Stack/Server/IServerBase.cs +++ b/Stack/Opc.Ua.Core/Stack/Server/IServerBase.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Server/SecureChannelContext.cs b/Stack/Opc.Ua.Core/Stack/Server/SecureChannelContext.cs index 63d224664..5c6428055 100644 --- a/Stack/Opc.Ua.Core/Stack/Server/SecureChannelContext.cs +++ b/Stack/Opc.Ua.Core/Stack/Server/SecureChannelContext.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Server/ServerBase.cs b/Stack/Opc.Ua.Core/Stack/Server/ServerBase.cs index 822ac15c1..35e50fba1 100644 --- a/Stack/Opc.Ua.Core/Stack/Server/ServerBase.cs +++ b/Stack/Opc.Ua.Core/Stack/Server/ServerBase.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Server/ServiceHost.cs b/Stack/Opc.Ua.Core/Stack/Server/ServiceHost.cs index bac6c2156..cfc672582 100644 --- a/Stack/Opc.Ua.Core/Stack/Server/ServiceHost.cs +++ b/Stack/Opc.Ua.Core/Stack/Server/ServiceHost.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2021 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/AcknowledgeableConditionState.cs b/Stack/Opc.Ua.Core/Stack/State/AcknowledgeableConditionState.cs index 7c314b46d..b0ccc77ae 100644 --- a/Stack/Opc.Ua.Core/Stack/State/AcknowledgeableConditionState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/AcknowledgeableConditionState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/AlarmConditionState.cs b/Stack/Opc.Ua.Core/Stack/State/AlarmConditionState.cs index 32dcf8e82..87fbc804f 100644 --- a/Stack/Opc.Ua.Core/Stack/State/AlarmConditionState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/AlarmConditionState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/AuditEventState.cs b/Stack/Opc.Ua.Core/Stack/State/AuditEventState.cs index d42903792..2386e9296 100644 --- a/Stack/Opc.Ua.Core/Stack/State/AuditEventState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/AuditEventState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/BaseEventState.cs b/Stack/Opc.Ua.Core/Stack/State/BaseEventState.cs index c358cfe0a..4da69f554 100644 --- a/Stack/Opc.Ua.Core/Stack/State/BaseEventState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/BaseEventState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/BaseInstanceState.cs b/Stack/Opc.Ua.Core/Stack/State/BaseInstanceState.cs index 7f86d43d3..a6e7d475a 100644 --- a/Stack/Opc.Ua.Core/Stack/State/BaseInstanceState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/BaseInstanceState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/BaseInstanceStateSnapshot.cs b/Stack/Opc.Ua.Core/Stack/State/BaseInstanceStateSnapshot.cs index a709e8475..0c4eca8f1 100644 --- a/Stack/Opc.Ua.Core/Stack/State/BaseInstanceStateSnapshot.cs +++ b/Stack/Opc.Ua.Core/Stack/State/BaseInstanceStateSnapshot.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/BaseObjectState.cs b/Stack/Opc.Ua.Core/Stack/State/BaseObjectState.cs index 3f456fea8..ac97b4eae 100644 --- a/Stack/Opc.Ua.Core/Stack/State/BaseObjectState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/BaseObjectState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/BaseObjectTypeState.cs b/Stack/Opc.Ua.Core/Stack/State/BaseObjectTypeState.cs index 302d8132c..4e3de144a 100644 --- a/Stack/Opc.Ua.Core/Stack/State/BaseObjectTypeState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/BaseObjectTypeState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/BaseTypeState.cs b/Stack/Opc.Ua.Core/Stack/State/BaseTypeState.cs index 518e161ee..75f2d7216 100644 --- a/Stack/Opc.Ua.Core/Stack/State/BaseTypeState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/BaseTypeState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/BaseVariableState.cs b/Stack/Opc.Ua.Core/Stack/State/BaseVariableState.cs index 3a3e280f4..524165852 100644 --- a/Stack/Opc.Ua.Core/Stack/State/BaseVariableState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/BaseVariableState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/BaseVariableTypeState.cs b/Stack/Opc.Ua.Core/Stack/State/BaseVariableTypeState.cs index 7dc72331a..87454d327 100644 --- a/Stack/Opc.Ua.Core/Stack/State/BaseVariableTypeState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/BaseVariableTypeState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/ConditionState.cs b/Stack/Opc.Ua.Core/Stack/State/ConditionState.cs index a428e54bf..bd3b40503 100644 --- a/Stack/Opc.Ua.Core/Stack/State/ConditionState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/ConditionState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/DataTypeState.cs b/Stack/Opc.Ua.Core/Stack/State/DataTypeState.cs index 08886a6c5..ba23816ac 100644 --- a/Stack/Opc.Ua.Core/Stack/State/DataTypeState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/DataTypeState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/DialogConditionState.cs b/Stack/Opc.Ua.Core/Stack/State/DialogConditionState.cs index bdfd5c249..908964ff3 100644 --- a/Stack/Opc.Ua.Core/Stack/State/DialogConditionState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/DialogConditionState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/ExclusiveLimitAlarmState.cs b/Stack/Opc.Ua.Core/Stack/State/ExclusiveLimitAlarmState.cs index 02502fd6c..7352be2a9 100644 --- a/Stack/Opc.Ua.Core/Stack/State/ExclusiveLimitAlarmState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/ExclusiveLimitAlarmState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/ExclusiveLimitStateMachineState.cs b/Stack/Opc.Ua.Core/Stack/State/ExclusiveLimitStateMachineState.cs index 9c7318b24..011490b0d 100644 --- a/Stack/Opc.Ua.Core/Stack/State/ExclusiveLimitStateMachineState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/ExclusiveLimitStateMachineState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/FiniteStateMachineState.cs b/Stack/Opc.Ua.Core/Stack/State/FiniteStateMachineState.cs index 2ec037b33..9e46227a6 100644 --- a/Stack/Opc.Ua.Core/Stack/State/FiniteStateMachineState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/FiniteStateMachineState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/ISystemContext.cs b/Stack/Opc.Ua.Core/Stack/State/ISystemContext.cs index fed032b91..8dbe289cf 100644 --- a/Stack/Opc.Ua.Core/Stack/State/ISystemContext.cs +++ b/Stack/Opc.Ua.Core/Stack/State/ISystemContext.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/LimitAlarmState.cs b/Stack/Opc.Ua.Core/Stack/State/LimitAlarmState.cs index d2bcdd7a5..72cb72e1a 100644 --- a/Stack/Opc.Ua.Core/Stack/State/LimitAlarmState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/LimitAlarmState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/MethodState.cs b/Stack/Opc.Ua.Core/Stack/State/MethodState.cs index 329d5147b..899154dc1 100644 --- a/Stack/Opc.Ua.Core/Stack/State/MethodState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/MethodState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/ModelCompilerExtension.cs b/Stack/Opc.Ua.Core/Stack/State/ModelCompilerExtension.cs index 33c53b348..0cfdd0c34 100644 --- a/Stack/Opc.Ua.Core/Stack/State/ModelCompilerExtension.cs +++ b/Stack/Opc.Ua.Core/Stack/State/ModelCompilerExtension.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/NodeBrowser.cs b/Stack/Opc.Ua.Core/Stack/State/NodeBrowser.cs index d9434a2f2..3b0c8c1a3 100644 --- a/Stack/Opc.Ua.Core/Stack/State/NodeBrowser.cs +++ b/Stack/Opc.Ua.Core/Stack/State/NodeBrowser.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/NodeState.cs b/Stack/Opc.Ua.Core/Stack/State/NodeState.cs index ea7dc58b2..334da8e4e 100644 --- a/Stack/Opc.Ua.Core/Stack/State/NodeState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/NodeState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/NodeStateCollection.cs b/Stack/Opc.Ua.Core/Stack/State/NodeStateCollection.cs index e60e5bc32..b7778d692 100644 --- a/Stack/Opc.Ua.Core/Stack/State/NodeStateCollection.cs +++ b/Stack/Opc.Ua.Core/Stack/State/NodeStateCollection.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/NonExclusiveLimitAlarmState.cs b/Stack/Opc.Ua.Core/Stack/State/NonExclusiveLimitAlarmState.cs index 30042f8e2..56c2da629 100644 --- a/Stack/Opc.Ua.Core/Stack/State/NonExclusiveLimitAlarmState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/NonExclusiveLimitAlarmState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/ProgramStateMachineState.cs b/Stack/Opc.Ua.Core/Stack/State/ProgramStateMachineState.cs index e217fe59e..969582c28 100644 --- a/Stack/Opc.Ua.Core/Stack/State/ProgramStateMachineState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/ProgramStateMachineState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/ReferenceTypeState.cs b/Stack/Opc.Ua.Core/Stack/State/ReferenceTypeState.cs index 002f9b943..7d1623011 100644 --- a/Stack/Opc.Ua.Core/Stack/State/ReferenceTypeState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/ReferenceTypeState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/ShelvedStateMachineState.cs b/Stack/Opc.Ua.Core/Stack/State/ShelvedStateMachineState.cs index 91a597d20..0d2501ac9 100644 --- a/Stack/Opc.Ua.Core/Stack/State/ShelvedStateMachineState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/ShelvedStateMachineState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/State/ViewState.cs b/Stack/Opc.Ua.Core/Stack/State/ViewState.cs index ff2bfa3c7..e0100ada5 100644 --- a/Stack/Opc.Ua.Core/Stack/State/ViewState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/ViewState.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/ChannelAsyncOperation.cs b/Stack/Opc.Ua.Core/Stack/Tcp/ChannelAsyncOperation.cs index 3e06d513e..5ddb1a1a5 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/ChannelAsyncOperation.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/ChannelAsyncOperation.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/ChannelQuotas.cs b/Stack/Opc.Ua.Core/Stack/Tcp/ChannelQuotas.cs index 53646d068..8e72bb147 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/ChannelQuotas.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/ChannelQuotas.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/ChannelToken.cs b/Stack/Opc.Ua.Core/Stack/Tcp/ChannelToken.cs index a4d328e39..1cdb5b4f7 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/ChannelToken.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/ChannelToken.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/ITcpChannelListener.cs b/Stack/Opc.Ua.Core/Stack/Tcp/ITcpChannelListener.cs index 56dba3d7c..159404ce5 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/ITcpChannelListener.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/ITcpChannelListener.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/TcpListenerChannel.cs b/Stack/Opc.Ua.Core/Stack/Tcp/TcpListenerChannel.cs index 7dbe36c73..af148e4b0 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/TcpListenerChannel.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/TcpListenerChannel.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/TcpMessageSocket.cs b/Stack/Opc.Ua.Core/Stack/Tcp/TcpMessageSocket.cs index e047c4799..a4c041615 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/TcpMessageSocket.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/TcpMessageSocket.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/TcpMessageType.cs b/Stack/Opc.Ua.Core/Stack/Tcp/TcpMessageType.cs index bf73e4147..6a93146da 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/TcpMessageType.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/TcpMessageType.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/TcpReverseConnectChannel.cs b/Stack/Opc.Ua.Core/Stack/Tcp/TcpReverseConnectChannel.cs index 0fa157f1f..75e85cdb4 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/TcpReverseConnectChannel.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/TcpReverseConnectChannel.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/TcpServerChannel.cs b/Stack/Opc.Ua.Core/Stack/Tcp/TcpServerChannel.cs index 313d2042d..f95289137 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/TcpServerChannel.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/TcpServerChannel.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/TcpServiceHost.cs b/Stack/Opc.Ua.Core/Stack/Tcp/TcpServiceHost.cs index 3f3d50d5d..83ed57add 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/TcpServiceHost.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/TcpServiceHost.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/TcpTransportListener.cs b/Stack/Opc.Ua.Core/Stack/Tcp/TcpTransportListener.cs index f7334302e..4277a6526 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/TcpTransportListener.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/TcpTransportListener.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryChannel.Asymmetric.cs b/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryChannel.Asymmetric.cs index cfe126be9..953dfd650 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryChannel.Asymmetric.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryChannel.Asymmetric.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryChannel.Rsa.cs b/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryChannel.Rsa.cs index f0983c67f..f609a5231 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryChannel.Rsa.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryChannel.Rsa.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryChannel.Symmetric.cs b/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryChannel.Symmetric.cs index 19d271950..b7dc3f1c8 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryChannel.Symmetric.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryChannel.Symmetric.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryChannel.cs b/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryChannel.cs index 4e1fd12eb..faa15d185 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryChannel.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryChannel.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryClientChannel.cs b/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryClientChannel.cs index 4eb4fd002..b080f76bf 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryClientChannel.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryClientChannel.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryTransportChannel.cs b/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryTransportChannel.cs index 21dc6af6e..8ae631b4b 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryTransportChannel.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/UaSCBinaryTransportChannel.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Transport/AsyncResultBase.cs b/Stack/Opc.Ua.Core/Stack/Transport/AsyncResultBase.cs index bb9d65369..1e7fd907d 100644 --- a/Stack/Opc.Ua.Core/Stack/Transport/AsyncResultBase.cs +++ b/Stack/Opc.Ua.Core/Stack/Transport/AsyncResultBase.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Transport/ConnectionEvents.cs b/Stack/Opc.Ua.Core/Stack/Transport/ConnectionEvents.cs index 44b7c21b0..1f607cf9e 100644 --- a/Stack/Opc.Ua.Core/Stack/Transport/ConnectionEvents.cs +++ b/Stack/Opc.Ua.Core/Stack/Transport/ConnectionEvents.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Transport/IMessageSocket.cs b/Stack/Opc.Ua.Core/Stack/Transport/IMessageSocket.cs index 189642adf..e8f314740 100644 --- a/Stack/Opc.Ua.Core/Stack/Transport/IMessageSocket.cs +++ b/Stack/Opc.Ua.Core/Stack/Transport/IMessageSocket.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Transport/ITransportChannel.cs b/Stack/Opc.Ua.Core/Stack/Transport/ITransportChannel.cs index 3f20c0e33..9b2155028 100644 --- a/Stack/Opc.Ua.Core/Stack/Transport/ITransportChannel.cs +++ b/Stack/Opc.Ua.Core/Stack/Transport/ITransportChannel.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Transport/ITransportListener.cs b/Stack/Opc.Ua.Core/Stack/Transport/ITransportListener.cs index 5145a1844..29a242dc7 100644 --- a/Stack/Opc.Ua.Core/Stack/Transport/ITransportListener.cs +++ b/Stack/Opc.Ua.Core/Stack/Transport/ITransportListener.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Transport/ITransportListenerCallback.cs b/Stack/Opc.Ua.Core/Stack/Transport/ITransportListenerCallback.cs index 116ffe5ec..818992323 100644 --- a/Stack/Opc.Ua.Core/Stack/Transport/ITransportListenerCallback.cs +++ b/Stack/Opc.Ua.Core/Stack/Transport/ITransportListenerCallback.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Transport/TransportChannelSettings.cs b/Stack/Opc.Ua.Core/Stack/Transport/TransportChannelSettings.cs index 5683752f1..40388ccaa 100644 --- a/Stack/Opc.Ua.Core/Stack/Transport/TransportChannelSettings.cs +++ b/Stack/Opc.Ua.Core/Stack/Transport/TransportChannelSettings.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Transport/TransportListenerSettings.cs b/Stack/Opc.Ua.Core/Stack/Transport/TransportListenerSettings.cs index ef21a0775..40d90f43f 100644 --- a/Stack/Opc.Ua.Core/Stack/Transport/TransportListenerSettings.cs +++ b/Stack/Opc.Ua.Core/Stack/Transport/TransportListenerSettings.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/Argument.cs b/Stack/Opc.Ua.Core/Stack/Types/Argument.cs index 11a883ac1..25bc46693 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/Argument.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/Argument.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/BrowseDescription.cs b/Stack/Opc.Ua.Core/Stack/Types/BrowseDescription.cs index bc40cac9b..ae48a546a 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/BrowseDescription.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/BrowseDescription.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/BrowsePath.cs b/Stack/Opc.Ua.Core/Stack/Types/BrowsePath.cs index 10459efaa..5575082a9 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/BrowsePath.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/BrowsePath.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/CallMethodRequest.cs b/Stack/Opc.Ua.Core/Stack/Types/CallMethodRequest.cs index 183f4e52e..7da8d64f1 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/CallMethodRequest.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/CallMethodRequest.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/ContentFilter.Evaluate.cs b/Stack/Opc.Ua.Core/Stack/Types/ContentFilter.Evaluate.cs index 7ce372d73..d54b2b64f 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/ContentFilter.Evaluate.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/ContentFilter.Evaluate.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/EUInformation.cs b/Stack/Opc.Ua.Core/Stack/Types/EUInformation.cs index e59fa6f5c..84d73b238 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/EUInformation.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/EUInformation.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/EventFieldList.cs b/Stack/Opc.Ua.Core/Stack/Types/EventFieldList.cs index 2b91a4e10..405047b26 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/EventFieldList.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/EventFieldList.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/HistoryReadValueId.cs b/Stack/Opc.Ua.Core/Stack/Types/HistoryReadValueId.cs index d5152063d..d6f853647 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/HistoryReadValueId.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/HistoryReadValueId.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/HistoryUpdateDetails.cs b/Stack/Opc.Ua.Core/Stack/Types/HistoryUpdateDetails.cs index 5919f1ae6..493e9a0fd 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/HistoryUpdateDetails.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/HistoryUpdateDetails.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/MonitoredItemCreateRequest.cs b/Stack/Opc.Ua.Core/Stack/Types/MonitoredItemCreateRequest.cs index 2cd37a7ee..7b68e9908 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/MonitoredItemCreateRequest.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/MonitoredItemCreateRequest.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/MonitoredItemCreateResult.cs b/Stack/Opc.Ua.Core/Stack/Types/MonitoredItemCreateResult.cs index 528f67afd..b2fd52b16 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/MonitoredItemCreateResult.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/MonitoredItemCreateResult.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/MonitoredItemModifyRequest.cs b/Stack/Opc.Ua.Core/Stack/Types/MonitoredItemModifyRequest.cs index 167d9a1f3..7c0e2db11 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/MonitoredItemModifyRequest.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/MonitoredItemModifyRequest.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/MonitoredItemNotification.cs b/Stack/Opc.Ua.Core/Stack/Types/MonitoredItemNotification.cs index bb4ecf597..0b86b7ed9 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/MonitoredItemNotification.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/MonitoredItemNotification.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/MonitoringFilter.cs b/Stack/Opc.Ua.Core/Stack/Types/MonitoringFilter.cs index 623d3b10e..fb5ba2fb1 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/MonitoringFilter.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/MonitoringFilter.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/NotificationMessage.cs b/Stack/Opc.Ua.Core/Stack/Types/NotificationMessage.cs index f2fe8be45..fcc71ac43 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/NotificationMessage.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/NotificationMessage.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/QueryDataSet.cs b/Stack/Opc.Ua.Core/Stack/Types/QueryDataSet.cs index 8e6c9a577..d324299d2 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/QueryDataSet.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/QueryDataSet.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/Range.cs b/Stack/Opc.Ua.Core/Stack/Types/Range.cs index eed1932e5..b4f97a0fd 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/Range.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/Range.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/ReadValueId.cs b/Stack/Opc.Ua.Core/Stack/Types/ReadValueId.cs index d7fb51ce5..e3d8d785f 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/ReadValueId.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/ReadValueId.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/ReferenceDescription.cs b/Stack/Opc.Ua.Core/Stack/Types/ReferenceDescription.cs index c2ddd635b..79998499d 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/ReferenceDescription.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/ReferenceDescription.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/ServiceFault.cs b/Stack/Opc.Ua.Core/Stack/Types/ServiceFault.cs index 67c28ad3a..253f6ac63 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/ServiceFault.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/ServiceFault.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/SoftwareCertficate.cs b/Stack/Opc.Ua.Core/Stack/Types/SoftwareCertficate.cs index e0a37d33b..1310d2dbe 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/SoftwareCertficate.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/SoftwareCertficate.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/StatusResult.cs b/Stack/Opc.Ua.Core/Stack/Types/StatusResult.cs index b0cb509b9..1ad50c3d8 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/StatusResult.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/StatusResult.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/StructureDefinition.cs b/Stack/Opc.Ua.Core/Stack/Types/StructureDefinition.cs index 28aafe9c2..c6e4c421d 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/StructureDefinition.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/StructureDefinition.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/UserIdentityToken.cs b/Stack/Opc.Ua.Core/Stack/Types/UserIdentityToken.cs index 458d1c157..cb2409e30 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/UserIdentityToken.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/UserIdentityToken.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/UserTokenPolicy.cs b/Stack/Opc.Ua.Core/Stack/Types/UserTokenPolicy.cs index 972de6d03..bfee23770 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/UserTokenPolicy.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/UserTokenPolicy.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/VariableAttributes.cs b/Stack/Opc.Ua.Core/Stack/Types/VariableAttributes.cs index 49dad8f64..f093e8b23 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/VariableAttributes.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/VariableAttributes.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/ViewDescription.cs b/Stack/Opc.Ua.Core/Stack/Types/ViewDescription.cs index 019700c24..9a657fe06 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/ViewDescription.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/ViewDescription.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Stack/Types/WriteValue.cs b/Stack/Opc.Ua.Core/Stack/Types/WriteValue.cs index 2a52aaa43..186a33a5c 100644 --- a/Stack/Opc.Ua.Core/Stack/Types/WriteValue.cs +++ b/Stack/Opc.Ua.Core/Stack/Types/WriteValue.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/BuiltIn/AttributeValues.cs b/Stack/Opc.Ua.Core/Types/BuiltIn/AttributeValues.cs index 819d5cd41..07159737a 100644 --- a/Stack/Opc.Ua.Core/Types/BuiltIn/AttributeValues.cs +++ b/Stack/Opc.Ua.Core/Types/BuiltIn/AttributeValues.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/BuiltIn/BuiltInTypeCollections.cs b/Stack/Opc.Ua.Core/Types/BuiltIn/BuiltInTypeCollections.cs index d94f82632..4857d3a8d 100644 --- a/Stack/Opc.Ua.Core/Types/BuiltIn/BuiltInTypeCollections.cs +++ b/Stack/Opc.Ua.Core/Types/BuiltIn/BuiltInTypeCollections.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/BuiltIn/DataValue.cs b/Stack/Opc.Ua.Core/Types/BuiltIn/DataValue.cs index 411d60165..3d511d0eb 100644 --- a/Stack/Opc.Ua.Core/Types/BuiltIn/DataValue.cs +++ b/Stack/Opc.Ua.Core/Types/BuiltIn/DataValue.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/BuiltIn/DiagnosticInfo.cs b/Stack/Opc.Ua.Core/Types/BuiltIn/DiagnosticInfo.cs index 0f718b1c5..f7b9a4b80 100644 --- a/Stack/Opc.Ua.Core/Types/BuiltIn/DiagnosticInfo.cs +++ b/Stack/Opc.Ua.Core/Types/BuiltIn/DiagnosticInfo.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/BuiltIn/DiagnosticMasks.cs b/Stack/Opc.Ua.Core/Types/BuiltIn/DiagnosticMasks.cs index 37fc1eac7..605bfdc4e 100644 --- a/Stack/Opc.Ua.Core/Types/BuiltIn/DiagnosticMasks.cs +++ b/Stack/Opc.Ua.Core/Types/BuiltIn/DiagnosticMasks.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/BuiltIn/ExpandedNodeId.cs b/Stack/Opc.Ua.Core/Types/BuiltIn/ExpandedNodeId.cs index 64092b7c2..7505f3379 100644 --- a/Stack/Opc.Ua.Core/Types/BuiltIn/ExpandedNodeId.cs +++ b/Stack/Opc.Ua.Core/Types/BuiltIn/ExpandedNodeId.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/BuiltIn/ExtensionObject.cs b/Stack/Opc.Ua.Core/Types/BuiltIn/ExtensionObject.cs index 57ac24a1b..027291802 100644 --- a/Stack/Opc.Ua.Core/Types/BuiltIn/ExtensionObject.cs +++ b/Stack/Opc.Ua.Core/Types/BuiltIn/ExtensionObject.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/BuiltIn/ITranslatableObject.cs b/Stack/Opc.Ua.Core/Types/BuiltIn/ITranslatableObject.cs index 8e22b6af3..f4e54f590 100644 --- a/Stack/Opc.Ua.Core/Types/BuiltIn/ITranslatableObject.cs +++ b/Stack/Opc.Ua.Core/Types/BuiltIn/ITranslatableObject.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/BuiltIn/ITypeTable.cs b/Stack/Opc.Ua.Core/Types/BuiltIn/ITypeTable.cs index 09ce15b56..a6b2a6318 100644 --- a/Stack/Opc.Ua.Core/Types/BuiltIn/ITypeTable.cs +++ b/Stack/Opc.Ua.Core/Types/BuiltIn/ITypeTable.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/BuiltIn/LocalizedText.cs b/Stack/Opc.Ua.Core/Types/BuiltIn/LocalizedText.cs index 4d3201e31..0123d5680 100644 --- a/Stack/Opc.Ua.Core/Types/BuiltIn/LocalizedText.cs +++ b/Stack/Opc.Ua.Core/Types/BuiltIn/LocalizedText.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/BuiltIn/MessageContextExtension.cs b/Stack/Opc.Ua.Core/Types/BuiltIn/MessageContextExtension.cs index fb75f9f54..6b96d48e4 100644 --- a/Stack/Opc.Ua.Core/Types/BuiltIn/MessageContextExtension.cs +++ b/Stack/Opc.Ua.Core/Types/BuiltIn/MessageContextExtension.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2019 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/BuiltIn/NodeId.cs b/Stack/Opc.Ua.Core/Types/BuiltIn/NodeId.cs index 0532f614b..6586a72ce 100644 --- a/Stack/Opc.Ua.Core/Types/BuiltIn/NodeId.cs +++ b/Stack/Opc.Ua.Core/Types/BuiltIn/NodeId.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/BuiltIn/QualifiedName.cs b/Stack/Opc.Ua.Core/Types/BuiltIn/QualifiedName.cs index f9bdc59d1..2f3a78b9f 100644 --- a/Stack/Opc.Ua.Core/Types/BuiltIn/QualifiedName.cs +++ b/Stack/Opc.Ua.Core/Types/BuiltIn/QualifiedName.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/BuiltIn/SessionLessServiceMessage.cs b/Stack/Opc.Ua.Core/Types/BuiltIn/SessionLessServiceMessage.cs index 93fe3a8d3..23ad9e435 100644 --- a/Stack/Opc.Ua.Core/Types/BuiltIn/SessionLessServiceMessage.cs +++ b/Stack/Opc.Ua.Core/Types/BuiltIn/SessionLessServiceMessage.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/BuiltIn/StatusCode.cs b/Stack/Opc.Ua.Core/Types/BuiltIn/StatusCode.cs index 4df818835..bca7e6ff2 100644 --- a/Stack/Opc.Ua.Core/Types/BuiltIn/StatusCode.cs +++ b/Stack/Opc.Ua.Core/Types/BuiltIn/StatusCode.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/BuiltIn/Uuid.cs b/Stack/Opc.Ua.Core/Types/BuiltIn/Uuid.cs index 2be99e798..e5d6a1667 100644 --- a/Stack/Opc.Ua.Core/Types/BuiltIn/Uuid.cs +++ b/Stack/Opc.Ua.Core/Types/BuiltIn/Uuid.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/BuiltIn/Variant.cs b/Stack/Opc.Ua.Core/Types/BuiltIn/Variant.cs index 2aa329e3d..0611c22a0 100644 --- a/Stack/Opc.Ua.Core/Types/BuiltIn/Variant.cs +++ b/Stack/Opc.Ua.Core/Types/BuiltIn/Variant.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Constants/Attributes.Helpers.cs b/Stack/Opc.Ua.Core/Types/Constants/Attributes.Helpers.cs index 8654364aa..49329ceb7 100644 --- a/Stack/Opc.Ua.Core/Types/Constants/Attributes.Helpers.cs +++ b/Stack/Opc.Ua.Core/Types/Constants/Attributes.Helpers.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Constants/StatusCodes.Helpers.cs b/Stack/Opc.Ua.Core/Types/Constants/StatusCodes.Helpers.cs index a4259238e..2744765b6 100644 --- a/Stack/Opc.Ua.Core/Types/Constants/StatusCodes.Helpers.cs +++ b/Stack/Opc.Ua.Core/Types/Constants/StatusCodes.Helpers.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Encoders/BinaryDecoder.cs b/Stack/Opc.Ua.Core/Types/Encoders/BinaryDecoder.cs index 8d26f2c85..55bfad373 100644 --- a/Stack/Opc.Ua.Core/Types/Encoders/BinaryDecoder.cs +++ b/Stack/Opc.Ua.Core/Types/Encoders/BinaryDecoder.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Encoders/BinaryEncoder.cs b/Stack/Opc.Ua.Core/Types/Encoders/BinaryEncoder.cs index 4012200a3..c90fd9332 100644 --- a/Stack/Opc.Ua.Core/Types/Encoders/BinaryEncoder.cs +++ b/Stack/Opc.Ua.Core/Types/Encoders/BinaryEncoder.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Encoders/EncodableObject.cs b/Stack/Opc.Ua.Core/Types/Encoders/EncodableObject.cs index 85fbee30d..ce55fd170 100644 --- a/Stack/Opc.Ua.Core/Types/Encoders/EncodableObject.cs +++ b/Stack/Opc.Ua.Core/Types/Encoders/EncodableObject.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Encoders/EncodeableFactory.cs b/Stack/Opc.Ua.Core/Types/Encoders/EncodeableFactory.cs index fdac66b69..9e88985bb 100644 --- a/Stack/Opc.Ua.Core/Types/Encoders/EncodeableFactory.cs +++ b/Stack/Opc.Ua.Core/Types/Encoders/EncodeableFactory.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Encoders/IComplexTypeInstance.cs b/Stack/Opc.Ua.Core/Types/Encoders/IComplexTypeInstance.cs index 1dd8150f7..5d73d2ee8 100644 --- a/Stack/Opc.Ua.Core/Types/Encoders/IComplexTypeInstance.cs +++ b/Stack/Opc.Ua.Core/Types/Encoders/IComplexTypeInstance.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Encoders/IDecoder.cs b/Stack/Opc.Ua.Core/Types/Encoders/IDecoder.cs index 307d2838c..3726975a5 100644 --- a/Stack/Opc.Ua.Core/Types/Encoders/IDecoder.cs +++ b/Stack/Opc.Ua.Core/Types/Encoders/IDecoder.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Encoders/IEncodable.cs b/Stack/Opc.Ua.Core/Types/Encoders/IEncodable.cs index dbe0a47aa..fb22d8987 100644 --- a/Stack/Opc.Ua.Core/Types/Encoders/IEncodable.cs +++ b/Stack/Opc.Ua.Core/Types/Encoders/IEncodable.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Encoders/IEncodeableFactory.cs b/Stack/Opc.Ua.Core/Types/Encoders/IEncodeableFactory.cs index e1c6096d1..66803dd11 100644 --- a/Stack/Opc.Ua.Core/Types/Encoders/IEncodeableFactory.cs +++ b/Stack/Opc.Ua.Core/Types/Encoders/IEncodeableFactory.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Encoders/IEncoder.cs b/Stack/Opc.Ua.Core/Types/Encoders/IEncoder.cs index 46ccfa396..cd298f380 100644 --- a/Stack/Opc.Ua.Core/Types/Encoders/IEncoder.cs +++ b/Stack/Opc.Ua.Core/Types/Encoders/IEncoder.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Encoders/IStructureTypeInfo.cs b/Stack/Opc.Ua.Core/Types/Encoders/IStructureTypeInfo.cs index e10364c60..01342fb69 100644 --- a/Stack/Opc.Ua.Core/Types/Encoders/IStructureTypeInfo.cs +++ b/Stack/Opc.Ua.Core/Types/Encoders/IStructureTypeInfo.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Encoders/JsonDecoder.cs b/Stack/Opc.Ua.Core/Types/Encoders/JsonDecoder.cs index a38bf1847..39012050d 100644 --- a/Stack/Opc.Ua.Core/Types/Encoders/JsonDecoder.cs +++ b/Stack/Opc.Ua.Core/Types/Encoders/JsonDecoder.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Encoders/JsonEncoder.cs b/Stack/Opc.Ua.Core/Types/Encoders/JsonEncoder.cs index 7ef86d7dc..883651ada 100644 --- a/Stack/Opc.Ua.Core/Types/Encoders/JsonEncoder.cs +++ b/Stack/Opc.Ua.Core/Types/Encoders/JsonEncoder.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Encoders/XmlDecoder.cs b/Stack/Opc.Ua.Core/Types/Encoders/XmlDecoder.cs index 6d0c2df3c..ee929302a 100644 --- a/Stack/Opc.Ua.Core/Types/Encoders/XmlDecoder.cs +++ b/Stack/Opc.Ua.Core/Types/Encoders/XmlDecoder.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Encoders/XmlEncoder.cs b/Stack/Opc.Ua.Core/Types/Encoders/XmlEncoder.cs index 888375ec2..0e00d6eb1 100644 --- a/Stack/Opc.Ua.Core/Types/Encoders/XmlEncoder.cs +++ b/Stack/Opc.Ua.Core/Types/Encoders/XmlEncoder.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Schemas/BinarySchema.cs b/Stack/Opc.Ua.Core/Types/Schemas/BinarySchema.cs index 0df8fd67d..4f5325587 100644 --- a/Stack/Opc.Ua.Core/Types/Schemas/BinarySchema.cs +++ b/Stack/Opc.Ua.Core/Types/Schemas/BinarySchema.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Schemas/BinarySchemaValidator.cs b/Stack/Opc.Ua.Core/Types/Schemas/BinarySchemaValidator.cs index 390af4816..a4bf5f131 100644 --- a/Stack/Opc.Ua.Core/Types/Schemas/BinarySchemaValidator.cs +++ b/Stack/Opc.Ua.Core/Types/Schemas/BinarySchemaValidator.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Schemas/OPCBinarySchema.cs b/Stack/Opc.Ua.Core/Types/Schemas/OPCBinarySchema.cs index 65043e9fd..edbc46acd 100644 --- a/Stack/Opc.Ua.Core/Types/Schemas/OPCBinarySchema.cs +++ b/Stack/Opc.Ua.Core/Types/Schemas/OPCBinarySchema.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Schemas/SchemaValidator.cs b/Stack/Opc.Ua.Core/Types/Schemas/SchemaValidator.cs index 78be7c4a0..7e939ea53 100644 --- a/Stack/Opc.Ua.Core/Types/Schemas/SchemaValidator.cs +++ b/Stack/Opc.Ua.Core/Types/Schemas/SchemaValidator.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Schemas/XmlSchemaValidator.cs b/Stack/Opc.Ua.Core/Types/Schemas/XmlSchemaValidator.cs index 9637ef5b1..1a2e3f7c2 100644 --- a/Stack/Opc.Ua.Core/Types/Schemas/XmlSchemaValidator.cs +++ b/Stack/Opc.Ua.Core/Types/Schemas/XmlSchemaValidator.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2021 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Utils/DataComparer.cs b/Stack/Opc.Ua.Core/Types/Utils/DataComparer.cs index 74c6147fa..fc57518c9 100644 --- a/Stack/Opc.Ua.Core/Types/Utils/DataComparer.cs +++ b/Stack/Opc.Ua.Core/Types/Utils/DataComparer.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Utils/DataGenerator.cs b/Stack/Opc.Ua.Core/Types/Utils/DataGenerator.cs index 660c1f462..0a5ef31c7 100644 --- a/Stack/Opc.Ua.Core/Types/Utils/DataGenerator.cs +++ b/Stack/Opc.Ua.Core/Types/Utils/DataGenerator.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Utils/HiResClock.cs b/Stack/Opc.Ua.Core/Types/Utils/HiResClock.cs index 92d882cc7..992f700db 100644 --- a/Stack/Opc.Ua.Core/Types/Utils/HiResClock.cs +++ b/Stack/Opc.Ua.Core/Types/Utils/HiResClock.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Utils/IServiceMessageContext.cs b/Stack/Opc.Ua.Core/Types/Utils/IServiceMessageContext.cs index 838b7919f..9964391ec 100644 --- a/Stack/Opc.Ua.Core/Types/Utils/IServiceMessageContext.cs +++ b/Stack/Opc.Ua.Core/Types/Utils/IServiceMessageContext.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Utils/NamespaceTable.cs b/Stack/Opc.Ua.Core/Types/Utils/NamespaceTable.cs index 6ebbaa863..3cd970662 100644 --- a/Stack/Opc.Ua.Core/Types/Utils/NamespaceTable.cs +++ b/Stack/Opc.Ua.Core/Types/Utils/NamespaceTable.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Utils/NumericRange.cs b/Stack/Opc.Ua.Core/Types/Utils/NumericRange.cs index 3877b6902..16ed6701f 100644 --- a/Stack/Opc.Ua.Core/Types/Utils/NumericRange.cs +++ b/Stack/Opc.Ua.Core/Types/Utils/NumericRange.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Utils/OpcUaCoreEventSource.cs b/Stack/Opc.Ua.Core/Types/Utils/OpcUaCoreEventSource.cs index 0ae0fc42f..75222c336 100644 --- a/Stack/Opc.Ua.Core/Types/Utils/OpcUaCoreEventSource.cs +++ b/Stack/Opc.Ua.Core/Types/Utils/OpcUaCoreEventSource.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2021 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Utils/ReadOnlyList.cs b/Stack/Opc.Ua.Core/Types/Utils/ReadOnlyList.cs index aee6047e1..23621ad90 100644 --- a/Stack/Opc.Ua.Core/Types/Utils/ReadOnlyList.cs +++ b/Stack/Opc.Ua.Core/Types/Utils/ReadOnlyList.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Utils/RelativePath.cs b/Stack/Opc.Ua.Core/Types/Utils/RelativePath.cs index 87e51360b..939894158 100644 --- a/Stack/Opc.Ua.Core/Types/Utils/RelativePath.cs +++ b/Stack/Opc.Ua.Core/Types/Utils/RelativePath.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Utils/ServiceMessageContext.cs b/Stack/Opc.Ua.Core/Types/Utils/ServiceMessageContext.cs index c937ac879..ea71202d3 100644 --- a/Stack/Opc.Ua.Core/Types/Utils/ServiceMessageContext.cs +++ b/Stack/Opc.Ua.Core/Types/Utils/ServiceMessageContext.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Utils/ServiceResult.cs b/Stack/Opc.Ua.Core/Types/Utils/ServiceResult.cs index 5cc4cf7be..fe03fa187 100644 --- a/Stack/Opc.Ua.Core/Types/Utils/ServiceResult.cs +++ b/Stack/Opc.Ua.Core/Types/Utils/ServiceResult.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Utils/ServiceResultException.cs b/Stack/Opc.Ua.Core/Types/Utils/ServiceResultException.cs index 1eab16afe..5202419e9 100644 --- a/Stack/Opc.Ua.Core/Types/Utils/ServiceResultException.cs +++ b/Stack/Opc.Ua.Core/Types/Utils/ServiceResultException.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Utils/TraceEventArgs.cs b/Stack/Opc.Ua.Core/Types/Utils/TraceEventArgs.cs index ced32023a..b34b10d90 100644 --- a/Stack/Opc.Ua.Core/Types/Utils/TraceEventArgs.cs +++ b/Stack/Opc.Ua.Core/Types/Utils/TraceEventArgs.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2021 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Utils/TraceEventLogger.cs b/Stack/Opc.Ua.Core/Types/Utils/TraceEventLogger.cs index b092d519e..309e5275e 100644 --- a/Stack/Opc.Ua.Core/Types/Utils/TraceEventLogger.cs +++ b/Stack/Opc.Ua.Core/Types/Utils/TraceEventLogger.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2021 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Utils/Tracing.cs b/Stack/Opc.Ua.Core/Types/Utils/Tracing.cs index 4138f7e2a..92bc96733 100644 --- a/Stack/Opc.Ua.Core/Types/Utils/Tracing.cs +++ b/Stack/Opc.Ua.Core/Types/Utils/Tracing.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2021 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Utils/TypeInfo.cs b/Stack/Opc.Ua.Core/Types/Utils/TypeInfo.cs index 39e65174c..cbde3a7bc 100644 --- a/Stack/Opc.Ua.Core/Types/Utils/TypeInfo.cs +++ b/Stack/Opc.Ua.Core/Types/Utils/TypeInfo.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2020 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; diff --git a/Stack/Opc.Ua.Core/Types/Utils/Utils.cs b/Stack/Opc.Ua.Core/Types/Utils/Utils.cs index 2addf39c7..5c52d3f21 100644 --- a/Stack/Opc.Ua.Core/Types/Utils/Utils.cs +++ b/Stack/Opc.Ua.Core/Types/Utils/Utils.cs @@ -1,6 +1,6 @@ -/* Copyright (c) 1996-2021 The OPC Foundation. All rights reserved. +/* Copyright (c) 1996-2022 The OPC Foundation. All rights reserved. The source code in this file is covered under a dual-license scenario: - - RCL: for OPC Foundation members in good-standing + - RCL: for OPC Foundation Corporate Members in good-standing - GPL V2: everybody else RCL license terms accompanied with this source code. See http://opcfoundation.org/License/RCL/1.00/ GNU General Public License as published by the Free Software Foundation; From cc09a561d154bda4928dc2cbed13ed7a8c49367d Mon Sep 17 00:00:00 2001 From: Martin Regen <mregen@microsoft.com> Date: Thu, 31 Mar 2022 15:42:51 +0200 Subject: [PATCH 18/19] Update Nuget license information (#1764) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The OPC Foundation Technical Control Board on March 30th decided on the following changes with regard to the license information in the published Nuget packages: • Replace the “Redistributables” license for OPC UA Nuget packages with the Dual License. • Change the dual license in the source files so that “members” are replaced with “corporate members”. (see #1763) Effectively, - Nuget packages from libraries provided as samples which only build from source code which is covered by a MIT license, are the directly tagged with the MIT license. - Nuget packages which build from source code where the headers imply the dual license applies, are tagged with the Dual License 'LICENSE.txt' found in the repository root. --- .../Opc.Ua.Client.ComplexTypes.csproj | 2 + Libraries/Opc.Ua.Client/Opc.Ua.Client.csproj | 2 + .../Opc.Ua.Configuration.csproj | 2 + .../Opc.Ua.Gds.Client.Common.csproj | 2 + .../Opc.Ua.Gds.Server.Common.csproj | 2 + Libraries/Opc.Ua.PubSub/Opc.Ua.PubSub.csproj | 2 + .../Opc.Ua.Security.Certificates.csproj | 2 + Libraries/Opc.Ua.Server/Opc.Ua.Server.csproj | 2 + Licenses/OPC Foundation GPLv2 License.txt | 283 ++++++++++++++++++ Licenses/OPC Foundation MIT License.txt | 24 ++ ...tion REDISTRIBUTABLES Agreement of Use.txt | 159 ---------- UA Core Library.sln | 1 - common.props | 15 +- nuget/Opc.Ua.Symbols.nuspec | 4 +- nuget/Opc.Ua.nuspec | 4 +- 15 files changed, 338 insertions(+), 168 deletions(-) create mode 100644 Licenses/OPC Foundation GPLv2 License.txt create mode 100644 Licenses/OPC Foundation MIT License.txt delete mode 100644 Licenses/OPC Foundation REDISTRIBUTABLES Agreement of Use.txt diff --git a/Libraries/Opc.Ua.Client.ComplexTypes/Opc.Ua.Client.ComplexTypes.csproj b/Libraries/Opc.Ua.Client.ComplexTypes/Opc.Ua.Client.ComplexTypes.csproj index 333d26979..6be179a1d 100644 --- a/Libraries/Opc.Ua.Client.ComplexTypes/Opc.Ua.Client.ComplexTypes.csproj +++ b/Libraries/Opc.Ua.Client.ComplexTypes/Opc.Ua.Client.ComplexTypes.csproj @@ -7,6 +7,8 @@ <RootNameSpace>Opc.Ua.Client.ComplexTypes</RootNameSpace> <Description>OPC UA Complex Types Client Class Library</Description> <IsPackable>true</IsPackable> + <PackageLicenseExpression>MIT</PackageLicenseExpression> + <PackageLicenseFile></PackageLicenseFile> <GenerateDocumentationFile>true</GenerateDocumentationFile> </PropertyGroup> diff --git a/Libraries/Opc.Ua.Client/Opc.Ua.Client.csproj b/Libraries/Opc.Ua.Client/Opc.Ua.Client.csproj index a32090ba0..19a24b7d6 100644 --- a/Libraries/Opc.Ua.Client/Opc.Ua.Client.csproj +++ b/Libraries/Opc.Ua.Client/Opc.Ua.Client.csproj @@ -8,6 +8,8 @@ <RootNamespace>Opc.Ua.Client</RootNamespace> <Description>OPC UA Client Class Library</Description> <IsPackable>true</IsPackable> + <PackageLicenseExpression>MIT</PackageLicenseExpression> + <PackageLicenseFile></PackageLicenseFile> <GenerateDocumentationFile>true</GenerateDocumentationFile> </PropertyGroup> diff --git a/Libraries/Opc.Ua.Configuration/Opc.Ua.Configuration.csproj b/Libraries/Opc.Ua.Configuration/Opc.Ua.Configuration.csproj index fbb2218da..7b16a15e0 100644 --- a/Libraries/Opc.Ua.Configuration/Opc.Ua.Configuration.csproj +++ b/Libraries/Opc.Ua.Configuration/Opc.Ua.Configuration.csproj @@ -7,6 +7,8 @@ <RootNamespace>Opc.Ua.Configuration</RootNamespace> <Description>OPC UA Configuration Class Library</Description> <IsPackable>true</IsPackable> + <PackageLicenseExpression>MIT</PackageLicenseExpression> + <PackageLicenseFile></PackageLicenseFile> <GenerateDocumentationFile>true</GenerateDocumentationFile> </PropertyGroup> diff --git a/Libraries/Opc.Ua.Gds.Client.Common/Opc.Ua.Gds.Client.Common.csproj b/Libraries/Opc.Ua.Gds.Client.Common/Opc.Ua.Gds.Client.Common.csproj index e441d8777..077b4be87 100644 --- a/Libraries/Opc.Ua.Gds.Client.Common/Opc.Ua.Gds.Client.Common.csproj +++ b/Libraries/Opc.Ua.Gds.Client.Common/Opc.Ua.Gds.Client.Common.csproj @@ -8,6 +8,8 @@ <NoWarn>$(NoWarn);CS1591</NoWarn> <Description>OPC UA GDS Client Class Library</Description> <IsPackable>true</IsPackable> + <PackageLicenseExpression>MIT</PackageLicenseExpression> + <PackageLicenseFile></PackageLicenseFile> <GenerateDocumentationFile>true</GenerateDocumentationFile> </PropertyGroup> diff --git a/Libraries/Opc.Ua.Gds.Server.Common/Opc.Ua.Gds.Server.Common.csproj b/Libraries/Opc.Ua.Gds.Server.Common/Opc.Ua.Gds.Server.Common.csproj index a0fee80c2..8e457e0a1 100644 --- a/Libraries/Opc.Ua.Gds.Server.Common/Opc.Ua.Gds.Server.Common.csproj +++ b/Libraries/Opc.Ua.Gds.Server.Common/Opc.Ua.Gds.Server.Common.csproj @@ -8,6 +8,8 @@ <NoWarn>$(NoWarn);CS1591</NoWarn> <Description>OPC UA GDS Server Class Library</Description> <IsPackable>true</IsPackable> + <PackageLicenseExpression>MIT</PackageLicenseExpression> + <PackageLicenseFile></PackageLicenseFile> <GenerateDocumentationFile>true</GenerateDocumentationFile> </PropertyGroup> diff --git a/Libraries/Opc.Ua.PubSub/Opc.Ua.PubSub.csproj b/Libraries/Opc.Ua.PubSub/Opc.Ua.PubSub.csproj index 550aff4ec..f6fc47dc8 100644 --- a/Libraries/Opc.Ua.PubSub/Opc.Ua.PubSub.csproj +++ b/Libraries/Opc.Ua.PubSub/Opc.Ua.PubSub.csproj @@ -7,6 +7,8 @@ <RootNamespace>Opc.Ua.PubSub</RootNamespace> <Description>OPC UA PubSub Class Library</Description> <IsPackable>true</IsPackable> + <PackageLicenseExpression>MIT</PackageLicenseExpression> + <PackageLicenseFile></PackageLicenseFile> <GenerateDocumentationFile>true</GenerateDocumentationFile> </PropertyGroup> diff --git a/Libraries/Opc.Ua.Security.Certificates/Opc.Ua.Security.Certificates.csproj b/Libraries/Opc.Ua.Security.Certificates/Opc.Ua.Security.Certificates.csproj index 9bd708584..317c92040 100644 --- a/Libraries/Opc.Ua.Security.Certificates/Opc.Ua.Security.Certificates.csproj +++ b/Libraries/Opc.Ua.Security.Certificates/Opc.Ua.Security.Certificates.csproj @@ -7,6 +7,8 @@ <RootNamespace>Opc.Ua.Security.Certificates</RootNamespace> <Description>OPC UA Security X509 Certificates Class Library</Description> <IsPackable>true</IsPackable> + <PackageLicenseExpression>MIT</PackageLicenseExpression> + <PackageLicenseFile></PackageLicenseFile> <GenerateDocumentationFile>true</GenerateDocumentationFile> </PropertyGroup> diff --git a/Libraries/Opc.Ua.Server/Opc.Ua.Server.csproj b/Libraries/Opc.Ua.Server/Opc.Ua.Server.csproj index 3b36e5fa8..a2cc79d83 100644 --- a/Libraries/Opc.Ua.Server/Opc.Ua.Server.csproj +++ b/Libraries/Opc.Ua.Server/Opc.Ua.Server.csproj @@ -8,6 +8,8 @@ <Description>OPC UA Server Class Library</Description> <RestoreProjectStyle>PackageReference</RestoreProjectStyle> <IsPackable>true</IsPackable> + <PackageLicenseExpression>MIT</PackageLicenseExpression> + <PackageLicenseFile></PackageLicenseFile> <GenerateDocumentationFile>true</GenerateDocumentationFile> </PropertyGroup> diff --git a/Licenses/OPC Foundation GPLv2 License.txt b/Licenses/OPC Foundation GPLv2 License.txt new file mode 100644 index 000000000..76bb21be0 --- /dev/null +++ b/Licenses/OPC Foundation GPLv2 License.txt @@ -0,0 +1,283 @@ +https://opcfoundation.org/license/gpl.html + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + diff --git a/Licenses/OPC Foundation MIT License.txt b/Licenses/OPC Foundation MIT License.txt new file mode 100644 index 000000000..c7bd6b0c8 --- /dev/null +++ b/Licenses/OPC Foundation MIT License.txt @@ -0,0 +1,24 @@ +https://opcfoundation.org/license/mit.html + +MIT License + +OPC Foundation MIT License 1.00 + +Copyright (c) 2008-2022 OPC Foundation, Inc. Permission is hereby granted, +free of charge, to any person obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Licenses/OPC Foundation REDISTRIBUTABLES Agreement of Use.txt b/Licenses/OPC Foundation REDISTRIBUTABLES Agreement of Use.txt deleted file mode 100644 index 26336ab12..000000000 --- a/Licenses/OPC Foundation REDISTRIBUTABLES Agreement of Use.txt +++ /dev/null @@ -1,159 +0,0 @@ -https://opcfoundation.org/license/redistributables/1.3/ - - OPC REDISTRIBUTABLES Agreement of Use - -Version 1.3, February 06, 2017, OPC Foundation - -The terms and conditions of the Agreement apply to the Software -Deliverables including without limitation any OPC Foundation: - - * updates, - * supplements - * Internet-based services, and - * support services - -for the Software Deliverables, unless OPC Foundation specifies that any -other terms accompany such items, in which case the alternate terms -specified by OPC Foundation would apply. - -*BY USING THE SOURCE DELIVERABLES, YOU ACCEPT THE TERMS OF THIS -AGREEMENT. IF YOU DO NOT ACCEPT THE TERMS OF THIS AGREEMENT, DO NOT USE -THE SOFTWARE DELIVERABLES.* - -If you comply with this Agreement, you have the rights below. - - - 1. INSTALLATION AND USE RIGHTS. - -You may install and use any number of copies of the Software Deliverables. - - - 2. ADDITIONAL LICENSING REQUIREMENTS AND/OR USE RIGHTS. - -Distributable Code. The Software Deliverables contain compiled code that -you are permitted to distribute with programs you develop if you comply -with the terms below. - - 1. Right to Use and Distribute. - * You may copy and distribute all files that are part of this - Software Deliverables. - * Third Party Distribution. You may permit distributors of your - programs to copy and distribute the Software Deliverables as - part of those programs. - 2. Distribution Requirements. For any Software Deliverables you - distribute, you must: - 3. add significant primary functionality to it in your programs; - 4. require distributors and external end users to agree to terms that - protect it at least as much as this Agreement; - 5. display your valid copyright notice on your programs; and - 6. indemnify, defend, and hold harmless the OPC Foundation from any - claims, including attorneys’ fees, related to the distribution or - use of your programs. - 7. Distribution Restrictions. You may not: - * alter any copyright, trademark or patent notice in the Software - Deliverables; - * use the OPC Foundation’s trademarks in your programs’ names or - in a way that suggests your programs come from or are endorsed - by the OPC Foundation; - * include Software Deliverables in malicious, deceptive or - unlawful programs; - * modify or distribute the source code of any Software - Deliverables so that any part of it becomes subject to an - Excluded License. An Excluded License is one that requires, as a - condition of use, modification or distribution, that (1). the - code be disclosed or distributed in source code form; or (2) - permit or otherwise allow others to have the right to modify - such Software Deliverables; or - * create additional software components that directly link or - directly load the Software Deliverables without accepting the - corresponding source license for that Software Deliverable. - - - 3. SCOPE OF LICENSE. - -The Software Deliverables are licensed, not sold. This Agreement only -gives you some rights to use the Software Deliverables. The OPC -Foundation reserves all other rights. Unless applicable law gives you -more rights despite this limitation, you may use the software only as -expressly permitted in this Agreement. In doing so, you must comply with -any technical limitations in the Software Deliverables that only allow -you to use it in certain ways. You may not: - - * disclose the results of any benchmark tests of the Software - Deliverables to any third party without OPC Foundation’s prior - written approval; - * work around any technical limitations in the Software Deliverables; - * reverse engineer, decompile or disassemble the Software - Deliverables, except and only to the extent that applicable law - expressly permits, despite this limitation; - * make more copies of the Software Deliverables than specified in this - Agreement or allowed by applicable law, despite this limitation; - * publish the Software Deliverables for others to copy; or - * rent, lease or lend the Software Deliverables. - - - 4. BACKUP COPY. - -You may make one backup copy of the Software Deliverables. You may use -such copy only to reinstall the Software. - - - 5. DOCUMENTATION. - -Any person that has valid access to your computer or internal network -may copy and use the documentation related to the Software Deliverables -for your internal reference purposes. - - - 6. EXPORT RESTRICTIONS. - -The Software Deliverables are subject to United States export laws and -regulations. You must comply with all domestic and international export -laws and regulations that apply to the Software Deliverables. These laws -include restrictions on destinations, end users and end use. - - - 7. SUPPORT SERVICES. - -Because you accept the Software3 Deliverables from OPC Foundation “as -is,” OPC Foundation may not provide support services for it. - - - 8. ENTIRE AGREEMENT. - -This Agreement, and the terms for supplements, updates, Internet-based -services and support services that you use, are the entire Agreement for -the Software Deliverables and support services. - - - 10. LEGAL EFFECT - -This Agreement describes certain legal rights. You may have other rights -under the laws of your country. This Agreement does not change your -rights under the laws of your country if the laws of your country do not -permit it to do so. - - - 11. DISCLAIMER OF WARRANTY. - -THE SOFTWARE DELIVERABLES ARE LICENSED “AS-IS.” YOU BEAR THE RISK OF -USING THE SPECIFICATIONS. THE OPC FOUNDATION MAKES NO WARRANTY OF ANY -KIND, EXPRESSED OR IMPLIED, WITH REGARD TO THE SOFTWARE DELIVERABLES, -INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF TITLE OR OWNERSHIP, IMPLIED -WARRANTY OF MERCHANTABILITY, OR WARRANTY OF FITNESS FOR A PARTICULAR -PURPOSE OR USE.YOU MAY HAVE ADDITIONAL CONSUMER RIGHTS UNDER YOUR LOCAL -LAWS THAT THIS AGREEMENT CANNOT CHANGE. TO THE EXTENT PERMITTED UNDER -YOUR LOCAL LAWS, THE OPC FOUNDATION EXCLUDES THE IMPLIED WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - -IN NO EVENT SHALL THE OPC FOUNDATION BE LIABLE FOR ERRORS CONTAINED IN -THE SOURCE DELIVERABLES OR FOR DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -CONSEQUENTIAL, RELIANCE OR COVER DAMAGES, INCLUDING LOSS OF PROFITS, -REVENUE, DATA, OR USE, INCURRED BY ANY USER OR ANY THIRD PARTY IN -CONNECTION WITH THE FURNISHING, PERFORMANCE, OR USE OF THE SOFTWARE -DELIVERABLES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. THE -ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE USING THE SOFTWARE -DELIVERABLES IS BORNE BY YOU AND/OR THE USER. - -Copyright, OPC Foundation 1996-2020. All rights reserved. - diff --git a/UA Core Library.sln b/UA Core Library.sln index 7581236a4..7383d4017 100644 --- a/UA Core Library.sln +++ b/UA Core Library.sln @@ -41,7 +41,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "nuget", "nuget", "{F69ABCC3-ED93-446B-AC70-D6AA5F047781}" ProjectSection(SolutionItems) = preProject - nuget\Opc.Ua.Client.ComplexTypes.Symbols.nuspec = nuget\Opc.Ua.Client.ComplexTypes.Symbols.nuspec nuget\Opc.Ua.nuspec = nuget\Opc.Ua.nuspec nuget\Opc.Ua.Symbols.nuspec = nuget\Opc.Ua.Symbols.nuspec EndProjectSection diff --git a/common.props b/common.props index 1fe5cdd79..a72482a14 100644 --- a/common.props +++ b/common.props @@ -24,19 +24,26 @@ <AnalysisModeSecurity>preview-all</AnalysisModeSecurity> <CodeAnalysisTreatWarningsAsErrors>false</CodeAnalysisTreatWarningsAsErrors> </PropertyGroup> - + <PropertyGroup> <PackageIcon>images/logo.jpg</PackageIcon> <PackageProjectUrl>$(RepositoryUrl)</PackageProjectUrl> - <!-- deprecated <PackageLicenseUrl>https://opcfoundation.org/license/redistributables/1.3/</PackageLicenseUrl>--> - <PackageLicenseFile>licenses/LICENSE.txt</PackageLicenseFile> <PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance> + <!-- deprecated <PackageLicenseUrl>https://opcfoundation.org/license/source/1.11/index.html</PackageLicenseUrl>--> + <PackageLicenseFile>licenses/LICENSE.txt</PackageLicenseFile> <PackageReleaseNotes>$(RepositoryUrl)/releases</PackageReleaseNotes> <PackageTags>OPCFoundation OPC UA netstandard ios linux dotnet net netcore uwp</PackageTags> </PropertyGroup> + <ItemGroup Condition="'$(IsPackable)' != 'false' AND '$(PackageLicenseExpression)' == 'MIT'"> + <None Include="$(MSBuildThisFileDirectory)/licenses/OPC Foundation MIT license.txt" Pack="true" PackagePath="$(PackageLicenseFile)"/> + </ItemGroup> + + <ItemGroup Condition="'$(IsPackable)' != 'false' AND '$(PackageLicenseExpression)' == ''"> + <None Include="$(MSBuildThisFileDirectory)/LICENSE.txt" Pack="true" PackagePath="$(PackageLicenseFile)"/> + </ItemGroup> + <ItemGroup Condition="'$(IsPackable)' != 'false'"> - <None Include="$(MSBuildThisFileDirectory)/Licenses/OPC Foundation REDISTRIBUTABLES Agreement of Use.txt" Pack="true" PackagePath="$(PackageLicenseFile)"/> <None Include="$(MSBuildThisFileDirectory)/nuget/logo.jpg" Pack="true" PackagePath="$(PackageIcon)"/> </ItemGroup> diff --git a/nuget/Opc.Ua.Symbols.nuspec b/nuget/Opc.Ua.Symbols.nuspec index f25894659..ab15da629 100644 --- a/nuget/Opc.Ua.Symbols.nuspec +++ b/nuget/Opc.Ua.Symbols.nuspec @@ -10,7 +10,7 @@ <projectUrl>https://github.com/OPCFoundation/UA-.NETStandard</projectUrl> <icon>images/logo.jpg</icon> <license type="file">licenses/LICENSE.txt</license> - <!-- deprecated <licenseUrl>https://opcfoundation.org/license/redistributables/1.3/</licenseUrl> --> + <!-- deprecated <PackageLicenseUrl>https://opcfoundation.org/license/source/1.11/index.html</PackageLicenseUrl>--> <tags>OPCFoundation OPC-UA netstandard ios linux dotnet net netcore uwp</tags> <dependencies> <dependency id="OPCFoundation.NetStandard.Opc.Ua.Core.Debug" version="$version$"/> @@ -25,6 +25,6 @@ </metadata> <files> <file src="logo.jpg" target="images/" /> - <file src="../Licenses/OPC Foundation REDISTRIBUTABLES Agreement of Use.txt" target="licenses/LICENSE.txt"/> + <file src="../LICENSE.txt" target="licenses/LICENSE.txt"/> </files> </package> diff --git a/nuget/Opc.Ua.nuspec b/nuget/Opc.Ua.nuspec index 3591be7be..7d565ad6b 100644 --- a/nuget/Opc.Ua.nuspec +++ b/nuget/Opc.Ua.nuspec @@ -10,7 +10,7 @@ <projectUrl>https://github.com/OPCFoundation/UA-.NETStandard</projectUrl> <icon>images/logo.jpg</icon> <license type="file">licenses/LICENSE.txt</license> - <!-- deprecated <licenseUrl>https://opcfoundation.org/license/redistributables/1.3/</licenseUrl> --> + <!-- deprecated <PackageLicenseUrl>https://opcfoundation.org/license/source/1.11/index.html</PackageLicenseUrl>--> <tags>OPCFoundation OPC-UA netstandard ios linux dotnet net netcore uwp</tags> <dependencies> <dependency id="OPCFoundation.NetStandard.Opc.Ua.Core" version="$version$"/> @@ -25,6 +25,6 @@ </metadata> <files> <file src="logo.jpg" target="images/" /> - <file src="../Licenses/OPC Foundation REDISTRIBUTABLES Agreement of Use.txt" target="licenses/LICENSE.txt"/> + <file src="../LICENSE.txt" target="licenses/LICENSE.txt"/> </files> </package> From eda38cb6c22d6e7c4cb2e5507cb76f14849215cd Mon Sep 17 00:00:00 2001 From: Martin Regen <mregen@microsoft.com> Date: Thu, 31 Mar 2022 20:13:49 +0200 Subject: [PATCH 19/19] XmlSerializer in .NET 6 Omits Line Breaks by Default (#1760) * fix xml output in .NET 6 * unify the way xml writer settings are generated and used, add validation tests --- Libraries/Opc.Ua.Client/Session.cs | 15 ++++-------- .../UaPubSubConfigurationHelper.cs | 5 +--- Stack/Opc.Ua.Core/Schema/UANodeSetHelpers.cs | 7 ++++-- .../Configuration/ApplicationConfiguration.cs | 8 ++----- .../Configuration/ConfiguredEndpoints.cs | 2 +- Stack/Opc.Ua.Core/Stack/Nodes/NodeSet.cs | 5 +--- Stack/Opc.Ua.Core/Stack/State/NodeState.cs | 17 +++++--------- .../Stack/State/NodeStateCollection.cs | 23 ++++++------------- .../Opc.Ua.Core/Types/Encoders/XmlEncoder.cs | 2 +- .../Types/Schemas/BinarySchemaValidator.cs | 6 +---- .../Types/Schemas/XmlSchemaValidator.cs | 6 +---- Stack/Opc.Ua.Core/Types/Utils/Utils.cs | 16 ++++++++++++- .../Certificates/CertificateValidatorTest.cs | 2 ++ .../Types/Utils/UtilTests.cs | 21 +++++++++++++++++ 14 files changed, 68 insertions(+), 67 deletions(-) diff --git a/Libraries/Opc.Ua.Client/Session.cs b/Libraries/Opc.Ua.Client/Session.cs index be24837d3..befe45c39 100644 --- a/Libraries/Opc.Ua.Client/Session.cs +++ b/Libraries/Opc.Ua.Client/Session.cs @@ -1295,11 +1295,8 @@ public void Save(string filePath) public void Save(Stream stream, IEnumerable<Subscription> subscriptions) { SubscriptionCollection subscriptionList = new SubscriptionCollection(subscriptions); - XmlWriterSettings settings = new XmlWriterSettings { - Indent = true, - OmitXmlDeclaration = false, - Encoding = Encoding.UTF8 - }; + XmlWriterSettings settings = Utils.DefaultXmlWriterSettings(); + using (XmlWriter writer = XmlWriter.Create(stream, settings)) { DataContractSerializer serializer = new DataContractSerializer(typeof(SubscriptionCollection)); @@ -1326,12 +1323,8 @@ public void Save(string filePath, IEnumerable<Subscription> subscriptions) public IEnumerable<Subscription> Load(Stream stream) { // secure settings - XmlReaderSettings settings = new XmlReaderSettings { - DtdProcessing = DtdProcessing.Prohibit, - XmlResolver = null, - ConformanceLevel = ConformanceLevel.Document, - CloseInput = true - }; + XmlReaderSettings settings = Utils.DefaultXmlReaderSettings(); + settings.CloseInput = true; using (XmlReader reader = XmlReader.Create(stream, settings)) { diff --git a/Libraries/Opc.Ua.PubSub/Configuration/UaPubSubConfigurationHelper.cs b/Libraries/Opc.Ua.PubSub/Configuration/UaPubSubConfigurationHelper.cs index 1543daa0d..a4d71a564 100644 --- a/Libraries/Opc.Ua.PubSub/Configuration/UaPubSubConfigurationHelper.cs +++ b/Libraries/Opc.Ua.PubSub/Configuration/UaPubSubConfigurationHelper.cs @@ -49,10 +49,7 @@ public static void SaveConfiguration(PubSubConfigurationDataType pubSubConfigura { Stream ostrm = File.Open(filePath, FileMode.Create, FileAccess.ReadWrite); - XmlWriterSettings settings = new XmlWriterSettings(); - - settings.Encoding = System.Text.Encoding.UTF8; - settings.Indent = true; + XmlWriterSettings settings = Utils.DefaultXmlWriterSettings(); settings.CloseOutput = true; using (XmlWriter writer = XmlDictionaryWriter.Create(ostrm, settings)) diff --git a/Stack/Opc.Ua.Core/Schema/UANodeSetHelpers.cs b/Stack/Opc.Ua.Core/Schema/UANodeSetHelpers.cs index 0ecd2e749..d12275874 100644 --- a/Stack/Opc.Ua.Core/Schema/UANodeSetHelpers.cs +++ b/Stack/Opc.Ua.Core/Schema/UANodeSetHelpers.cs @@ -54,12 +54,15 @@ public static UANodeSet Read(Stream istrm) /// <param name="istrm">The input stream.</param> public void Write(Stream istrm) { - StreamWriter writer = new StreamWriter(istrm, Encoding.UTF8); + var setting = Utils.DefaultXmlWriterSettings(); + setting.CloseOutput = true; + + var writer = XmlWriter.Create(istrm, setting); try { XmlSerializer serializer = new XmlSerializer(typeof(UANodeSet)); - serializer.Serialize(writer, this); + serializer.Serialize(writer, this, null); } finally { diff --git a/Stack/Opc.Ua.Core/Stack/Configuration/ApplicationConfiguration.cs b/Stack/Opc.Ua.Core/Stack/Configuration/ApplicationConfiguration.cs index 78e8bf0f0..423bf99e7 100644 --- a/Stack/Opc.Ua.Core/Stack/Configuration/ApplicationConfiguration.cs +++ b/Stack/Opc.Ua.Core/Stack/Configuration/ApplicationConfiguration.cs @@ -407,12 +407,8 @@ public static string GetFilePathFromAppConfig(string sectionName) /// <remarks>Calls GetType() on the current instance and passes that to the DataContractSerializer.</remarks> public void SaveToFile(string filePath) { - XmlWriterSettings settings = new XmlWriterSettings() - { - Encoding = Encoding.UTF8, - Indent = true, - CloseOutput = true - }; + XmlWriterSettings settings = Utils.DefaultXmlWriterSettings(); + settings.CloseOutput = true; using (Stream ostrm = File.Open(filePath, FileMode.Create, FileAccess.ReadWrite)) using (XmlWriter writer = XmlDictionaryWriter.Create(ostrm, settings)) diff --git a/Stack/Opc.Ua.Core/Stack/Configuration/ConfiguredEndpoints.cs b/Stack/Opc.Ua.Core/Stack/Configuration/ConfiguredEndpoints.cs index ee7032b81..cff04c516 100644 --- a/Stack/Opc.Ua.Core/Stack/Configuration/ConfiguredEndpoints.cs +++ b/Stack/Opc.Ua.Core/Stack/Configuration/ConfiguredEndpoints.cs @@ -197,7 +197,7 @@ public static ConfiguredEndpointCollection Load(Stream istrm) } catch (Exception e) { - Utils.LogError(e, "Unexpected error loading ConfiguredEnpoints."); + Utils.LogError(e, "Unexpected error loading ConfiguredEndpoints."); throw; } } diff --git a/Stack/Opc.Ua.Core/Stack/Nodes/NodeSet.cs b/Stack/Opc.Ua.Core/Stack/Nodes/NodeSet.cs index c79ea4745..b451a13b0 100644 --- a/Stack/Opc.Ua.Core/Stack/Nodes/NodeSet.cs +++ b/Stack/Opc.Ua.Core/Stack/Nodes/NodeSet.cs @@ -64,10 +64,7 @@ public static NodeSet Read(Stream istrm) /// <param name="istrm">The input stream.</param> public void Write(Stream istrm) { - XmlWriterSettings settings = new XmlWriterSettings(); - settings.Encoding = Encoding.UTF8; - settings.Indent = true; - XmlWriter writer = XmlWriter.Create(istrm, settings); + var writer = XmlWriter.Create(istrm, Utils.DefaultXmlWriterSettings()); try { diff --git a/Stack/Opc.Ua.Core/Stack/State/NodeState.cs b/Stack/Opc.Ua.Core/Stack/State/NodeState.cs index 334da8e4e..3a40d1aee 100644 --- a/Stack/Opc.Ua.Core/Stack/State/NodeState.cs +++ b/Stack/Opc.Ua.Core/Stack/State/NodeState.cs @@ -528,19 +528,14 @@ protected virtual void Export(ISystemContext context, Node node) /// <param name="ostrm">The stream to write.</param> public void SaveAsXml(ISystemContext context, Stream ostrm) { - ServiceMessageContext messageContext = new ServiceMessageContext(); + ServiceMessageContext messageContext = new ServiceMessageContext { + NamespaceUris = context.NamespaceUris, + ServerUris = context.ServerUris, + Factory = context.EncodeableFactory + }; - messageContext.NamespaceUris = context.NamespaceUris; - messageContext.ServerUris = context.ServerUris; - messageContext.Factory = context.EncodeableFactory; - - XmlWriterSettings settings = new XmlWriterSettings(); - - settings.Encoding = Encoding.UTF8; + XmlWriterSettings settings = Utils.DefaultXmlWriterSettings(); settings.CloseOutput = true; - settings.ConformanceLevel = ConformanceLevel.Document; - settings.Indent = true; - using (XmlWriter writer = XmlWriter.Create(ostrm, settings)) { XmlQualifiedName root = new XmlQualifiedName(this.SymbolicName, context.NamespaceUris.GetString(this.BrowseName.NamespaceIndex)); diff --git a/Stack/Opc.Ua.Core/Stack/State/NodeStateCollection.cs b/Stack/Opc.Ua.Core/Stack/State/NodeStateCollection.cs index b7778d692..8c57da24e 100644 --- a/Stack/Opc.Ua.Core/Stack/State/NodeStateCollection.cs +++ b/Stack/Opc.Ua.Core/Stack/State/NodeStateCollection.cs @@ -73,13 +73,8 @@ public void SaveAsNodeSet(ISystemContext context, Stream ostrm) nodeSet.Add(node, nodeTable.NamespaceUris, nodeTable.ServerUris); } - XmlWriterSettings settings = new XmlWriterSettings(); - - settings.Encoding = Encoding.UTF8; + XmlWriterSettings settings = Utils.DefaultXmlWriterSettings(); settings.CloseOutput = true; - settings.ConformanceLevel = ConformanceLevel.Document; - settings.Indent = true; - using (XmlWriter writer = XmlWriter.Create(ostrm, settings)) { DataContractSerializer serializer = new DataContractSerializer(typeof(NodeSet)); @@ -200,18 +195,14 @@ public void SaveAsXml(ISystemContext context, Stream ostrm) /// </summary> public void SaveAsXml(ISystemContext context, Stream ostrm, bool keepStreamOpen) { - XmlWriterSettings settings = new XmlWriterSettings(); - - settings.Encoding = Encoding.UTF8; + XmlWriterSettings settings = Utils.DefaultXmlWriterSettings(); settings.CloseOutput = !keepStreamOpen; - settings.ConformanceLevel = ConformanceLevel.Document; - settings.Indent = true; - - ServiceMessageContext messageContext = new ServiceMessageContext(); - messageContext.NamespaceUris = context.NamespaceUris; - messageContext.ServerUris = context.ServerUris; - messageContext.Factory = context.EncodeableFactory; + ServiceMessageContext messageContext = new ServiceMessageContext { + NamespaceUris = context.NamespaceUris, + ServerUris = context.ServerUris, + Factory = context.EncodeableFactory + }; using (XmlWriter writer = XmlWriter.Create(ostrm, settings)) { diff --git a/Stack/Opc.Ua.Core/Types/Encoders/XmlEncoder.cs b/Stack/Opc.Ua.Core/Types/Encoders/XmlEncoder.cs index 0e00d6eb1..5d7b1c08b 100644 --- a/Stack/Opc.Ua.Core/Types/Encoders/XmlEncoder.cs +++ b/Stack/Opc.Ua.Core/Types/Encoders/XmlEncoder.cs @@ -36,7 +36,7 @@ public XmlEncoder(IServiceMessageContext context) m_context = context; m_nestingLevel = 0; - XmlWriterSettings settings = new XmlWriterSettings(); + XmlWriterSettings settings = Utils.DefaultXmlWriterSettings(); settings.CheckCharacters = false; settings.ConformanceLevel = ConformanceLevel.Auto; settings.NamespaceHandling = NamespaceHandling.OmitDuplicates; diff --git a/Stack/Opc.Ua.Core/Types/Schemas/BinarySchemaValidator.cs b/Stack/Opc.Ua.Core/Types/Schemas/BinarySchemaValidator.cs index a4bf5f131..b6446c65c 100644 --- a/Stack/Opc.Ua.Core/Types/Schemas/BinarySchemaValidator.cs +++ b/Stack/Opc.Ua.Core/Types/Schemas/BinarySchemaValidator.cs @@ -86,11 +86,7 @@ public async Task Validate(string inputPath) /// </summary> public override string GetSchema(string typeName) { - XmlWriterSettings settings = new XmlWriterSettings(); - - settings.Encoding = Encoding.UTF8; - settings.Indent = true; - settings.IndentChars = " "; + XmlWriterSettings settings = Utils.DefaultXmlWriterSettings(); MemoryStream ostrm = new MemoryStream(); XmlWriter writer = XmlWriter.Create(ostrm, settings); diff --git a/Stack/Opc.Ua.Core/Types/Schemas/XmlSchemaValidator.cs b/Stack/Opc.Ua.Core/Types/Schemas/XmlSchemaValidator.cs index 1a2e3f7c2..8c507d1e1 100644 --- a/Stack/Opc.Ua.Core/Types/Schemas/XmlSchemaValidator.cs +++ b/Stack/Opc.Ua.Core/Types/Schemas/XmlSchemaValidator.cs @@ -114,11 +114,7 @@ public void Validate(Stream stream) /// </summary> public override string GetSchema(string typeName) { - XmlWriterSettings settings = new XmlWriterSettings(); - - settings.Encoding = Encoding.UTF8; - settings.Indent = true; - settings.IndentChars = " "; + XmlWriterSettings settings = Utils.DefaultXmlWriterSettings(); MemoryStream ostrm = new MemoryStream(); XmlWriter writer = XmlWriter.Create(ostrm, settings); diff --git a/Stack/Opc.Ua.Core/Types/Utils/Utils.cs b/Stack/Opc.Ua.Core/Types/Utils/Utils.cs index 5c52d3f21..3020caba4 100644 --- a/Stack/Opc.Ua.Core/Types/Utils/Utils.cs +++ b/Stack/Opc.Ua.Core/Types/Utils/Utils.cs @@ -2801,7 +2801,7 @@ public static string GetAssemblyBuildNumber() /// DtdProcessing Prohibited, XmlResolver disabled and /// ConformanceLevel Document. /// </summary> - internal static XmlReaderSettings DefaultXmlReaderSettings() + public static XmlReaderSettings DefaultXmlReaderSettings() { return new XmlReaderSettings() { DtdProcessing = DtdProcessing.Prohibit, @@ -2810,6 +2810,20 @@ internal static XmlReaderSettings DefaultXmlReaderSettings() }; } + /// <summary> + /// Returns a XmlWriterSetting with deterministic defaults across .NET versions. + /// </summary> + public static XmlWriterSettings DefaultXmlWriterSettings() + { + return new XmlWriterSettings() { + Encoding = Encoding.UTF8, + Indent = true, + ConformanceLevel = ConformanceLevel.Document, + IndentChars = " ", + CloseOutput = false, + }; + } + /// <summary> /// Safe version for assignment of InnerXml. /// </summary> diff --git a/Tests/Opc.Ua.Core.Tests/Security/Certificates/CertificateValidatorTest.cs b/Tests/Opc.Ua.Core.Tests/Security/Certificates/CertificateValidatorTest.cs index fa732300f..d71733f34 100644 --- a/Tests/Opc.Ua.Core.Tests/Security/Certificates/CertificateValidatorTest.cs +++ b/Tests/Opc.Ua.Core.Tests/Security/Certificates/CertificateValidatorTest.cs @@ -1117,6 +1117,7 @@ public async Task TestInvalidSignature(bool ca, bool trusted) /// Test if a key below min length is detected. /// </summary> [Theory] + [NonParallelizable] public async Task TestMinimumKeyRejected(bool trusted) { var cert = CertificateFactory.CreateCertificate(null, null, "CN=1k Key", null) @@ -1165,6 +1166,7 @@ public async Task TestMinimumKeyRejected(bool trusted) /// Test auto accept. /// </summary> [Theory] + [NonParallelizable] public async Task TestAutoAccept(bool trusted, bool autoAccept) { var cert = CertificateFactory.CreateCertificate(null, null, "CN=Test", null) diff --git a/Tests/Opc.Ua.Core.Tests/Types/Utils/UtilTests.cs b/Tests/Opc.Ua.Core.Tests/Types/Utils/UtilTests.cs index c22d9546f..3321792b1 100644 --- a/Tests/Opc.Ua.Core.Tests/Types/Utils/UtilTests.cs +++ b/Tests/Opc.Ua.Core.Tests/Types/Utils/UtilTests.cs @@ -268,6 +268,27 @@ public void BuiltInTypeOfSimpleDataTypes() } } + [Test] + public void ValidateXmlWriterSettings() + { + XmlWriterSettings settings = Utils.DefaultXmlWriterSettings(); + Assert.AreEqual(Encoding.UTF8, settings.Encoding); + Assert.AreEqual(false, settings.CloseOutput); + Assert.AreEqual(true, settings.Indent); + Assert.AreEqual(ConformanceLevel.Document, settings.ConformanceLevel); + Assert.AreEqual(false, settings.OmitXmlDeclaration); + Assert.AreEqual(" ", settings.IndentChars); + } + + [Test] + public void ValidateXmlReaderSettings() + { + XmlReaderSettings settings = Utils.DefaultXmlReaderSettings(); + Assert.AreEqual(DtdProcessing.Prohibit, settings.DtdProcessing); + //Assert.AreEqual(null, settings.XmlResolver); + Assert.AreEqual(ConformanceLevel.Document, settings.ConformanceLevel); + Assert.AreEqual(false, settings.CloseInput); + } #endregion }