/* ======================================================================== * Copyright (c) 2005-2022 The OPC Foundation, Inc. All rights reserved. * * OPC Foundation MIT License 1.00 * * 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. * * The complete license agreement can be found here: * http://opcfoundation.org/License/MIT/1.00/ * ======================================================================*/ using System; using System.Collections.Generic; #if (NET_STANDARD_ASYNC) using System.Threading; using System.Threading.Tasks; #endif namespace Opc.Ua { #region ISessionClientMethods Interface /// /// An interface used by by clients to access a UA server. /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public interface ISessionClientMethods { #region Client Interface #region CreateSession Methods #if (!OPCUA_EXCLUDE_CreateSession) /// /// Invokes the CreateSession service. /// ResponseHeader CreateSession( RequestHeader requestHeader, ApplicationDescription clientDescription, string serverUri, string endpointUrl, string sessionName, byte[] clientNonce, byte[] clientCertificate, double requestedSessionTimeout, uint maxResponseMessageSize, out NodeId sessionId, out NodeId authenticationToken, out double revisedSessionTimeout, out byte[] serverNonce, out byte[] serverCertificate, out EndpointDescriptionCollection serverEndpoints, out SignedSoftwareCertificateCollection serverSoftwareCertificates, out SignatureData serverSignature, out uint maxRequestMessageSize); /// /// Begins an asynchronous invocation of the CreateSession service. /// IAsyncResult BeginCreateSession( RequestHeader requestHeader, ApplicationDescription clientDescription, string serverUri, string endpointUrl, string sessionName, byte[] clientNonce, byte[] clientCertificate, double requestedSessionTimeout, uint maxResponseMessageSize, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the CreateSession service. /// ResponseHeader EndCreateSession( IAsyncResult result, out NodeId sessionId, out NodeId authenticationToken, out double revisedSessionTimeout, out byte[] serverNonce, out byte[] serverCertificate, out EndpointDescriptionCollection serverEndpoints, out SignedSoftwareCertificateCollection serverSoftwareCertificates, out SignatureData serverSignature, out uint maxRequestMessageSize); #if (NET_STANDARD_ASYNC) /// /// Invokes the CreateSession service using async Task based request. /// Task CreateSessionAsync( RequestHeader requestHeader, ApplicationDescription clientDescription, string serverUri, string endpointUrl, string sessionName, byte[] clientNonce, byte[] clientCertificate, double requestedSessionTimeout, uint maxResponseMessageSize, CancellationToken ct); #endif #endif #endregion #region ActivateSession Methods #if (!OPCUA_EXCLUDE_ActivateSession) /// /// Invokes the ActivateSession service. /// ResponseHeader ActivateSession( RequestHeader requestHeader, SignatureData clientSignature, SignedSoftwareCertificateCollection clientSoftwareCertificates, StringCollection localeIds, ExtensionObject userIdentityToken, SignatureData userTokenSignature, out byte[] serverNonce, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the ActivateSession service. /// IAsyncResult BeginActivateSession( RequestHeader requestHeader, SignatureData clientSignature, SignedSoftwareCertificateCollection clientSoftwareCertificates, StringCollection localeIds, ExtensionObject userIdentityToken, SignatureData userTokenSignature, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the ActivateSession service. /// ResponseHeader EndActivateSession( IAsyncResult result, out byte[] serverNonce, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the ActivateSession service using async Task based request. /// Task ActivateSessionAsync( RequestHeader requestHeader, SignatureData clientSignature, SignedSoftwareCertificateCollection clientSoftwareCertificates, StringCollection localeIds, ExtensionObject userIdentityToken, SignatureData userTokenSignature, CancellationToken ct); #endif #endif #endregion #region CloseSession Methods #if (!OPCUA_EXCLUDE_CloseSession) /// /// Invokes the CloseSession service. /// ResponseHeader CloseSession( RequestHeader requestHeader, bool deleteSubscriptions); /// /// Begins an asynchronous invocation of the CloseSession service. /// IAsyncResult BeginCloseSession( RequestHeader requestHeader, bool deleteSubscriptions, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the CloseSession service. /// ResponseHeader EndCloseSession( IAsyncResult result); #if (NET_STANDARD_ASYNC) /// /// Invokes the CloseSession service using async Task based request. /// Task CloseSessionAsync( RequestHeader requestHeader, bool deleteSubscriptions, CancellationToken ct); #endif #endif #endregion #region Cancel Methods #if (!OPCUA_EXCLUDE_Cancel) /// /// Invokes the Cancel service. /// ResponseHeader Cancel( RequestHeader requestHeader, uint requestHandle, out uint cancelCount); /// /// Begins an asynchronous invocation of the Cancel service. /// IAsyncResult BeginCancel( RequestHeader requestHeader, uint requestHandle, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the Cancel service. /// ResponseHeader EndCancel( IAsyncResult result, out uint cancelCount); #if (NET_STANDARD_ASYNC) /// /// Invokes the Cancel service using async Task based request. /// Task CancelAsync( RequestHeader requestHeader, uint requestHandle, CancellationToken ct); #endif #endif #endregion #region AddNodes Methods #if (!OPCUA_EXCLUDE_AddNodes) /// /// Invokes the AddNodes service. /// ResponseHeader AddNodes( RequestHeader requestHeader, AddNodesItemCollection nodesToAdd, out AddNodesResultCollection results, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the AddNodes service. /// IAsyncResult BeginAddNodes( RequestHeader requestHeader, AddNodesItemCollection nodesToAdd, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the AddNodes service. /// ResponseHeader EndAddNodes( IAsyncResult result, out AddNodesResultCollection results, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the AddNodes service using async Task based request. /// Task AddNodesAsync( RequestHeader requestHeader, AddNodesItemCollection nodesToAdd, CancellationToken ct); #endif #endif #endregion #region AddReferences Methods #if (!OPCUA_EXCLUDE_AddReferences) /// /// Invokes the AddReferences service. /// ResponseHeader AddReferences( RequestHeader requestHeader, AddReferencesItemCollection referencesToAdd, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the AddReferences service. /// IAsyncResult BeginAddReferences( RequestHeader requestHeader, AddReferencesItemCollection referencesToAdd, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the AddReferences service. /// ResponseHeader EndAddReferences( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the AddReferences service using async Task based request. /// Task AddReferencesAsync( RequestHeader requestHeader, AddReferencesItemCollection referencesToAdd, CancellationToken ct); #endif #endif #endregion #region DeleteNodes Methods #if (!OPCUA_EXCLUDE_DeleteNodes) /// /// Invokes the DeleteNodes service. /// ResponseHeader DeleteNodes( RequestHeader requestHeader, DeleteNodesItemCollection nodesToDelete, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the DeleteNodes service. /// IAsyncResult BeginDeleteNodes( RequestHeader requestHeader, DeleteNodesItemCollection nodesToDelete, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the DeleteNodes service. /// ResponseHeader EndDeleteNodes( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the DeleteNodes service using async Task based request. /// Task DeleteNodesAsync( RequestHeader requestHeader, DeleteNodesItemCollection nodesToDelete, CancellationToken ct); #endif #endif #endregion #region DeleteReferences Methods #if (!OPCUA_EXCLUDE_DeleteReferences) /// /// Invokes the DeleteReferences service. /// ResponseHeader DeleteReferences( RequestHeader requestHeader, DeleteReferencesItemCollection referencesToDelete, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the DeleteReferences service. /// IAsyncResult BeginDeleteReferences( RequestHeader requestHeader, DeleteReferencesItemCollection referencesToDelete, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the DeleteReferences service. /// ResponseHeader EndDeleteReferences( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the DeleteReferences service using async Task based request. /// Task DeleteReferencesAsync( RequestHeader requestHeader, DeleteReferencesItemCollection referencesToDelete, CancellationToken ct); #endif #endif #endregion #region Browse Methods #if (!OPCUA_EXCLUDE_Browse) /// /// Invokes the Browse service. /// ResponseHeader Browse( RequestHeader requestHeader, ViewDescription view, uint requestedMaxReferencesPerNode, BrowseDescriptionCollection nodesToBrowse, out BrowseResultCollection results, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the Browse service. /// IAsyncResult BeginBrowse( RequestHeader requestHeader, ViewDescription view, uint requestedMaxReferencesPerNode, BrowseDescriptionCollection nodesToBrowse, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the Browse service. /// ResponseHeader EndBrowse( IAsyncResult result, out BrowseResultCollection results, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the Browse service using async Task based request. /// Task BrowseAsync( RequestHeader requestHeader, ViewDescription view, uint requestedMaxReferencesPerNode, BrowseDescriptionCollection nodesToBrowse, CancellationToken ct); #endif #endif #endregion #region BrowseNext Methods #if (!OPCUA_EXCLUDE_BrowseNext) /// /// Invokes the BrowseNext service. /// ResponseHeader BrowseNext( RequestHeader requestHeader, bool releaseContinuationPoints, ByteStringCollection continuationPoints, out BrowseResultCollection results, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the BrowseNext service. /// IAsyncResult BeginBrowseNext( RequestHeader requestHeader, bool releaseContinuationPoints, ByteStringCollection continuationPoints, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the BrowseNext service. /// ResponseHeader EndBrowseNext( IAsyncResult result, out BrowseResultCollection results, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the BrowseNext service using async Task based request. /// Task BrowseNextAsync( RequestHeader requestHeader, bool releaseContinuationPoints, ByteStringCollection continuationPoints, CancellationToken ct); #endif #endif #endregion #region TranslateBrowsePathsToNodeIds Methods #if (!OPCUA_EXCLUDE_TranslateBrowsePathsToNodeIds) /// /// Invokes the TranslateBrowsePathsToNodeIds service. /// ResponseHeader TranslateBrowsePathsToNodeIds( RequestHeader requestHeader, BrowsePathCollection browsePaths, out BrowsePathResultCollection results, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the TranslateBrowsePathsToNodeIds service. /// IAsyncResult BeginTranslateBrowsePathsToNodeIds( RequestHeader requestHeader, BrowsePathCollection browsePaths, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the TranslateBrowsePathsToNodeIds service. /// ResponseHeader EndTranslateBrowsePathsToNodeIds( IAsyncResult result, out BrowsePathResultCollection results, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the TranslateBrowsePathsToNodeIds service using async Task based request. /// Task TranslateBrowsePathsToNodeIdsAsync( RequestHeader requestHeader, BrowsePathCollection browsePaths, CancellationToken ct); #endif #endif #endregion #region RegisterNodes Methods #if (!OPCUA_EXCLUDE_RegisterNodes) /// /// Invokes the RegisterNodes service. /// ResponseHeader RegisterNodes( RequestHeader requestHeader, NodeIdCollection nodesToRegister, out NodeIdCollection registeredNodeIds); /// /// Begins an asynchronous invocation of the RegisterNodes service. /// IAsyncResult BeginRegisterNodes( RequestHeader requestHeader, NodeIdCollection nodesToRegister, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the RegisterNodes service. /// ResponseHeader EndRegisterNodes( IAsyncResult result, out NodeIdCollection registeredNodeIds); #if (NET_STANDARD_ASYNC) /// /// Invokes the RegisterNodes service using async Task based request. /// Task RegisterNodesAsync( RequestHeader requestHeader, NodeIdCollection nodesToRegister, CancellationToken ct); #endif #endif #endregion #region UnregisterNodes Methods #if (!OPCUA_EXCLUDE_UnregisterNodes) /// /// Invokes the UnregisterNodes service. /// ResponseHeader UnregisterNodes( RequestHeader requestHeader, NodeIdCollection nodesToUnregister); /// /// Begins an asynchronous invocation of the UnregisterNodes service. /// IAsyncResult BeginUnregisterNodes( RequestHeader requestHeader, NodeIdCollection nodesToUnregister, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the UnregisterNodes service. /// ResponseHeader EndUnregisterNodes( IAsyncResult result); #if (NET_STANDARD_ASYNC) /// /// Invokes the UnregisterNodes service using async Task based request. /// Task UnregisterNodesAsync( RequestHeader requestHeader, NodeIdCollection nodesToUnregister, CancellationToken ct); #endif #endif #endregion #region QueryFirst Methods #if (!OPCUA_EXCLUDE_QueryFirst) /// /// Invokes the QueryFirst service. /// ResponseHeader QueryFirst( RequestHeader requestHeader, ViewDescription view, NodeTypeDescriptionCollection nodeTypes, ContentFilter filter, uint maxDataSetsToReturn, uint maxReferencesToReturn, out QueryDataSetCollection queryDataSets, out byte[] continuationPoint, out ParsingResultCollection parsingResults, out DiagnosticInfoCollection diagnosticInfos, out ContentFilterResult filterResult); /// /// Begins an asynchronous invocation of the QueryFirst service. /// IAsyncResult BeginQueryFirst( RequestHeader requestHeader, ViewDescription view, NodeTypeDescriptionCollection nodeTypes, ContentFilter filter, uint maxDataSetsToReturn, uint maxReferencesToReturn, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the QueryFirst service. /// ResponseHeader EndQueryFirst( IAsyncResult result, out QueryDataSetCollection queryDataSets, out byte[] continuationPoint, out ParsingResultCollection parsingResults, out DiagnosticInfoCollection diagnosticInfos, out ContentFilterResult filterResult); #if (NET_STANDARD_ASYNC) /// /// Invokes the QueryFirst service using async Task based request. /// Task QueryFirstAsync( RequestHeader requestHeader, ViewDescription view, NodeTypeDescriptionCollection nodeTypes, ContentFilter filter, uint maxDataSetsToReturn, uint maxReferencesToReturn, CancellationToken ct); #endif #endif #endregion #region QueryNext Methods #if (!OPCUA_EXCLUDE_QueryNext) /// /// Invokes the QueryNext service. /// ResponseHeader QueryNext( RequestHeader requestHeader, bool releaseContinuationPoint, byte[] continuationPoint, out QueryDataSetCollection queryDataSets, out byte[] revisedContinuationPoint); /// /// Begins an asynchronous invocation of the QueryNext service. /// IAsyncResult BeginQueryNext( RequestHeader requestHeader, bool releaseContinuationPoint, byte[] continuationPoint, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the QueryNext service. /// ResponseHeader EndQueryNext( IAsyncResult result, out QueryDataSetCollection queryDataSets, out byte[] revisedContinuationPoint); #if (NET_STANDARD_ASYNC) /// /// Invokes the QueryNext service using async Task based request. /// Task QueryNextAsync( RequestHeader requestHeader, bool releaseContinuationPoint, byte[] continuationPoint, CancellationToken ct); #endif #endif #endregion #region Read Methods #if (!OPCUA_EXCLUDE_Read) /// /// Invokes the Read service. /// ResponseHeader Read( RequestHeader requestHeader, double maxAge, TimestampsToReturn timestampsToReturn, ReadValueIdCollection nodesToRead, out DataValueCollection results, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the Read service. /// IAsyncResult BeginRead( RequestHeader requestHeader, double maxAge, TimestampsToReturn timestampsToReturn, ReadValueIdCollection nodesToRead, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the Read service. /// ResponseHeader EndRead( IAsyncResult result, out DataValueCollection results, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the Read service using async Task based request. /// Task ReadAsync( RequestHeader requestHeader, double maxAge, TimestampsToReturn timestampsToReturn, ReadValueIdCollection nodesToRead, CancellationToken ct); #endif #endif #endregion #region HistoryRead Methods #if (!OPCUA_EXCLUDE_HistoryRead) /// /// Invokes the HistoryRead service. /// ResponseHeader HistoryRead( RequestHeader requestHeader, ExtensionObject historyReadDetails, TimestampsToReturn timestampsToReturn, bool releaseContinuationPoints, HistoryReadValueIdCollection nodesToRead, out HistoryReadResultCollection results, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the HistoryRead service. /// IAsyncResult BeginHistoryRead( RequestHeader requestHeader, ExtensionObject historyReadDetails, TimestampsToReturn timestampsToReturn, bool releaseContinuationPoints, HistoryReadValueIdCollection nodesToRead, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the HistoryRead service. /// ResponseHeader EndHistoryRead( IAsyncResult result, out HistoryReadResultCollection results, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the HistoryRead service using async Task based request. /// Task HistoryReadAsync( RequestHeader requestHeader, ExtensionObject historyReadDetails, TimestampsToReturn timestampsToReturn, bool releaseContinuationPoints, HistoryReadValueIdCollection nodesToRead, CancellationToken ct); #endif #endif #endregion #region Write Methods #if (!OPCUA_EXCLUDE_Write) /// /// Invokes the Write service. /// ResponseHeader Write( RequestHeader requestHeader, WriteValueCollection nodesToWrite, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the Write service. /// IAsyncResult BeginWrite( RequestHeader requestHeader, WriteValueCollection nodesToWrite, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the Write service. /// ResponseHeader EndWrite( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the Write service using async Task based request. /// Task WriteAsync( RequestHeader requestHeader, WriteValueCollection nodesToWrite, CancellationToken ct); #endif #endif #endregion #region HistoryUpdate Methods #if (!OPCUA_EXCLUDE_HistoryUpdate) /// /// Invokes the HistoryUpdate service. /// ResponseHeader HistoryUpdate( RequestHeader requestHeader, ExtensionObjectCollection historyUpdateDetails, out HistoryUpdateResultCollection results, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the HistoryUpdate service. /// IAsyncResult BeginHistoryUpdate( RequestHeader requestHeader, ExtensionObjectCollection historyUpdateDetails, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the HistoryUpdate service. /// ResponseHeader EndHistoryUpdate( IAsyncResult result, out HistoryUpdateResultCollection results, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the HistoryUpdate service using async Task based request. /// Task HistoryUpdateAsync( RequestHeader requestHeader, ExtensionObjectCollection historyUpdateDetails, CancellationToken ct); #endif #endif #endregion #region Call Methods #if (!OPCUA_EXCLUDE_Call) /// /// Invokes the Call service. /// ResponseHeader Call( RequestHeader requestHeader, CallMethodRequestCollection methodsToCall, out CallMethodResultCollection results, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the Call service. /// IAsyncResult BeginCall( RequestHeader requestHeader, CallMethodRequestCollection methodsToCall, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the Call service. /// ResponseHeader EndCall( IAsyncResult result, out CallMethodResultCollection results, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the Call service using async Task based request. /// Task CallAsync( RequestHeader requestHeader, CallMethodRequestCollection methodsToCall, CancellationToken ct); #endif #endif #endregion #region CreateMonitoredItems Methods #if (!OPCUA_EXCLUDE_CreateMonitoredItems) /// /// Invokes the CreateMonitoredItems service. /// ResponseHeader CreateMonitoredItems( RequestHeader requestHeader, uint subscriptionId, TimestampsToReturn timestampsToReturn, MonitoredItemCreateRequestCollection itemsToCreate, out MonitoredItemCreateResultCollection results, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the CreateMonitoredItems service. /// IAsyncResult BeginCreateMonitoredItems( RequestHeader requestHeader, uint subscriptionId, TimestampsToReturn timestampsToReturn, MonitoredItemCreateRequestCollection itemsToCreate, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the CreateMonitoredItems service. /// ResponseHeader EndCreateMonitoredItems( IAsyncResult result, out MonitoredItemCreateResultCollection results, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the CreateMonitoredItems service using async Task based request. /// Task CreateMonitoredItemsAsync( RequestHeader requestHeader, uint subscriptionId, TimestampsToReturn timestampsToReturn, MonitoredItemCreateRequestCollection itemsToCreate, CancellationToken ct); #endif #endif #endregion #region ModifyMonitoredItems Methods #if (!OPCUA_EXCLUDE_ModifyMonitoredItems) /// /// Invokes the ModifyMonitoredItems service. /// ResponseHeader ModifyMonitoredItems( RequestHeader requestHeader, uint subscriptionId, TimestampsToReturn timestampsToReturn, MonitoredItemModifyRequestCollection itemsToModify, out MonitoredItemModifyResultCollection results, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the ModifyMonitoredItems service. /// IAsyncResult BeginModifyMonitoredItems( RequestHeader requestHeader, uint subscriptionId, TimestampsToReturn timestampsToReturn, MonitoredItemModifyRequestCollection itemsToModify, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the ModifyMonitoredItems service. /// ResponseHeader EndModifyMonitoredItems( IAsyncResult result, out MonitoredItemModifyResultCollection results, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the ModifyMonitoredItems service using async Task based request. /// Task ModifyMonitoredItemsAsync( RequestHeader requestHeader, uint subscriptionId, TimestampsToReturn timestampsToReturn, MonitoredItemModifyRequestCollection itemsToModify, CancellationToken ct); #endif #endif #endregion #region SetMonitoringMode Methods #if (!OPCUA_EXCLUDE_SetMonitoringMode) /// /// Invokes the SetMonitoringMode service. /// ResponseHeader SetMonitoringMode( RequestHeader requestHeader, uint subscriptionId, MonitoringMode monitoringMode, UInt32Collection monitoredItemIds, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the SetMonitoringMode service. /// IAsyncResult BeginSetMonitoringMode( RequestHeader requestHeader, uint subscriptionId, MonitoringMode monitoringMode, UInt32Collection monitoredItemIds, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the SetMonitoringMode service. /// ResponseHeader EndSetMonitoringMode( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the SetMonitoringMode service using async Task based request. /// Task SetMonitoringModeAsync( RequestHeader requestHeader, uint subscriptionId, MonitoringMode monitoringMode, UInt32Collection monitoredItemIds, CancellationToken ct); #endif #endif #endregion #region SetTriggering Methods #if (!OPCUA_EXCLUDE_SetTriggering) /// /// Invokes the SetTriggering service. /// ResponseHeader SetTriggering( RequestHeader requestHeader, uint subscriptionId, uint triggeringItemId, UInt32Collection linksToAdd, UInt32Collection linksToRemove, out StatusCodeCollection addResults, out DiagnosticInfoCollection addDiagnosticInfos, out StatusCodeCollection removeResults, out DiagnosticInfoCollection removeDiagnosticInfos); /// /// Begins an asynchronous invocation of the SetTriggering service. /// IAsyncResult BeginSetTriggering( RequestHeader requestHeader, uint subscriptionId, uint triggeringItemId, UInt32Collection linksToAdd, UInt32Collection linksToRemove, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the SetTriggering service. /// ResponseHeader EndSetTriggering( IAsyncResult result, out StatusCodeCollection addResults, out DiagnosticInfoCollection addDiagnosticInfos, out StatusCodeCollection removeResults, out DiagnosticInfoCollection removeDiagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the SetTriggering service using async Task based request. /// Task SetTriggeringAsync( RequestHeader requestHeader, uint subscriptionId, uint triggeringItemId, UInt32Collection linksToAdd, UInt32Collection linksToRemove, CancellationToken ct); #endif #endif #endregion #region DeleteMonitoredItems Methods #if (!OPCUA_EXCLUDE_DeleteMonitoredItems) /// /// Invokes the DeleteMonitoredItems service. /// ResponseHeader DeleteMonitoredItems( RequestHeader requestHeader, uint subscriptionId, UInt32Collection monitoredItemIds, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the DeleteMonitoredItems service. /// IAsyncResult BeginDeleteMonitoredItems( RequestHeader requestHeader, uint subscriptionId, UInt32Collection monitoredItemIds, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the DeleteMonitoredItems service. /// ResponseHeader EndDeleteMonitoredItems( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the DeleteMonitoredItems service using async Task based request. /// Task DeleteMonitoredItemsAsync( RequestHeader requestHeader, uint subscriptionId, UInt32Collection monitoredItemIds, CancellationToken ct); #endif #endif #endregion #region CreateSubscription Methods #if (!OPCUA_EXCLUDE_CreateSubscription) /// /// Invokes the CreateSubscription service. /// ResponseHeader CreateSubscription( RequestHeader requestHeader, double requestedPublishingInterval, uint requestedLifetimeCount, uint requestedMaxKeepAliveCount, uint maxNotificationsPerPublish, bool publishingEnabled, byte priority, out uint subscriptionId, out double revisedPublishingInterval, out uint revisedLifetimeCount, out uint revisedMaxKeepAliveCount); /// /// Begins an asynchronous invocation of the CreateSubscription service. /// IAsyncResult BeginCreateSubscription( RequestHeader requestHeader, double requestedPublishingInterval, uint requestedLifetimeCount, uint requestedMaxKeepAliveCount, uint maxNotificationsPerPublish, bool publishingEnabled, byte priority, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the CreateSubscription service. /// ResponseHeader EndCreateSubscription( IAsyncResult result, out uint subscriptionId, out double revisedPublishingInterval, out uint revisedLifetimeCount, out uint revisedMaxKeepAliveCount); #if (NET_STANDARD_ASYNC) /// /// Invokes the CreateSubscription service using async Task based request. /// Task CreateSubscriptionAsync( RequestHeader requestHeader, double requestedPublishingInterval, uint requestedLifetimeCount, uint requestedMaxKeepAliveCount, uint maxNotificationsPerPublish, bool publishingEnabled, byte priority, CancellationToken ct); #endif #endif #endregion #region ModifySubscription Methods #if (!OPCUA_EXCLUDE_ModifySubscription) /// /// Invokes the ModifySubscription service. /// ResponseHeader ModifySubscription( RequestHeader requestHeader, uint subscriptionId, double requestedPublishingInterval, uint requestedLifetimeCount, uint requestedMaxKeepAliveCount, uint maxNotificationsPerPublish, byte priority, out double revisedPublishingInterval, out uint revisedLifetimeCount, out uint revisedMaxKeepAliveCount); /// /// Begins an asynchronous invocation of the ModifySubscription service. /// IAsyncResult BeginModifySubscription( RequestHeader requestHeader, uint subscriptionId, double requestedPublishingInterval, uint requestedLifetimeCount, uint requestedMaxKeepAliveCount, uint maxNotificationsPerPublish, byte priority, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the ModifySubscription service. /// ResponseHeader EndModifySubscription( IAsyncResult result, out double revisedPublishingInterval, out uint revisedLifetimeCount, out uint revisedMaxKeepAliveCount); #if (NET_STANDARD_ASYNC) /// /// Invokes the ModifySubscription service using async Task based request. /// Task ModifySubscriptionAsync( RequestHeader requestHeader, uint subscriptionId, double requestedPublishingInterval, uint requestedLifetimeCount, uint requestedMaxKeepAliveCount, uint maxNotificationsPerPublish, byte priority, CancellationToken ct); #endif #endif #endregion #region SetPublishingMode Methods #if (!OPCUA_EXCLUDE_SetPublishingMode) /// /// Invokes the SetPublishingMode service. /// ResponseHeader SetPublishingMode( RequestHeader requestHeader, bool publishingEnabled, UInt32Collection subscriptionIds, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the SetPublishingMode service. /// IAsyncResult BeginSetPublishingMode( RequestHeader requestHeader, bool publishingEnabled, UInt32Collection subscriptionIds, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the SetPublishingMode service. /// ResponseHeader EndSetPublishingMode( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the SetPublishingMode service using async Task based request. /// Task SetPublishingModeAsync( RequestHeader requestHeader, bool publishingEnabled, UInt32Collection subscriptionIds, CancellationToken ct); #endif #endif #endregion #region Publish Methods #if (!OPCUA_EXCLUDE_Publish) /// /// Invokes the Publish service. /// ResponseHeader Publish( RequestHeader requestHeader, SubscriptionAcknowledgementCollection subscriptionAcknowledgements, out uint subscriptionId, out UInt32Collection availableSequenceNumbers, out bool moreNotifications, out NotificationMessage notificationMessage, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the Publish service. /// IAsyncResult BeginPublish( RequestHeader requestHeader, SubscriptionAcknowledgementCollection subscriptionAcknowledgements, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the Publish service. /// ResponseHeader EndPublish( IAsyncResult result, out uint subscriptionId, out UInt32Collection availableSequenceNumbers, out bool moreNotifications, out NotificationMessage notificationMessage, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the Publish service using async Task based request. /// Task PublishAsync( RequestHeader requestHeader, SubscriptionAcknowledgementCollection subscriptionAcknowledgements, CancellationToken ct); #endif #endif #endregion #region Republish Methods #if (!OPCUA_EXCLUDE_Republish) /// /// Invokes the Republish service. /// ResponseHeader Republish( RequestHeader requestHeader, uint subscriptionId, uint retransmitSequenceNumber, out NotificationMessage notificationMessage); /// /// Begins an asynchronous invocation of the Republish service. /// IAsyncResult BeginRepublish( RequestHeader requestHeader, uint subscriptionId, uint retransmitSequenceNumber, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the Republish service. /// ResponseHeader EndRepublish( IAsyncResult result, out NotificationMessage notificationMessage); #if (NET_STANDARD_ASYNC) /// /// Invokes the Republish service using async Task based request. /// Task RepublishAsync( RequestHeader requestHeader, uint subscriptionId, uint retransmitSequenceNumber, CancellationToken ct); #endif #endif #endregion #region TransferSubscriptions Methods #if (!OPCUA_EXCLUDE_TransferSubscriptions) /// /// Invokes the TransferSubscriptions service. /// ResponseHeader TransferSubscriptions( RequestHeader requestHeader, UInt32Collection subscriptionIds, bool sendInitialValues, out TransferResultCollection results, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the TransferSubscriptions service. /// IAsyncResult BeginTransferSubscriptions( RequestHeader requestHeader, UInt32Collection subscriptionIds, bool sendInitialValues, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the TransferSubscriptions service. /// ResponseHeader EndTransferSubscriptions( IAsyncResult result, out TransferResultCollection results, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the TransferSubscriptions service using async Task based request. /// Task TransferSubscriptionsAsync( RequestHeader requestHeader, UInt32Collection subscriptionIds, bool sendInitialValues, CancellationToken ct); #endif #endif #endregion #region DeleteSubscriptions Methods #if (!OPCUA_EXCLUDE_DeleteSubscriptions) /// /// Invokes the DeleteSubscriptions service. /// ResponseHeader DeleteSubscriptions( RequestHeader requestHeader, UInt32Collection subscriptionIds, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the DeleteSubscriptions service. /// IAsyncResult BeginDeleteSubscriptions( RequestHeader requestHeader, UInt32Collection subscriptionIds, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the DeleteSubscriptions service. /// ResponseHeader EndDeleteSubscriptions( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the DeleteSubscriptions service using async Task based request. /// Task DeleteSubscriptionsAsync( RequestHeader requestHeader, UInt32Collection subscriptionIds, CancellationToken ct); #endif #endif #endregion #endregion } #endregion /// /// The client side interface for a UA server. /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class SessionClient : ClientBase, ISessionClientMethods { #region Constructors /// /// Intializes the object with a channel and a message context. /// public SessionClient(ITransportChannel channel) : base(channel) { } #endregion #region Public Properties /// /// The component contains classes object use to communicate with the server. /// public new ISessionChannel InnerChannel { get { return (ISessionChannel)base.InnerChannel; } } #endregion #region Client API #region CreateSession Methods #if (!OPCUA_EXCLUDE_CreateSession) #if (!NET_STANDARD) /// /// Invokes the CreateSession service. /// public virtual ResponseHeader CreateSession( RequestHeader requestHeader, ApplicationDescription clientDescription, string serverUri, string endpointUrl, string sessionName, byte[] clientNonce, byte[] clientCertificate, double requestedSessionTimeout, uint maxResponseMessageSize, out NodeId sessionId, out NodeId authenticationToken, out double revisedSessionTimeout, out byte[] serverNonce, out byte[] serverCertificate, out EndpointDescriptionCollection serverEndpoints, out SignedSoftwareCertificateCollection serverSoftwareCertificates, out SignatureData serverSignature, out uint maxRequestMessageSize) { CreateSessionRequest request = new CreateSessionRequest(); CreateSessionResponse response = null; request.RequestHeader = requestHeader; request.ClientDescription = clientDescription; request.ServerUri = serverUri; request.EndpointUrl = endpointUrl; request.SessionName = sessionName; request.ClientNonce = clientNonce; request.ClientCertificate = clientCertificate; request.RequestedSessionTimeout = requestedSessionTimeout; request.MaxResponseMessageSize = maxResponseMessageSize; UpdateRequestHeader(request, requestHeader == null, "CreateSession"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CreateSessionResponse)genericResponse; } else { CreateSessionResponseMessage responseMessage = InnerChannel.CreateSession(new CreateSessionMessage(request)); if (responseMessage == null || responseMessage.CreateSessionResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.CreateSessionResponse; ValidateResponse(response.ResponseHeader); } sessionId = response.SessionId; authenticationToken = response.AuthenticationToken; revisedSessionTimeout = response.RevisedSessionTimeout; serverNonce = response.ServerNonce; serverCertificate = response.ServerCertificate; serverEndpoints = response.ServerEndpoints; serverSoftwareCertificates = response.ServerSoftwareCertificates; serverSignature = response.ServerSignature; maxRequestMessageSize = response.MaxRequestMessageSize; } finally { RequestCompleted(request, response, "CreateSession"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the CreateSession service. /// public virtual IAsyncResult BeginCreateSession( RequestHeader requestHeader, ApplicationDescription clientDescription, string serverUri, string endpointUrl, string sessionName, byte[] clientNonce, byte[] clientCertificate, double requestedSessionTimeout, uint maxResponseMessageSize, AsyncCallback callback, object asyncState) { CreateSessionRequest request = new CreateSessionRequest(); request.RequestHeader = requestHeader; request.ClientDescription = clientDescription; request.ServerUri = serverUri; request.EndpointUrl = endpointUrl; request.SessionName = sessionName; request.ClientNonce = clientNonce; request.ClientCertificate = clientCertificate; request.RequestedSessionTimeout = requestedSessionTimeout; request.MaxResponseMessageSize = maxResponseMessageSize; UpdateRequestHeader(request, requestHeader == null, "CreateSession"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginCreateSession(new CreateSessionMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the CreateSession service. /// public virtual ResponseHeader EndCreateSession( IAsyncResult result, out NodeId sessionId, out NodeId authenticationToken, out double revisedSessionTimeout, out byte[] serverNonce, out byte[] serverCertificate, out EndpointDescriptionCollection serverEndpoints, out SignedSoftwareCertificateCollection serverSoftwareCertificates, out SignatureData serverSignature, out uint maxRequestMessageSize) { CreateSessionResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CreateSessionResponse)genericResponse; } else { CreateSessionResponseMessage responseMessage = InnerChannel.EndCreateSession(result); if (responseMessage == null || responseMessage.CreateSessionResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.CreateSessionResponse; ValidateResponse(response.ResponseHeader); } sessionId = response.SessionId; authenticationToken = response.AuthenticationToken; revisedSessionTimeout = response.RevisedSessionTimeout; serverNonce = response.ServerNonce; serverCertificate = response.ServerCertificate; serverEndpoints = response.ServerEndpoints; serverSoftwareCertificates = response.ServerSoftwareCertificates; serverSignature = response.ServerSignature; maxRequestMessageSize = response.MaxRequestMessageSize; } finally { RequestCompleted(null, response, "CreateSession"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the CreateSession service. /// public virtual ResponseHeader CreateSession( RequestHeader requestHeader, ApplicationDescription clientDescription, string serverUri, string endpointUrl, string sessionName, byte[] clientNonce, byte[] clientCertificate, double requestedSessionTimeout, uint maxResponseMessageSize, out NodeId sessionId, out NodeId authenticationToken, out double revisedSessionTimeout, out byte[] serverNonce, out byte[] serverCertificate, out EndpointDescriptionCollection serverEndpoints, out SignedSoftwareCertificateCollection serverSoftwareCertificates, out SignatureData serverSignature, out uint maxRequestMessageSize) { CreateSessionRequest request = new CreateSessionRequest(); CreateSessionResponse response = null; request.RequestHeader = requestHeader; request.ClientDescription = clientDescription; request.ServerUri = serverUri; request.EndpointUrl = endpointUrl; request.SessionName = sessionName; request.ClientNonce = clientNonce; request.ClientCertificate = clientCertificate; request.RequestedSessionTimeout = requestedSessionTimeout; request.MaxResponseMessageSize = maxResponseMessageSize; UpdateRequestHeader(request, requestHeader == null, "CreateSession"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CreateSessionResponse)genericResponse; sessionId = response.SessionId; authenticationToken = response.AuthenticationToken; revisedSessionTimeout = response.RevisedSessionTimeout; serverNonce = response.ServerNonce; serverCertificate = response.ServerCertificate; serverEndpoints = response.ServerEndpoints; serverSoftwareCertificates = response.ServerSoftwareCertificates; serverSignature = response.ServerSignature; maxRequestMessageSize = response.MaxRequestMessageSize; } finally { RequestCompleted(request, response, "CreateSession"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the CreateSession service. /// public virtual IAsyncResult BeginCreateSession( RequestHeader requestHeader, ApplicationDescription clientDescription, string serverUri, string endpointUrl, string sessionName, byte[] clientNonce, byte[] clientCertificate, double requestedSessionTimeout, uint maxResponseMessageSize, AsyncCallback callback, object asyncState) { CreateSessionRequest request = new CreateSessionRequest(); request.RequestHeader = requestHeader; request.ClientDescription = clientDescription; request.ServerUri = serverUri; request.EndpointUrl = endpointUrl; request.SessionName = sessionName; request.ClientNonce = clientNonce; request.ClientCertificate = clientCertificate; request.RequestedSessionTimeout = requestedSessionTimeout; request.MaxResponseMessageSize = maxResponseMessageSize; UpdateRequestHeader(request, requestHeader == null, "CreateSession"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the CreateSession service. /// public virtual ResponseHeader EndCreateSession( IAsyncResult result, out NodeId sessionId, out NodeId authenticationToken, out double revisedSessionTimeout, out byte[] serverNonce, out byte[] serverCertificate, out EndpointDescriptionCollection serverEndpoints, out SignedSoftwareCertificateCollection serverSoftwareCertificates, out SignatureData serverSignature, out uint maxRequestMessageSize) { CreateSessionResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CreateSessionResponse)genericResponse; sessionId = response.SessionId; authenticationToken = response.AuthenticationToken; revisedSessionTimeout = response.RevisedSessionTimeout; serverNonce = response.ServerNonce; serverCertificate = response.ServerCertificate; serverEndpoints = response.ServerEndpoints; serverSoftwareCertificates = response.ServerSoftwareCertificates; serverSignature = response.ServerSignature; maxRequestMessageSize = response.MaxRequestMessageSize; } finally { RequestCompleted(null, response, "CreateSession"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the CreateSession service using async Task based request. /// public virtual async Task CreateSessionAsync( RequestHeader requestHeader, ApplicationDescription clientDescription, string serverUri, string endpointUrl, string sessionName, byte[] clientNonce, byte[] clientCertificate, double requestedSessionTimeout, uint maxResponseMessageSize, CancellationToken ct) { CreateSessionRequest request = new CreateSessionRequest(); CreateSessionResponse response = null; request.RequestHeader = requestHeader; request.ClientDescription = clientDescription; request.ServerUri = serverUri; request.EndpointUrl = endpointUrl; request.SessionName = sessionName; request.ClientNonce = clientNonce; request.ClientCertificate = clientCertificate; request.RequestedSessionTimeout = requestedSessionTimeout; request.MaxResponseMessageSize = maxResponseMessageSize; UpdateRequestHeader(request, requestHeader == null, "CreateSession"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CreateSessionResponse)genericResponse; } finally { RequestCompleted(request, response, "CreateSession"); } return response; } #endif #endif #endregion #region ActivateSession Methods #if (!OPCUA_EXCLUDE_ActivateSession) #if (!NET_STANDARD) /// /// Invokes the ActivateSession service. /// public virtual ResponseHeader ActivateSession( RequestHeader requestHeader, SignatureData clientSignature, SignedSoftwareCertificateCollection clientSoftwareCertificates, StringCollection localeIds, ExtensionObject userIdentityToken, SignatureData userTokenSignature, out byte[] serverNonce, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { ActivateSessionRequest request = new ActivateSessionRequest(); ActivateSessionResponse response = null; request.RequestHeader = requestHeader; request.ClientSignature = clientSignature; request.ClientSoftwareCertificates = clientSoftwareCertificates; request.LocaleIds = localeIds; request.UserIdentityToken = userIdentityToken; request.UserTokenSignature = userTokenSignature; UpdateRequestHeader(request, requestHeader == null, "ActivateSession"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (ActivateSessionResponse)genericResponse; } else { ActivateSessionResponseMessage responseMessage = InnerChannel.ActivateSession(new ActivateSessionMessage(request)); if (responseMessage == null || responseMessage.ActivateSessionResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.ActivateSessionResponse; ValidateResponse(response.ResponseHeader); } serverNonce = response.ServerNonce; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "ActivateSession"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the ActivateSession service. /// public virtual IAsyncResult BeginActivateSession( RequestHeader requestHeader, SignatureData clientSignature, SignedSoftwareCertificateCollection clientSoftwareCertificates, StringCollection localeIds, ExtensionObject userIdentityToken, SignatureData userTokenSignature, AsyncCallback callback, object asyncState) { ActivateSessionRequest request = new ActivateSessionRequest(); request.RequestHeader = requestHeader; request.ClientSignature = clientSignature; request.ClientSoftwareCertificates = clientSoftwareCertificates; request.LocaleIds = localeIds; request.UserIdentityToken = userIdentityToken; request.UserTokenSignature = userTokenSignature; UpdateRequestHeader(request, requestHeader == null, "ActivateSession"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginActivateSession(new ActivateSessionMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the ActivateSession service. /// public virtual ResponseHeader EndActivateSession( IAsyncResult result, out byte[] serverNonce, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { ActivateSessionResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (ActivateSessionResponse)genericResponse; } else { ActivateSessionResponseMessage responseMessage = InnerChannel.EndActivateSession(result); if (responseMessage == null || responseMessage.ActivateSessionResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.ActivateSessionResponse; ValidateResponse(response.ResponseHeader); } serverNonce = response.ServerNonce; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "ActivateSession"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the ActivateSession service. /// public virtual ResponseHeader ActivateSession( RequestHeader requestHeader, SignatureData clientSignature, SignedSoftwareCertificateCollection clientSoftwareCertificates, StringCollection localeIds, ExtensionObject userIdentityToken, SignatureData userTokenSignature, out byte[] serverNonce, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { ActivateSessionRequest request = new ActivateSessionRequest(); ActivateSessionResponse response = null; request.RequestHeader = requestHeader; request.ClientSignature = clientSignature; request.ClientSoftwareCertificates = clientSoftwareCertificates; request.LocaleIds = localeIds; request.UserIdentityToken = userIdentityToken; request.UserTokenSignature = userTokenSignature; UpdateRequestHeader(request, requestHeader == null, "ActivateSession"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (ActivateSessionResponse)genericResponse; serverNonce = response.ServerNonce; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "ActivateSession"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the ActivateSession service. /// public virtual IAsyncResult BeginActivateSession( RequestHeader requestHeader, SignatureData clientSignature, SignedSoftwareCertificateCollection clientSoftwareCertificates, StringCollection localeIds, ExtensionObject userIdentityToken, SignatureData userTokenSignature, AsyncCallback callback, object asyncState) { ActivateSessionRequest request = new ActivateSessionRequest(); request.RequestHeader = requestHeader; request.ClientSignature = clientSignature; request.ClientSoftwareCertificates = clientSoftwareCertificates; request.LocaleIds = localeIds; request.UserIdentityToken = userIdentityToken; request.UserTokenSignature = userTokenSignature; UpdateRequestHeader(request, requestHeader == null, "ActivateSession"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the ActivateSession service. /// public virtual ResponseHeader EndActivateSession( IAsyncResult result, out byte[] serverNonce, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { ActivateSessionResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (ActivateSessionResponse)genericResponse; serverNonce = response.ServerNonce; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "ActivateSession"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the ActivateSession service using async Task based request. /// public virtual async Task ActivateSessionAsync( RequestHeader requestHeader, SignatureData clientSignature, SignedSoftwareCertificateCollection clientSoftwareCertificates, StringCollection localeIds, ExtensionObject userIdentityToken, SignatureData userTokenSignature, CancellationToken ct) { ActivateSessionRequest request = new ActivateSessionRequest(); ActivateSessionResponse response = null; request.RequestHeader = requestHeader; request.ClientSignature = clientSignature; request.ClientSoftwareCertificates = clientSoftwareCertificates; request.LocaleIds = localeIds; request.UserIdentityToken = userIdentityToken; request.UserTokenSignature = userTokenSignature; UpdateRequestHeader(request, requestHeader == null, "ActivateSession"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (ActivateSessionResponse)genericResponse; } finally { RequestCompleted(request, response, "ActivateSession"); } return response; } #endif #endif #endregion #region CloseSession Methods #if (!OPCUA_EXCLUDE_CloseSession) #if (!NET_STANDARD) /// /// Invokes the CloseSession service. /// public virtual ResponseHeader CloseSession( RequestHeader requestHeader, bool deleteSubscriptions) { CloseSessionRequest request = new CloseSessionRequest(); CloseSessionResponse response = null; request.RequestHeader = requestHeader; request.DeleteSubscriptions = deleteSubscriptions; UpdateRequestHeader(request, requestHeader == null, "CloseSession"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CloseSessionResponse)genericResponse; } else { CloseSessionResponseMessage responseMessage = InnerChannel.CloseSession(new CloseSessionMessage(request)); if (responseMessage == null || responseMessage.CloseSessionResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.CloseSessionResponse; ValidateResponse(response.ResponseHeader); } } finally { RequestCompleted(request, response, "CloseSession"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the CloseSession service. /// public virtual IAsyncResult BeginCloseSession( RequestHeader requestHeader, bool deleteSubscriptions, AsyncCallback callback, object asyncState) { CloseSessionRequest request = new CloseSessionRequest(); request.RequestHeader = requestHeader; request.DeleteSubscriptions = deleteSubscriptions; UpdateRequestHeader(request, requestHeader == null, "CloseSession"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginCloseSession(new CloseSessionMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the CloseSession service. /// public virtual ResponseHeader EndCloseSession( IAsyncResult result) { CloseSessionResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CloseSessionResponse)genericResponse; } else { CloseSessionResponseMessage responseMessage = InnerChannel.EndCloseSession(result); if (responseMessage == null || responseMessage.CloseSessionResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.CloseSessionResponse; ValidateResponse(response.ResponseHeader); } } finally { RequestCompleted(null, response, "CloseSession"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the CloseSession service. /// public virtual ResponseHeader CloseSession( RequestHeader requestHeader, bool deleteSubscriptions) { CloseSessionRequest request = new CloseSessionRequest(); CloseSessionResponse response = null; request.RequestHeader = requestHeader; request.DeleteSubscriptions = deleteSubscriptions; UpdateRequestHeader(request, requestHeader == null, "CloseSession"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CloseSessionResponse)genericResponse; } finally { RequestCompleted(request, response, "CloseSession"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the CloseSession service. /// public virtual IAsyncResult BeginCloseSession( RequestHeader requestHeader, bool deleteSubscriptions, AsyncCallback callback, object asyncState) { CloseSessionRequest request = new CloseSessionRequest(); request.RequestHeader = requestHeader; request.DeleteSubscriptions = deleteSubscriptions; UpdateRequestHeader(request, requestHeader == null, "CloseSession"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the CloseSession service. /// public virtual ResponseHeader EndCloseSession( IAsyncResult result) { CloseSessionResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CloseSessionResponse)genericResponse; } finally { RequestCompleted(null, response, "CloseSession"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the CloseSession service using async Task based request. /// public virtual async Task CloseSessionAsync( RequestHeader requestHeader, bool deleteSubscriptions, CancellationToken ct) { CloseSessionRequest request = new CloseSessionRequest(); CloseSessionResponse response = null; request.RequestHeader = requestHeader; request.DeleteSubscriptions = deleteSubscriptions; UpdateRequestHeader(request, requestHeader == null, "CloseSession"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CloseSessionResponse)genericResponse; } finally { RequestCompleted(request, response, "CloseSession"); } return response; } #endif #endif #endregion #region Cancel Methods #if (!OPCUA_EXCLUDE_Cancel) #if (!NET_STANDARD) /// /// Invokes the Cancel service. /// public virtual ResponseHeader Cancel( RequestHeader requestHeader, uint requestHandle, out uint cancelCount) { CancelRequest request = new CancelRequest(); CancelResponse response = null; request.RequestHeader = requestHeader; request.RequestHandle = requestHandle; UpdateRequestHeader(request, requestHeader == null, "Cancel"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CancelResponse)genericResponse; } else { CancelResponseMessage responseMessage = InnerChannel.Cancel(new CancelMessage(request)); if (responseMessage == null || responseMessage.CancelResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.CancelResponse; ValidateResponse(response.ResponseHeader); } cancelCount = response.CancelCount; } finally { RequestCompleted(request, response, "Cancel"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the Cancel service. /// public virtual IAsyncResult BeginCancel( RequestHeader requestHeader, uint requestHandle, AsyncCallback callback, object asyncState) { CancelRequest request = new CancelRequest(); request.RequestHeader = requestHeader; request.RequestHandle = requestHandle; UpdateRequestHeader(request, requestHeader == null, "Cancel"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginCancel(new CancelMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the Cancel service. /// public virtual ResponseHeader EndCancel( IAsyncResult result, out uint cancelCount) { CancelResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CancelResponse)genericResponse; } else { CancelResponseMessage responseMessage = InnerChannel.EndCancel(result); if (responseMessage == null || responseMessage.CancelResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.CancelResponse; ValidateResponse(response.ResponseHeader); } cancelCount = response.CancelCount; } finally { RequestCompleted(null, response, "Cancel"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the Cancel service. /// public virtual ResponseHeader Cancel( RequestHeader requestHeader, uint requestHandle, out uint cancelCount) { CancelRequest request = new CancelRequest(); CancelResponse response = null; request.RequestHeader = requestHeader; request.RequestHandle = requestHandle; UpdateRequestHeader(request, requestHeader == null, "Cancel"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CancelResponse)genericResponse; cancelCount = response.CancelCount; } finally { RequestCompleted(request, response, "Cancel"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the Cancel service. /// public virtual IAsyncResult BeginCancel( RequestHeader requestHeader, uint requestHandle, AsyncCallback callback, object asyncState) { CancelRequest request = new CancelRequest(); request.RequestHeader = requestHeader; request.RequestHandle = requestHandle; UpdateRequestHeader(request, requestHeader == null, "Cancel"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the Cancel service. /// public virtual ResponseHeader EndCancel( IAsyncResult result, out uint cancelCount) { CancelResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CancelResponse)genericResponse; cancelCount = response.CancelCount; } finally { RequestCompleted(null, response, "Cancel"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the Cancel service using async Task based request. /// public virtual async Task CancelAsync( RequestHeader requestHeader, uint requestHandle, CancellationToken ct) { CancelRequest request = new CancelRequest(); CancelResponse response = null; request.RequestHeader = requestHeader; request.RequestHandle = requestHandle; UpdateRequestHeader(request, requestHeader == null, "Cancel"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CancelResponse)genericResponse; } finally { RequestCompleted(request, response, "Cancel"); } return response; } #endif #endif #endregion #region AddNodes Methods #if (!OPCUA_EXCLUDE_AddNodes) #if (!NET_STANDARD) /// /// Invokes the AddNodes service. /// public virtual ResponseHeader AddNodes( RequestHeader requestHeader, AddNodesItemCollection nodesToAdd, out AddNodesResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { AddNodesRequest request = new AddNodesRequest(); AddNodesResponse response = null; request.RequestHeader = requestHeader; request.NodesToAdd = nodesToAdd; UpdateRequestHeader(request, requestHeader == null, "AddNodes"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (AddNodesResponse)genericResponse; } else { AddNodesResponseMessage responseMessage = InnerChannel.AddNodes(new AddNodesMessage(request)); if (responseMessage == null || responseMessage.AddNodesResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.AddNodesResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "AddNodes"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the AddNodes service. /// public virtual IAsyncResult BeginAddNodes( RequestHeader requestHeader, AddNodesItemCollection nodesToAdd, AsyncCallback callback, object asyncState) { AddNodesRequest request = new AddNodesRequest(); request.RequestHeader = requestHeader; request.NodesToAdd = nodesToAdd; UpdateRequestHeader(request, requestHeader == null, "AddNodes"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginAddNodes(new AddNodesMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the AddNodes service. /// public virtual ResponseHeader EndAddNodes( IAsyncResult result, out AddNodesResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { AddNodesResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (AddNodesResponse)genericResponse; } else { AddNodesResponseMessage responseMessage = InnerChannel.EndAddNodes(result); if (responseMessage == null || responseMessage.AddNodesResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.AddNodesResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "AddNodes"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the AddNodes service. /// public virtual ResponseHeader AddNodes( RequestHeader requestHeader, AddNodesItemCollection nodesToAdd, out AddNodesResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { AddNodesRequest request = new AddNodesRequest(); AddNodesResponse response = null; request.RequestHeader = requestHeader; request.NodesToAdd = nodesToAdd; UpdateRequestHeader(request, requestHeader == null, "AddNodes"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (AddNodesResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "AddNodes"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the AddNodes service. /// public virtual IAsyncResult BeginAddNodes( RequestHeader requestHeader, AddNodesItemCollection nodesToAdd, AsyncCallback callback, object asyncState) { AddNodesRequest request = new AddNodesRequest(); request.RequestHeader = requestHeader; request.NodesToAdd = nodesToAdd; UpdateRequestHeader(request, requestHeader == null, "AddNodes"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the AddNodes service. /// public virtual ResponseHeader EndAddNodes( IAsyncResult result, out AddNodesResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { AddNodesResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (AddNodesResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "AddNodes"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the AddNodes service using async Task based request. /// public virtual async Task AddNodesAsync( RequestHeader requestHeader, AddNodesItemCollection nodesToAdd, CancellationToken ct) { AddNodesRequest request = new AddNodesRequest(); AddNodesResponse response = null; request.RequestHeader = requestHeader; request.NodesToAdd = nodesToAdd; UpdateRequestHeader(request, requestHeader == null, "AddNodes"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (AddNodesResponse)genericResponse; } finally { RequestCompleted(request, response, "AddNodes"); } return response; } #endif #endif #endregion #region AddReferences Methods #if (!OPCUA_EXCLUDE_AddReferences) #if (!NET_STANDARD) /// /// Invokes the AddReferences service. /// public virtual ResponseHeader AddReferences( RequestHeader requestHeader, AddReferencesItemCollection referencesToAdd, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { AddReferencesRequest request = new AddReferencesRequest(); AddReferencesResponse response = null; request.RequestHeader = requestHeader; request.ReferencesToAdd = referencesToAdd; UpdateRequestHeader(request, requestHeader == null, "AddReferences"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (AddReferencesResponse)genericResponse; } else { AddReferencesResponseMessage responseMessage = InnerChannel.AddReferences(new AddReferencesMessage(request)); if (responseMessage == null || responseMessage.AddReferencesResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.AddReferencesResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "AddReferences"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the AddReferences service. /// public virtual IAsyncResult BeginAddReferences( RequestHeader requestHeader, AddReferencesItemCollection referencesToAdd, AsyncCallback callback, object asyncState) { AddReferencesRequest request = new AddReferencesRequest(); request.RequestHeader = requestHeader; request.ReferencesToAdd = referencesToAdd; UpdateRequestHeader(request, requestHeader == null, "AddReferences"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginAddReferences(new AddReferencesMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the AddReferences service. /// public virtual ResponseHeader EndAddReferences( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { AddReferencesResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (AddReferencesResponse)genericResponse; } else { AddReferencesResponseMessage responseMessage = InnerChannel.EndAddReferences(result); if (responseMessage == null || responseMessage.AddReferencesResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.AddReferencesResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "AddReferences"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the AddReferences service. /// public virtual ResponseHeader AddReferences( RequestHeader requestHeader, AddReferencesItemCollection referencesToAdd, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { AddReferencesRequest request = new AddReferencesRequest(); AddReferencesResponse response = null; request.RequestHeader = requestHeader; request.ReferencesToAdd = referencesToAdd; UpdateRequestHeader(request, requestHeader == null, "AddReferences"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (AddReferencesResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "AddReferences"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the AddReferences service. /// public virtual IAsyncResult BeginAddReferences( RequestHeader requestHeader, AddReferencesItemCollection referencesToAdd, AsyncCallback callback, object asyncState) { AddReferencesRequest request = new AddReferencesRequest(); request.RequestHeader = requestHeader; request.ReferencesToAdd = referencesToAdd; UpdateRequestHeader(request, requestHeader == null, "AddReferences"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the AddReferences service. /// public virtual ResponseHeader EndAddReferences( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { AddReferencesResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (AddReferencesResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "AddReferences"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the AddReferences service using async Task based request. /// public virtual async Task AddReferencesAsync( RequestHeader requestHeader, AddReferencesItemCollection referencesToAdd, CancellationToken ct) { AddReferencesRequest request = new AddReferencesRequest(); AddReferencesResponse response = null; request.RequestHeader = requestHeader; request.ReferencesToAdd = referencesToAdd; UpdateRequestHeader(request, requestHeader == null, "AddReferences"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (AddReferencesResponse)genericResponse; } finally { RequestCompleted(request, response, "AddReferences"); } return response; } #endif #endif #endregion #region DeleteNodes Methods #if (!OPCUA_EXCLUDE_DeleteNodes) #if (!NET_STANDARD) /// /// Invokes the DeleteNodes service. /// public virtual ResponseHeader DeleteNodes( RequestHeader requestHeader, DeleteNodesItemCollection nodesToDelete, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { DeleteNodesRequest request = new DeleteNodesRequest(); DeleteNodesResponse response = null; request.RequestHeader = requestHeader; request.NodesToDelete = nodesToDelete; UpdateRequestHeader(request, requestHeader == null, "DeleteNodes"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (DeleteNodesResponse)genericResponse; } else { DeleteNodesResponseMessage responseMessage = InnerChannel.DeleteNodes(new DeleteNodesMessage(request)); if (responseMessage == null || responseMessage.DeleteNodesResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.DeleteNodesResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "DeleteNodes"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the DeleteNodes service. /// public virtual IAsyncResult BeginDeleteNodes( RequestHeader requestHeader, DeleteNodesItemCollection nodesToDelete, AsyncCallback callback, object asyncState) { DeleteNodesRequest request = new DeleteNodesRequest(); request.RequestHeader = requestHeader; request.NodesToDelete = nodesToDelete; UpdateRequestHeader(request, requestHeader == null, "DeleteNodes"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginDeleteNodes(new DeleteNodesMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the DeleteNodes service. /// public virtual ResponseHeader EndDeleteNodes( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { DeleteNodesResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (DeleteNodesResponse)genericResponse; } else { DeleteNodesResponseMessage responseMessage = InnerChannel.EndDeleteNodes(result); if (responseMessage == null || responseMessage.DeleteNodesResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.DeleteNodesResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "DeleteNodes"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the DeleteNodes service. /// public virtual ResponseHeader DeleteNodes( RequestHeader requestHeader, DeleteNodesItemCollection nodesToDelete, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { DeleteNodesRequest request = new DeleteNodesRequest(); DeleteNodesResponse response = null; request.RequestHeader = requestHeader; request.NodesToDelete = nodesToDelete; UpdateRequestHeader(request, requestHeader == null, "DeleteNodes"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (DeleteNodesResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "DeleteNodes"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the DeleteNodes service. /// public virtual IAsyncResult BeginDeleteNodes( RequestHeader requestHeader, DeleteNodesItemCollection nodesToDelete, AsyncCallback callback, object asyncState) { DeleteNodesRequest request = new DeleteNodesRequest(); request.RequestHeader = requestHeader; request.NodesToDelete = nodesToDelete; UpdateRequestHeader(request, requestHeader == null, "DeleteNodes"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the DeleteNodes service. /// public virtual ResponseHeader EndDeleteNodes( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { DeleteNodesResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (DeleteNodesResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "DeleteNodes"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the DeleteNodes service using async Task based request. /// public virtual async Task DeleteNodesAsync( RequestHeader requestHeader, DeleteNodesItemCollection nodesToDelete, CancellationToken ct) { DeleteNodesRequest request = new DeleteNodesRequest(); DeleteNodesResponse response = null; request.RequestHeader = requestHeader; request.NodesToDelete = nodesToDelete; UpdateRequestHeader(request, requestHeader == null, "DeleteNodes"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (DeleteNodesResponse)genericResponse; } finally { RequestCompleted(request, response, "DeleteNodes"); } return response; } #endif #endif #endregion #region DeleteReferences Methods #if (!OPCUA_EXCLUDE_DeleteReferences) #if (!NET_STANDARD) /// /// Invokes the DeleteReferences service. /// public virtual ResponseHeader DeleteReferences( RequestHeader requestHeader, DeleteReferencesItemCollection referencesToDelete, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { DeleteReferencesRequest request = new DeleteReferencesRequest(); DeleteReferencesResponse response = null; request.RequestHeader = requestHeader; request.ReferencesToDelete = referencesToDelete; UpdateRequestHeader(request, requestHeader == null, "DeleteReferences"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (DeleteReferencesResponse)genericResponse; } else { DeleteReferencesResponseMessage responseMessage = InnerChannel.DeleteReferences(new DeleteReferencesMessage(request)); if (responseMessage == null || responseMessage.DeleteReferencesResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.DeleteReferencesResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "DeleteReferences"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the DeleteReferences service. /// public virtual IAsyncResult BeginDeleteReferences( RequestHeader requestHeader, DeleteReferencesItemCollection referencesToDelete, AsyncCallback callback, object asyncState) { DeleteReferencesRequest request = new DeleteReferencesRequest(); request.RequestHeader = requestHeader; request.ReferencesToDelete = referencesToDelete; UpdateRequestHeader(request, requestHeader == null, "DeleteReferences"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginDeleteReferences(new DeleteReferencesMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the DeleteReferences service. /// public virtual ResponseHeader EndDeleteReferences( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { DeleteReferencesResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (DeleteReferencesResponse)genericResponse; } else { DeleteReferencesResponseMessage responseMessage = InnerChannel.EndDeleteReferences(result); if (responseMessage == null || responseMessage.DeleteReferencesResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.DeleteReferencesResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "DeleteReferences"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the DeleteReferences service. /// public virtual ResponseHeader DeleteReferences( RequestHeader requestHeader, DeleteReferencesItemCollection referencesToDelete, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { DeleteReferencesRequest request = new DeleteReferencesRequest(); DeleteReferencesResponse response = null; request.RequestHeader = requestHeader; request.ReferencesToDelete = referencesToDelete; UpdateRequestHeader(request, requestHeader == null, "DeleteReferences"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (DeleteReferencesResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "DeleteReferences"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the DeleteReferences service. /// public virtual IAsyncResult BeginDeleteReferences( RequestHeader requestHeader, DeleteReferencesItemCollection referencesToDelete, AsyncCallback callback, object asyncState) { DeleteReferencesRequest request = new DeleteReferencesRequest(); request.RequestHeader = requestHeader; request.ReferencesToDelete = referencesToDelete; UpdateRequestHeader(request, requestHeader == null, "DeleteReferences"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the DeleteReferences service. /// public virtual ResponseHeader EndDeleteReferences( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { DeleteReferencesResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (DeleteReferencesResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "DeleteReferences"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the DeleteReferences service using async Task based request. /// public virtual async Task DeleteReferencesAsync( RequestHeader requestHeader, DeleteReferencesItemCollection referencesToDelete, CancellationToken ct) { DeleteReferencesRequest request = new DeleteReferencesRequest(); DeleteReferencesResponse response = null; request.RequestHeader = requestHeader; request.ReferencesToDelete = referencesToDelete; UpdateRequestHeader(request, requestHeader == null, "DeleteReferences"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (DeleteReferencesResponse)genericResponse; } finally { RequestCompleted(request, response, "DeleteReferences"); } return response; } #endif #endif #endregion #region Browse Methods #if (!OPCUA_EXCLUDE_Browse) #if (!NET_STANDARD) /// /// Invokes the Browse service. /// public virtual ResponseHeader Browse( RequestHeader requestHeader, ViewDescription view, uint requestedMaxReferencesPerNode, BrowseDescriptionCollection nodesToBrowse, out BrowseResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { BrowseRequest request = new BrowseRequest(); BrowseResponse response = null; request.RequestHeader = requestHeader; request.View = view; request.RequestedMaxReferencesPerNode = requestedMaxReferencesPerNode; request.NodesToBrowse = nodesToBrowse; UpdateRequestHeader(request, requestHeader == null, "Browse"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (BrowseResponse)genericResponse; } else { BrowseResponseMessage responseMessage = InnerChannel.Browse(new BrowseMessage(request)); if (responseMessage == null || responseMessage.BrowseResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.BrowseResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "Browse"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the Browse service. /// public virtual IAsyncResult BeginBrowse( RequestHeader requestHeader, ViewDescription view, uint requestedMaxReferencesPerNode, BrowseDescriptionCollection nodesToBrowse, AsyncCallback callback, object asyncState) { BrowseRequest request = new BrowseRequest(); request.RequestHeader = requestHeader; request.View = view; request.RequestedMaxReferencesPerNode = requestedMaxReferencesPerNode; request.NodesToBrowse = nodesToBrowse; UpdateRequestHeader(request, requestHeader == null, "Browse"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginBrowse(new BrowseMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the Browse service. /// public virtual ResponseHeader EndBrowse( IAsyncResult result, out BrowseResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { BrowseResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (BrowseResponse)genericResponse; } else { BrowseResponseMessage responseMessage = InnerChannel.EndBrowse(result); if (responseMessage == null || responseMessage.BrowseResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.BrowseResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "Browse"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the Browse service. /// public virtual ResponseHeader Browse( RequestHeader requestHeader, ViewDescription view, uint requestedMaxReferencesPerNode, BrowseDescriptionCollection nodesToBrowse, out BrowseResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { BrowseRequest request = new BrowseRequest(); BrowseResponse response = null; request.RequestHeader = requestHeader; request.View = view; request.RequestedMaxReferencesPerNode = requestedMaxReferencesPerNode; request.NodesToBrowse = nodesToBrowse; UpdateRequestHeader(request, requestHeader == null, "Browse"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (BrowseResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "Browse"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the Browse service. /// public virtual IAsyncResult BeginBrowse( RequestHeader requestHeader, ViewDescription view, uint requestedMaxReferencesPerNode, BrowseDescriptionCollection nodesToBrowse, AsyncCallback callback, object asyncState) { BrowseRequest request = new BrowseRequest(); request.RequestHeader = requestHeader; request.View = view; request.RequestedMaxReferencesPerNode = requestedMaxReferencesPerNode; request.NodesToBrowse = nodesToBrowse; UpdateRequestHeader(request, requestHeader == null, "Browse"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the Browse service. /// public virtual ResponseHeader EndBrowse( IAsyncResult result, out BrowseResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { BrowseResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (BrowseResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "Browse"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the Browse service using async Task based request. /// public virtual async Task BrowseAsync( RequestHeader requestHeader, ViewDescription view, uint requestedMaxReferencesPerNode, BrowseDescriptionCollection nodesToBrowse, CancellationToken ct) { BrowseRequest request = new BrowseRequest(); BrowseResponse response = null; request.RequestHeader = requestHeader; request.View = view; request.RequestedMaxReferencesPerNode = requestedMaxReferencesPerNode; request.NodesToBrowse = nodesToBrowse; UpdateRequestHeader(request, requestHeader == null, "Browse"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (BrowseResponse)genericResponse; } finally { RequestCompleted(request, response, "Browse"); } return response; } #endif #endif #endregion #region BrowseNext Methods #if (!OPCUA_EXCLUDE_BrowseNext) #if (!NET_STANDARD) /// /// Invokes the BrowseNext service. /// public virtual ResponseHeader BrowseNext( RequestHeader requestHeader, bool releaseContinuationPoints, ByteStringCollection continuationPoints, out BrowseResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { BrowseNextRequest request = new BrowseNextRequest(); BrowseNextResponse response = null; request.RequestHeader = requestHeader; request.ReleaseContinuationPoints = releaseContinuationPoints; request.ContinuationPoints = continuationPoints; UpdateRequestHeader(request, requestHeader == null, "BrowseNext"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (BrowseNextResponse)genericResponse; } else { BrowseNextResponseMessage responseMessage = InnerChannel.BrowseNext(new BrowseNextMessage(request)); if (responseMessage == null || responseMessage.BrowseNextResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.BrowseNextResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "BrowseNext"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the BrowseNext service. /// public virtual IAsyncResult BeginBrowseNext( RequestHeader requestHeader, bool releaseContinuationPoints, ByteStringCollection continuationPoints, AsyncCallback callback, object asyncState) { BrowseNextRequest request = new BrowseNextRequest(); request.RequestHeader = requestHeader; request.ReleaseContinuationPoints = releaseContinuationPoints; request.ContinuationPoints = continuationPoints; UpdateRequestHeader(request, requestHeader == null, "BrowseNext"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginBrowseNext(new BrowseNextMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the BrowseNext service. /// public virtual ResponseHeader EndBrowseNext( IAsyncResult result, out BrowseResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { BrowseNextResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (BrowseNextResponse)genericResponse; } else { BrowseNextResponseMessage responseMessage = InnerChannel.EndBrowseNext(result); if (responseMessage == null || responseMessage.BrowseNextResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.BrowseNextResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "BrowseNext"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the BrowseNext service. /// public virtual ResponseHeader BrowseNext( RequestHeader requestHeader, bool releaseContinuationPoints, ByteStringCollection continuationPoints, out BrowseResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { BrowseNextRequest request = new BrowseNextRequest(); BrowseNextResponse response = null; request.RequestHeader = requestHeader; request.ReleaseContinuationPoints = releaseContinuationPoints; request.ContinuationPoints = continuationPoints; UpdateRequestHeader(request, requestHeader == null, "BrowseNext"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (BrowseNextResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "BrowseNext"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the BrowseNext service. /// public virtual IAsyncResult BeginBrowseNext( RequestHeader requestHeader, bool releaseContinuationPoints, ByteStringCollection continuationPoints, AsyncCallback callback, object asyncState) { BrowseNextRequest request = new BrowseNextRequest(); request.RequestHeader = requestHeader; request.ReleaseContinuationPoints = releaseContinuationPoints; request.ContinuationPoints = continuationPoints; UpdateRequestHeader(request, requestHeader == null, "BrowseNext"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the BrowseNext service. /// public virtual ResponseHeader EndBrowseNext( IAsyncResult result, out BrowseResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { BrowseNextResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (BrowseNextResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "BrowseNext"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the BrowseNext service using async Task based request. /// public virtual async Task BrowseNextAsync( RequestHeader requestHeader, bool releaseContinuationPoints, ByteStringCollection continuationPoints, CancellationToken ct) { BrowseNextRequest request = new BrowseNextRequest(); BrowseNextResponse response = null; request.RequestHeader = requestHeader; request.ReleaseContinuationPoints = releaseContinuationPoints; request.ContinuationPoints = continuationPoints; UpdateRequestHeader(request, requestHeader == null, "BrowseNext"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (BrowseNextResponse)genericResponse; } finally { RequestCompleted(request, response, "BrowseNext"); } return response; } #endif #endif #endregion #region TranslateBrowsePathsToNodeIds Methods #if (!OPCUA_EXCLUDE_TranslateBrowsePathsToNodeIds) #if (!NET_STANDARD) /// /// Invokes the TranslateBrowsePathsToNodeIds service. /// public virtual ResponseHeader TranslateBrowsePathsToNodeIds( RequestHeader requestHeader, BrowsePathCollection browsePaths, out BrowsePathResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { TranslateBrowsePathsToNodeIdsRequest request = new TranslateBrowsePathsToNodeIdsRequest(); TranslateBrowsePathsToNodeIdsResponse response = null; request.RequestHeader = requestHeader; request.BrowsePaths = browsePaths; UpdateRequestHeader(request, requestHeader == null, "TranslateBrowsePathsToNodeIds"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (TranslateBrowsePathsToNodeIdsResponse)genericResponse; } else { TranslateBrowsePathsToNodeIdsResponseMessage responseMessage = InnerChannel.TranslateBrowsePathsToNodeIds(new TranslateBrowsePathsToNodeIdsMessage(request)); if (responseMessage == null || responseMessage.TranslateBrowsePathsToNodeIdsResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.TranslateBrowsePathsToNodeIdsResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "TranslateBrowsePathsToNodeIds"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the TranslateBrowsePathsToNodeIds service. /// public virtual IAsyncResult BeginTranslateBrowsePathsToNodeIds( RequestHeader requestHeader, BrowsePathCollection browsePaths, AsyncCallback callback, object asyncState) { TranslateBrowsePathsToNodeIdsRequest request = new TranslateBrowsePathsToNodeIdsRequest(); request.RequestHeader = requestHeader; request.BrowsePaths = browsePaths; UpdateRequestHeader(request, requestHeader == null, "TranslateBrowsePathsToNodeIds"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginTranslateBrowsePathsToNodeIds(new TranslateBrowsePathsToNodeIdsMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the TranslateBrowsePathsToNodeIds service. /// public virtual ResponseHeader EndTranslateBrowsePathsToNodeIds( IAsyncResult result, out BrowsePathResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { TranslateBrowsePathsToNodeIdsResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (TranslateBrowsePathsToNodeIdsResponse)genericResponse; } else { TranslateBrowsePathsToNodeIdsResponseMessage responseMessage = InnerChannel.EndTranslateBrowsePathsToNodeIds(result); if (responseMessage == null || responseMessage.TranslateBrowsePathsToNodeIdsResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.TranslateBrowsePathsToNodeIdsResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "TranslateBrowsePathsToNodeIds"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the TranslateBrowsePathsToNodeIds service. /// public virtual ResponseHeader TranslateBrowsePathsToNodeIds( RequestHeader requestHeader, BrowsePathCollection browsePaths, out BrowsePathResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { TranslateBrowsePathsToNodeIdsRequest request = new TranslateBrowsePathsToNodeIdsRequest(); TranslateBrowsePathsToNodeIdsResponse response = null; request.RequestHeader = requestHeader; request.BrowsePaths = browsePaths; UpdateRequestHeader(request, requestHeader == null, "TranslateBrowsePathsToNodeIds"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (TranslateBrowsePathsToNodeIdsResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "TranslateBrowsePathsToNodeIds"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the TranslateBrowsePathsToNodeIds service. /// public virtual IAsyncResult BeginTranslateBrowsePathsToNodeIds( RequestHeader requestHeader, BrowsePathCollection browsePaths, AsyncCallback callback, object asyncState) { TranslateBrowsePathsToNodeIdsRequest request = new TranslateBrowsePathsToNodeIdsRequest(); request.RequestHeader = requestHeader; request.BrowsePaths = browsePaths; UpdateRequestHeader(request, requestHeader == null, "TranslateBrowsePathsToNodeIds"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the TranslateBrowsePathsToNodeIds service. /// public virtual ResponseHeader EndTranslateBrowsePathsToNodeIds( IAsyncResult result, out BrowsePathResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { TranslateBrowsePathsToNodeIdsResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (TranslateBrowsePathsToNodeIdsResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "TranslateBrowsePathsToNodeIds"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the TranslateBrowsePathsToNodeIds service using async Task based request. /// public virtual async Task TranslateBrowsePathsToNodeIdsAsync( RequestHeader requestHeader, BrowsePathCollection browsePaths, CancellationToken ct) { TranslateBrowsePathsToNodeIdsRequest request = new TranslateBrowsePathsToNodeIdsRequest(); TranslateBrowsePathsToNodeIdsResponse response = null; request.RequestHeader = requestHeader; request.BrowsePaths = browsePaths; UpdateRequestHeader(request, requestHeader == null, "TranslateBrowsePathsToNodeIds"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (TranslateBrowsePathsToNodeIdsResponse)genericResponse; } finally { RequestCompleted(request, response, "TranslateBrowsePathsToNodeIds"); } return response; } #endif #endif #endregion #region RegisterNodes Methods #if (!OPCUA_EXCLUDE_RegisterNodes) #if (!NET_STANDARD) /// /// Invokes the RegisterNodes service. /// public virtual ResponseHeader RegisterNodes( RequestHeader requestHeader, NodeIdCollection nodesToRegister, out NodeIdCollection registeredNodeIds) { RegisterNodesRequest request = new RegisterNodesRequest(); RegisterNodesResponse response = null; request.RequestHeader = requestHeader; request.NodesToRegister = nodesToRegister; UpdateRequestHeader(request, requestHeader == null, "RegisterNodes"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (RegisterNodesResponse)genericResponse; } else { RegisterNodesResponseMessage responseMessage = InnerChannel.RegisterNodes(new RegisterNodesMessage(request)); if (responseMessage == null || responseMessage.RegisterNodesResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.RegisterNodesResponse; ValidateResponse(response.ResponseHeader); } registeredNodeIds = response.RegisteredNodeIds; } finally { RequestCompleted(request, response, "RegisterNodes"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the RegisterNodes service. /// public virtual IAsyncResult BeginRegisterNodes( RequestHeader requestHeader, NodeIdCollection nodesToRegister, AsyncCallback callback, object asyncState) { RegisterNodesRequest request = new RegisterNodesRequest(); request.RequestHeader = requestHeader; request.NodesToRegister = nodesToRegister; UpdateRequestHeader(request, requestHeader == null, "RegisterNodes"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginRegisterNodes(new RegisterNodesMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the RegisterNodes service. /// public virtual ResponseHeader EndRegisterNodes( IAsyncResult result, out NodeIdCollection registeredNodeIds) { RegisterNodesResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (RegisterNodesResponse)genericResponse; } else { RegisterNodesResponseMessage responseMessage = InnerChannel.EndRegisterNodes(result); if (responseMessage == null || responseMessage.RegisterNodesResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.RegisterNodesResponse; ValidateResponse(response.ResponseHeader); } registeredNodeIds = response.RegisteredNodeIds; } finally { RequestCompleted(null, response, "RegisterNodes"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the RegisterNodes service. /// public virtual ResponseHeader RegisterNodes( RequestHeader requestHeader, NodeIdCollection nodesToRegister, out NodeIdCollection registeredNodeIds) { RegisterNodesRequest request = new RegisterNodesRequest(); RegisterNodesResponse response = null; request.RequestHeader = requestHeader; request.NodesToRegister = nodesToRegister; UpdateRequestHeader(request, requestHeader == null, "RegisterNodes"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (RegisterNodesResponse)genericResponse; registeredNodeIds = response.RegisteredNodeIds; } finally { RequestCompleted(request, response, "RegisterNodes"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the RegisterNodes service. /// public virtual IAsyncResult BeginRegisterNodes( RequestHeader requestHeader, NodeIdCollection nodesToRegister, AsyncCallback callback, object asyncState) { RegisterNodesRequest request = new RegisterNodesRequest(); request.RequestHeader = requestHeader; request.NodesToRegister = nodesToRegister; UpdateRequestHeader(request, requestHeader == null, "RegisterNodes"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the RegisterNodes service. /// public virtual ResponseHeader EndRegisterNodes( IAsyncResult result, out NodeIdCollection registeredNodeIds) { RegisterNodesResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (RegisterNodesResponse)genericResponse; registeredNodeIds = response.RegisteredNodeIds; } finally { RequestCompleted(null, response, "RegisterNodes"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the RegisterNodes service using async Task based request. /// public virtual async Task RegisterNodesAsync( RequestHeader requestHeader, NodeIdCollection nodesToRegister, CancellationToken ct) { RegisterNodesRequest request = new RegisterNodesRequest(); RegisterNodesResponse response = null; request.RequestHeader = requestHeader; request.NodesToRegister = nodesToRegister; UpdateRequestHeader(request, requestHeader == null, "RegisterNodes"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (RegisterNodesResponse)genericResponse; } finally { RequestCompleted(request, response, "RegisterNodes"); } return response; } #endif #endif #endregion #region UnregisterNodes Methods #if (!OPCUA_EXCLUDE_UnregisterNodes) #if (!NET_STANDARD) /// /// Invokes the UnregisterNodes service. /// public virtual ResponseHeader UnregisterNodes( RequestHeader requestHeader, NodeIdCollection nodesToUnregister) { UnregisterNodesRequest request = new UnregisterNodesRequest(); UnregisterNodesResponse response = null; request.RequestHeader = requestHeader; request.NodesToUnregister = nodesToUnregister; UpdateRequestHeader(request, requestHeader == null, "UnregisterNodes"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (UnregisterNodesResponse)genericResponse; } else { UnregisterNodesResponseMessage responseMessage = InnerChannel.UnregisterNodes(new UnregisterNodesMessage(request)); if (responseMessage == null || responseMessage.UnregisterNodesResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.UnregisterNodesResponse; ValidateResponse(response.ResponseHeader); } } finally { RequestCompleted(request, response, "UnregisterNodes"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the UnregisterNodes service. /// public virtual IAsyncResult BeginUnregisterNodes( RequestHeader requestHeader, NodeIdCollection nodesToUnregister, AsyncCallback callback, object asyncState) { UnregisterNodesRequest request = new UnregisterNodesRequest(); request.RequestHeader = requestHeader; request.NodesToUnregister = nodesToUnregister; UpdateRequestHeader(request, requestHeader == null, "UnregisterNodes"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginUnregisterNodes(new UnregisterNodesMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the UnregisterNodes service. /// public virtual ResponseHeader EndUnregisterNodes( IAsyncResult result) { UnregisterNodesResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (UnregisterNodesResponse)genericResponse; } else { UnregisterNodesResponseMessage responseMessage = InnerChannel.EndUnregisterNodes(result); if (responseMessage == null || responseMessage.UnregisterNodesResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.UnregisterNodesResponse; ValidateResponse(response.ResponseHeader); } } finally { RequestCompleted(null, response, "UnregisterNodes"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the UnregisterNodes service. /// public virtual ResponseHeader UnregisterNodes( RequestHeader requestHeader, NodeIdCollection nodesToUnregister) { UnregisterNodesRequest request = new UnregisterNodesRequest(); UnregisterNodesResponse response = null; request.RequestHeader = requestHeader; request.NodesToUnregister = nodesToUnregister; UpdateRequestHeader(request, requestHeader == null, "UnregisterNodes"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (UnregisterNodesResponse)genericResponse; } finally { RequestCompleted(request, response, "UnregisterNodes"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the UnregisterNodes service. /// public virtual IAsyncResult BeginUnregisterNodes( RequestHeader requestHeader, NodeIdCollection nodesToUnregister, AsyncCallback callback, object asyncState) { UnregisterNodesRequest request = new UnregisterNodesRequest(); request.RequestHeader = requestHeader; request.NodesToUnregister = nodesToUnregister; UpdateRequestHeader(request, requestHeader == null, "UnregisterNodes"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the UnregisterNodes service. /// public virtual ResponseHeader EndUnregisterNodes( IAsyncResult result) { UnregisterNodesResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (UnregisterNodesResponse)genericResponse; } finally { RequestCompleted(null, response, "UnregisterNodes"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the UnregisterNodes service using async Task based request. /// public virtual async Task UnregisterNodesAsync( RequestHeader requestHeader, NodeIdCollection nodesToUnregister, CancellationToken ct) { UnregisterNodesRequest request = new UnregisterNodesRequest(); UnregisterNodesResponse response = null; request.RequestHeader = requestHeader; request.NodesToUnregister = nodesToUnregister; UpdateRequestHeader(request, requestHeader == null, "UnregisterNodes"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (UnregisterNodesResponse)genericResponse; } finally { RequestCompleted(request, response, "UnregisterNodes"); } return response; } #endif #endif #endregion #region QueryFirst Methods #if (!OPCUA_EXCLUDE_QueryFirst) #if (!NET_STANDARD) /// /// Invokes the QueryFirst service. /// public virtual ResponseHeader QueryFirst( RequestHeader requestHeader, ViewDescription view, NodeTypeDescriptionCollection nodeTypes, ContentFilter filter, uint maxDataSetsToReturn, uint maxReferencesToReturn, out QueryDataSetCollection queryDataSets, out byte[] continuationPoint, out ParsingResultCollection parsingResults, out DiagnosticInfoCollection diagnosticInfos, out ContentFilterResult filterResult) { QueryFirstRequest request = new QueryFirstRequest(); QueryFirstResponse response = null; request.RequestHeader = requestHeader; request.View = view; request.NodeTypes = nodeTypes; request.Filter = filter; request.MaxDataSetsToReturn = maxDataSetsToReturn; request.MaxReferencesToReturn = maxReferencesToReturn; UpdateRequestHeader(request, requestHeader == null, "QueryFirst"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (QueryFirstResponse)genericResponse; } else { QueryFirstResponseMessage responseMessage = InnerChannel.QueryFirst(new QueryFirstMessage(request)); if (responseMessage == null || responseMessage.QueryFirstResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.QueryFirstResponse; ValidateResponse(response.ResponseHeader); } queryDataSets = response.QueryDataSets; continuationPoint = response.ContinuationPoint; parsingResults = response.ParsingResults; diagnosticInfos = response.DiagnosticInfos; filterResult = response.FilterResult; } finally { RequestCompleted(request, response, "QueryFirst"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the QueryFirst service. /// public virtual IAsyncResult BeginQueryFirst( RequestHeader requestHeader, ViewDescription view, NodeTypeDescriptionCollection nodeTypes, ContentFilter filter, uint maxDataSetsToReturn, uint maxReferencesToReturn, AsyncCallback callback, object asyncState) { QueryFirstRequest request = new QueryFirstRequest(); request.RequestHeader = requestHeader; request.View = view; request.NodeTypes = nodeTypes; request.Filter = filter; request.MaxDataSetsToReturn = maxDataSetsToReturn; request.MaxReferencesToReturn = maxReferencesToReturn; UpdateRequestHeader(request, requestHeader == null, "QueryFirst"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginQueryFirst(new QueryFirstMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the QueryFirst service. /// public virtual ResponseHeader EndQueryFirst( IAsyncResult result, out QueryDataSetCollection queryDataSets, out byte[] continuationPoint, out ParsingResultCollection parsingResults, out DiagnosticInfoCollection diagnosticInfos, out ContentFilterResult filterResult) { QueryFirstResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (QueryFirstResponse)genericResponse; } else { QueryFirstResponseMessage responseMessage = InnerChannel.EndQueryFirst(result); if (responseMessage == null || responseMessage.QueryFirstResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.QueryFirstResponse; ValidateResponse(response.ResponseHeader); } queryDataSets = response.QueryDataSets; continuationPoint = response.ContinuationPoint; parsingResults = response.ParsingResults; diagnosticInfos = response.DiagnosticInfos; filterResult = response.FilterResult; } finally { RequestCompleted(null, response, "QueryFirst"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the QueryFirst service. /// public virtual ResponseHeader QueryFirst( RequestHeader requestHeader, ViewDescription view, NodeTypeDescriptionCollection nodeTypes, ContentFilter filter, uint maxDataSetsToReturn, uint maxReferencesToReturn, out QueryDataSetCollection queryDataSets, out byte[] continuationPoint, out ParsingResultCollection parsingResults, out DiagnosticInfoCollection diagnosticInfos, out ContentFilterResult filterResult) { QueryFirstRequest request = new QueryFirstRequest(); QueryFirstResponse response = null; request.RequestHeader = requestHeader; request.View = view; request.NodeTypes = nodeTypes; request.Filter = filter; request.MaxDataSetsToReturn = maxDataSetsToReturn; request.MaxReferencesToReturn = maxReferencesToReturn; UpdateRequestHeader(request, requestHeader == null, "QueryFirst"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (QueryFirstResponse)genericResponse; queryDataSets = response.QueryDataSets; continuationPoint = response.ContinuationPoint; parsingResults = response.ParsingResults; diagnosticInfos = response.DiagnosticInfos; filterResult = response.FilterResult; } finally { RequestCompleted(request, response, "QueryFirst"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the QueryFirst service. /// public virtual IAsyncResult BeginQueryFirst( RequestHeader requestHeader, ViewDescription view, NodeTypeDescriptionCollection nodeTypes, ContentFilter filter, uint maxDataSetsToReturn, uint maxReferencesToReturn, AsyncCallback callback, object asyncState) { QueryFirstRequest request = new QueryFirstRequest(); request.RequestHeader = requestHeader; request.View = view; request.NodeTypes = nodeTypes; request.Filter = filter; request.MaxDataSetsToReturn = maxDataSetsToReturn; request.MaxReferencesToReturn = maxReferencesToReturn; UpdateRequestHeader(request, requestHeader == null, "QueryFirst"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the QueryFirst service. /// public virtual ResponseHeader EndQueryFirst( IAsyncResult result, out QueryDataSetCollection queryDataSets, out byte[] continuationPoint, out ParsingResultCollection parsingResults, out DiagnosticInfoCollection diagnosticInfos, out ContentFilterResult filterResult) { QueryFirstResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (QueryFirstResponse)genericResponse; queryDataSets = response.QueryDataSets; continuationPoint = response.ContinuationPoint; parsingResults = response.ParsingResults; diagnosticInfos = response.DiagnosticInfos; filterResult = response.FilterResult; } finally { RequestCompleted(null, response, "QueryFirst"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the QueryFirst service using async Task based request. /// public virtual async Task QueryFirstAsync( RequestHeader requestHeader, ViewDescription view, NodeTypeDescriptionCollection nodeTypes, ContentFilter filter, uint maxDataSetsToReturn, uint maxReferencesToReturn, CancellationToken ct) { QueryFirstRequest request = new QueryFirstRequest(); QueryFirstResponse response = null; request.RequestHeader = requestHeader; request.View = view; request.NodeTypes = nodeTypes; request.Filter = filter; request.MaxDataSetsToReturn = maxDataSetsToReturn; request.MaxReferencesToReturn = maxReferencesToReturn; UpdateRequestHeader(request, requestHeader == null, "QueryFirst"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (QueryFirstResponse)genericResponse; } finally { RequestCompleted(request, response, "QueryFirst"); } return response; } #endif #endif #endregion #region QueryNext Methods #if (!OPCUA_EXCLUDE_QueryNext) #if (!NET_STANDARD) /// /// Invokes the QueryNext service. /// public virtual ResponseHeader QueryNext( RequestHeader requestHeader, bool releaseContinuationPoint, byte[] continuationPoint, out QueryDataSetCollection queryDataSets, out byte[] revisedContinuationPoint) { QueryNextRequest request = new QueryNextRequest(); QueryNextResponse response = null; request.RequestHeader = requestHeader; request.ReleaseContinuationPoint = releaseContinuationPoint; request.ContinuationPoint = continuationPoint; UpdateRequestHeader(request, requestHeader == null, "QueryNext"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (QueryNextResponse)genericResponse; } else { QueryNextResponseMessage responseMessage = InnerChannel.QueryNext(new QueryNextMessage(request)); if (responseMessage == null || responseMessage.QueryNextResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.QueryNextResponse; ValidateResponse(response.ResponseHeader); } queryDataSets = response.QueryDataSets; revisedContinuationPoint = response.RevisedContinuationPoint; } finally { RequestCompleted(request, response, "QueryNext"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the QueryNext service. /// public virtual IAsyncResult BeginQueryNext( RequestHeader requestHeader, bool releaseContinuationPoint, byte[] continuationPoint, AsyncCallback callback, object asyncState) { QueryNextRequest request = new QueryNextRequest(); request.RequestHeader = requestHeader; request.ReleaseContinuationPoint = releaseContinuationPoint; request.ContinuationPoint = continuationPoint; UpdateRequestHeader(request, requestHeader == null, "QueryNext"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginQueryNext(new QueryNextMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the QueryNext service. /// public virtual ResponseHeader EndQueryNext( IAsyncResult result, out QueryDataSetCollection queryDataSets, out byte[] revisedContinuationPoint) { QueryNextResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (QueryNextResponse)genericResponse; } else { QueryNextResponseMessage responseMessage = InnerChannel.EndQueryNext(result); if (responseMessage == null || responseMessage.QueryNextResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.QueryNextResponse; ValidateResponse(response.ResponseHeader); } queryDataSets = response.QueryDataSets; revisedContinuationPoint = response.RevisedContinuationPoint; } finally { RequestCompleted(null, response, "QueryNext"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the QueryNext service. /// public virtual ResponseHeader QueryNext( RequestHeader requestHeader, bool releaseContinuationPoint, byte[] continuationPoint, out QueryDataSetCollection queryDataSets, out byte[] revisedContinuationPoint) { QueryNextRequest request = new QueryNextRequest(); QueryNextResponse response = null; request.RequestHeader = requestHeader; request.ReleaseContinuationPoint = releaseContinuationPoint; request.ContinuationPoint = continuationPoint; UpdateRequestHeader(request, requestHeader == null, "QueryNext"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (QueryNextResponse)genericResponse; queryDataSets = response.QueryDataSets; revisedContinuationPoint = response.RevisedContinuationPoint; } finally { RequestCompleted(request, response, "QueryNext"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the QueryNext service. /// public virtual IAsyncResult BeginQueryNext( RequestHeader requestHeader, bool releaseContinuationPoint, byte[] continuationPoint, AsyncCallback callback, object asyncState) { QueryNextRequest request = new QueryNextRequest(); request.RequestHeader = requestHeader; request.ReleaseContinuationPoint = releaseContinuationPoint; request.ContinuationPoint = continuationPoint; UpdateRequestHeader(request, requestHeader == null, "QueryNext"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the QueryNext service. /// public virtual ResponseHeader EndQueryNext( IAsyncResult result, out QueryDataSetCollection queryDataSets, out byte[] revisedContinuationPoint) { QueryNextResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (QueryNextResponse)genericResponse; queryDataSets = response.QueryDataSets; revisedContinuationPoint = response.RevisedContinuationPoint; } finally { RequestCompleted(null, response, "QueryNext"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the QueryNext service using async Task based request. /// public virtual async Task QueryNextAsync( RequestHeader requestHeader, bool releaseContinuationPoint, byte[] continuationPoint, CancellationToken ct) { QueryNextRequest request = new QueryNextRequest(); QueryNextResponse response = null; request.RequestHeader = requestHeader; request.ReleaseContinuationPoint = releaseContinuationPoint; request.ContinuationPoint = continuationPoint; UpdateRequestHeader(request, requestHeader == null, "QueryNext"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (QueryNextResponse)genericResponse; } finally { RequestCompleted(request, response, "QueryNext"); } return response; } #endif #endif #endregion #region Read Methods #if (!OPCUA_EXCLUDE_Read) #if (!NET_STANDARD) /// /// Invokes the Read service. /// public virtual ResponseHeader Read( RequestHeader requestHeader, double maxAge, TimestampsToReturn timestampsToReturn, ReadValueIdCollection nodesToRead, out DataValueCollection results, out DiagnosticInfoCollection diagnosticInfos) { ReadRequest request = new ReadRequest(); ReadResponse response = null; request.RequestHeader = requestHeader; request.MaxAge = maxAge; request.TimestampsToReturn = timestampsToReturn; request.NodesToRead = nodesToRead; UpdateRequestHeader(request, requestHeader == null, "Read"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (ReadResponse)genericResponse; } else { ReadResponseMessage responseMessage = InnerChannel.Read(new ReadMessage(request)); if (responseMessage == null || responseMessage.ReadResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.ReadResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "Read"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the Read service. /// public virtual IAsyncResult BeginRead( RequestHeader requestHeader, double maxAge, TimestampsToReturn timestampsToReturn, ReadValueIdCollection nodesToRead, AsyncCallback callback, object asyncState) { ReadRequest request = new ReadRequest(); request.RequestHeader = requestHeader; request.MaxAge = maxAge; request.TimestampsToReturn = timestampsToReturn; request.NodesToRead = nodesToRead; UpdateRequestHeader(request, requestHeader == null, "Read"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginRead(new ReadMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the Read service. /// public virtual ResponseHeader EndRead( IAsyncResult result, out DataValueCollection results, out DiagnosticInfoCollection diagnosticInfos) { ReadResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (ReadResponse)genericResponse; } else { ReadResponseMessage responseMessage = InnerChannel.EndRead(result); if (responseMessage == null || responseMessage.ReadResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.ReadResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "Read"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the Read service. /// public virtual ResponseHeader Read( RequestHeader requestHeader, double maxAge, TimestampsToReturn timestampsToReturn, ReadValueIdCollection nodesToRead, out DataValueCollection results, out DiagnosticInfoCollection diagnosticInfos) { ReadRequest request = new ReadRequest(); ReadResponse response = null; request.RequestHeader = requestHeader; request.MaxAge = maxAge; request.TimestampsToReturn = timestampsToReturn; request.NodesToRead = nodesToRead; UpdateRequestHeader(request, requestHeader == null, "Read"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (ReadResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "Read"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the Read service. /// public virtual IAsyncResult BeginRead( RequestHeader requestHeader, double maxAge, TimestampsToReturn timestampsToReturn, ReadValueIdCollection nodesToRead, AsyncCallback callback, object asyncState) { ReadRequest request = new ReadRequest(); request.RequestHeader = requestHeader; request.MaxAge = maxAge; request.TimestampsToReturn = timestampsToReturn; request.NodesToRead = nodesToRead; UpdateRequestHeader(request, requestHeader == null, "Read"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the Read service. /// public virtual ResponseHeader EndRead( IAsyncResult result, out DataValueCollection results, out DiagnosticInfoCollection diagnosticInfos) { ReadResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (ReadResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "Read"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the Read service using async Task based request. /// public virtual async Task ReadAsync( RequestHeader requestHeader, double maxAge, TimestampsToReturn timestampsToReturn, ReadValueIdCollection nodesToRead, CancellationToken ct) { ReadRequest request = new ReadRequest(); ReadResponse response = null; request.RequestHeader = requestHeader; request.MaxAge = maxAge; request.TimestampsToReturn = timestampsToReturn; request.NodesToRead = nodesToRead; UpdateRequestHeader(request, requestHeader == null, "Read"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (ReadResponse)genericResponse; } finally { RequestCompleted(request, response, "Read"); } return response; } #endif #endif #endregion #region HistoryRead Methods #if (!OPCUA_EXCLUDE_HistoryRead) #if (!NET_STANDARD) /// /// Invokes the HistoryRead service. /// public virtual ResponseHeader HistoryRead( RequestHeader requestHeader, ExtensionObject historyReadDetails, TimestampsToReturn timestampsToReturn, bool releaseContinuationPoints, HistoryReadValueIdCollection nodesToRead, out HistoryReadResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { HistoryReadRequest request = new HistoryReadRequest(); HistoryReadResponse response = null; request.RequestHeader = requestHeader; request.HistoryReadDetails = historyReadDetails; request.TimestampsToReturn = timestampsToReturn; request.ReleaseContinuationPoints = releaseContinuationPoints; request.NodesToRead = nodesToRead; UpdateRequestHeader(request, requestHeader == null, "HistoryRead"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (HistoryReadResponse)genericResponse; } else { HistoryReadResponseMessage responseMessage = InnerChannel.HistoryRead(new HistoryReadMessage(request)); if (responseMessage == null || responseMessage.HistoryReadResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.HistoryReadResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "HistoryRead"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the HistoryRead service. /// public virtual IAsyncResult BeginHistoryRead( RequestHeader requestHeader, ExtensionObject historyReadDetails, TimestampsToReturn timestampsToReturn, bool releaseContinuationPoints, HistoryReadValueIdCollection nodesToRead, AsyncCallback callback, object asyncState) { HistoryReadRequest request = new HistoryReadRequest(); request.RequestHeader = requestHeader; request.HistoryReadDetails = historyReadDetails; request.TimestampsToReturn = timestampsToReturn; request.ReleaseContinuationPoints = releaseContinuationPoints; request.NodesToRead = nodesToRead; UpdateRequestHeader(request, requestHeader == null, "HistoryRead"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginHistoryRead(new HistoryReadMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the HistoryRead service. /// public virtual ResponseHeader EndHistoryRead( IAsyncResult result, out HistoryReadResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { HistoryReadResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (HistoryReadResponse)genericResponse; } else { HistoryReadResponseMessage responseMessage = InnerChannel.EndHistoryRead(result); if (responseMessage == null || responseMessage.HistoryReadResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.HistoryReadResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "HistoryRead"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the HistoryRead service. /// public virtual ResponseHeader HistoryRead( RequestHeader requestHeader, ExtensionObject historyReadDetails, TimestampsToReturn timestampsToReturn, bool releaseContinuationPoints, HistoryReadValueIdCollection nodesToRead, out HistoryReadResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { HistoryReadRequest request = new HistoryReadRequest(); HistoryReadResponse response = null; request.RequestHeader = requestHeader; request.HistoryReadDetails = historyReadDetails; request.TimestampsToReturn = timestampsToReturn; request.ReleaseContinuationPoints = releaseContinuationPoints; request.NodesToRead = nodesToRead; UpdateRequestHeader(request, requestHeader == null, "HistoryRead"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (HistoryReadResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "HistoryRead"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the HistoryRead service. /// public virtual IAsyncResult BeginHistoryRead( RequestHeader requestHeader, ExtensionObject historyReadDetails, TimestampsToReturn timestampsToReturn, bool releaseContinuationPoints, HistoryReadValueIdCollection nodesToRead, AsyncCallback callback, object asyncState) { HistoryReadRequest request = new HistoryReadRequest(); request.RequestHeader = requestHeader; request.HistoryReadDetails = historyReadDetails; request.TimestampsToReturn = timestampsToReturn; request.ReleaseContinuationPoints = releaseContinuationPoints; request.NodesToRead = nodesToRead; UpdateRequestHeader(request, requestHeader == null, "HistoryRead"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the HistoryRead service. /// public virtual ResponseHeader EndHistoryRead( IAsyncResult result, out HistoryReadResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { HistoryReadResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (HistoryReadResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "HistoryRead"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the HistoryRead service using async Task based request. /// public virtual async Task HistoryReadAsync( RequestHeader requestHeader, ExtensionObject historyReadDetails, TimestampsToReturn timestampsToReturn, bool releaseContinuationPoints, HistoryReadValueIdCollection nodesToRead, CancellationToken ct) { HistoryReadRequest request = new HistoryReadRequest(); HistoryReadResponse response = null; request.RequestHeader = requestHeader; request.HistoryReadDetails = historyReadDetails; request.TimestampsToReturn = timestampsToReturn; request.ReleaseContinuationPoints = releaseContinuationPoints; request.NodesToRead = nodesToRead; UpdateRequestHeader(request, requestHeader == null, "HistoryRead"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (HistoryReadResponse)genericResponse; } finally { RequestCompleted(request, response, "HistoryRead"); } return response; } #endif #endif #endregion #region Write Methods #if (!OPCUA_EXCLUDE_Write) #if (!NET_STANDARD) /// /// Invokes the Write service. /// public virtual ResponseHeader Write( RequestHeader requestHeader, WriteValueCollection nodesToWrite, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { WriteRequest request = new WriteRequest(); WriteResponse response = null; request.RequestHeader = requestHeader; request.NodesToWrite = nodesToWrite; UpdateRequestHeader(request, requestHeader == null, "Write"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (WriteResponse)genericResponse; } else { WriteResponseMessage responseMessage = InnerChannel.Write(new WriteMessage(request)); if (responseMessage == null || responseMessage.WriteResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.WriteResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "Write"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the Write service. /// public virtual IAsyncResult BeginWrite( RequestHeader requestHeader, WriteValueCollection nodesToWrite, AsyncCallback callback, object asyncState) { WriteRequest request = new WriteRequest(); request.RequestHeader = requestHeader; request.NodesToWrite = nodesToWrite; UpdateRequestHeader(request, requestHeader == null, "Write"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginWrite(new WriteMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the Write service. /// public virtual ResponseHeader EndWrite( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { WriteResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (WriteResponse)genericResponse; } else { WriteResponseMessage responseMessage = InnerChannel.EndWrite(result); if (responseMessage == null || responseMessage.WriteResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.WriteResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "Write"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the Write service. /// public virtual ResponseHeader Write( RequestHeader requestHeader, WriteValueCollection nodesToWrite, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { WriteRequest request = new WriteRequest(); WriteResponse response = null; request.RequestHeader = requestHeader; request.NodesToWrite = nodesToWrite; UpdateRequestHeader(request, requestHeader == null, "Write"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (WriteResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "Write"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the Write service. /// public virtual IAsyncResult BeginWrite( RequestHeader requestHeader, WriteValueCollection nodesToWrite, AsyncCallback callback, object asyncState) { WriteRequest request = new WriteRequest(); request.RequestHeader = requestHeader; request.NodesToWrite = nodesToWrite; UpdateRequestHeader(request, requestHeader == null, "Write"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the Write service. /// public virtual ResponseHeader EndWrite( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { WriteResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (WriteResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "Write"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the Write service using async Task based request. /// public virtual async Task WriteAsync( RequestHeader requestHeader, WriteValueCollection nodesToWrite, CancellationToken ct) { WriteRequest request = new WriteRequest(); WriteResponse response = null; request.RequestHeader = requestHeader; request.NodesToWrite = nodesToWrite; UpdateRequestHeader(request, requestHeader == null, "Write"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (WriteResponse)genericResponse; } finally { RequestCompleted(request, response, "Write"); } return response; } #endif #endif #endregion #region HistoryUpdate Methods #if (!OPCUA_EXCLUDE_HistoryUpdate) #if (!NET_STANDARD) /// /// Invokes the HistoryUpdate service. /// public virtual ResponseHeader HistoryUpdate( RequestHeader requestHeader, ExtensionObjectCollection historyUpdateDetails, out HistoryUpdateResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { HistoryUpdateRequest request = new HistoryUpdateRequest(); HistoryUpdateResponse response = null; request.RequestHeader = requestHeader; request.HistoryUpdateDetails = historyUpdateDetails; UpdateRequestHeader(request, requestHeader == null, "HistoryUpdate"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (HistoryUpdateResponse)genericResponse; } else { HistoryUpdateResponseMessage responseMessage = InnerChannel.HistoryUpdate(new HistoryUpdateMessage(request)); if (responseMessage == null || responseMessage.HistoryUpdateResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.HistoryUpdateResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "HistoryUpdate"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the HistoryUpdate service. /// public virtual IAsyncResult BeginHistoryUpdate( RequestHeader requestHeader, ExtensionObjectCollection historyUpdateDetails, AsyncCallback callback, object asyncState) { HistoryUpdateRequest request = new HistoryUpdateRequest(); request.RequestHeader = requestHeader; request.HistoryUpdateDetails = historyUpdateDetails; UpdateRequestHeader(request, requestHeader == null, "HistoryUpdate"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginHistoryUpdate(new HistoryUpdateMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the HistoryUpdate service. /// public virtual ResponseHeader EndHistoryUpdate( IAsyncResult result, out HistoryUpdateResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { HistoryUpdateResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (HistoryUpdateResponse)genericResponse; } else { HistoryUpdateResponseMessage responseMessage = InnerChannel.EndHistoryUpdate(result); if (responseMessage == null || responseMessage.HistoryUpdateResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.HistoryUpdateResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "HistoryUpdate"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the HistoryUpdate service. /// public virtual ResponseHeader HistoryUpdate( RequestHeader requestHeader, ExtensionObjectCollection historyUpdateDetails, out HistoryUpdateResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { HistoryUpdateRequest request = new HistoryUpdateRequest(); HistoryUpdateResponse response = null; request.RequestHeader = requestHeader; request.HistoryUpdateDetails = historyUpdateDetails; UpdateRequestHeader(request, requestHeader == null, "HistoryUpdate"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (HistoryUpdateResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "HistoryUpdate"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the HistoryUpdate service. /// public virtual IAsyncResult BeginHistoryUpdate( RequestHeader requestHeader, ExtensionObjectCollection historyUpdateDetails, AsyncCallback callback, object asyncState) { HistoryUpdateRequest request = new HistoryUpdateRequest(); request.RequestHeader = requestHeader; request.HistoryUpdateDetails = historyUpdateDetails; UpdateRequestHeader(request, requestHeader == null, "HistoryUpdate"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the HistoryUpdate service. /// public virtual ResponseHeader EndHistoryUpdate( IAsyncResult result, out HistoryUpdateResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { HistoryUpdateResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (HistoryUpdateResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "HistoryUpdate"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the HistoryUpdate service using async Task based request. /// public virtual async Task HistoryUpdateAsync( RequestHeader requestHeader, ExtensionObjectCollection historyUpdateDetails, CancellationToken ct) { HistoryUpdateRequest request = new HistoryUpdateRequest(); HistoryUpdateResponse response = null; request.RequestHeader = requestHeader; request.HistoryUpdateDetails = historyUpdateDetails; UpdateRequestHeader(request, requestHeader == null, "HistoryUpdate"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (HistoryUpdateResponse)genericResponse; } finally { RequestCompleted(request, response, "HistoryUpdate"); } return response; } #endif #endif #endregion #region Call Methods #if (!OPCUA_EXCLUDE_Call) #if (!NET_STANDARD) /// /// Invokes the Call service. /// public virtual ResponseHeader Call( RequestHeader requestHeader, CallMethodRequestCollection methodsToCall, out CallMethodResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { CallRequest request = new CallRequest(); CallResponse response = null; request.RequestHeader = requestHeader; request.MethodsToCall = methodsToCall; UpdateRequestHeader(request, requestHeader == null, "Call"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CallResponse)genericResponse; } else { CallResponseMessage responseMessage = InnerChannel.Call(new CallMessage(request)); if (responseMessage == null || responseMessage.CallResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.CallResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "Call"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the Call service. /// public virtual IAsyncResult BeginCall( RequestHeader requestHeader, CallMethodRequestCollection methodsToCall, AsyncCallback callback, object asyncState) { CallRequest request = new CallRequest(); request.RequestHeader = requestHeader; request.MethodsToCall = methodsToCall; UpdateRequestHeader(request, requestHeader == null, "Call"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginCall(new CallMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the Call service. /// public virtual ResponseHeader EndCall( IAsyncResult result, out CallMethodResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { CallResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CallResponse)genericResponse; } else { CallResponseMessage responseMessage = InnerChannel.EndCall(result); if (responseMessage == null || responseMessage.CallResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.CallResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "Call"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the Call service. /// public virtual ResponseHeader Call( RequestHeader requestHeader, CallMethodRequestCollection methodsToCall, out CallMethodResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { CallRequest request = new CallRequest(); CallResponse response = null; request.RequestHeader = requestHeader; request.MethodsToCall = methodsToCall; UpdateRequestHeader(request, requestHeader == null, "Call"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CallResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "Call"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the Call service. /// public virtual IAsyncResult BeginCall( RequestHeader requestHeader, CallMethodRequestCollection methodsToCall, AsyncCallback callback, object asyncState) { CallRequest request = new CallRequest(); request.RequestHeader = requestHeader; request.MethodsToCall = methodsToCall; UpdateRequestHeader(request, requestHeader == null, "Call"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the Call service. /// public virtual ResponseHeader EndCall( IAsyncResult result, out CallMethodResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { CallResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CallResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "Call"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the Call service using async Task based request. /// public virtual async Task CallAsync( RequestHeader requestHeader, CallMethodRequestCollection methodsToCall, CancellationToken ct) { CallRequest request = new CallRequest(); CallResponse response = null; request.RequestHeader = requestHeader; request.MethodsToCall = methodsToCall; UpdateRequestHeader(request, requestHeader == null, "Call"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CallResponse)genericResponse; } finally { RequestCompleted(request, response, "Call"); } return response; } #endif #endif #endregion #region CreateMonitoredItems Methods #if (!OPCUA_EXCLUDE_CreateMonitoredItems) #if (!NET_STANDARD) /// /// Invokes the CreateMonitoredItems service. /// public virtual ResponseHeader CreateMonitoredItems( RequestHeader requestHeader, uint subscriptionId, TimestampsToReturn timestampsToReturn, MonitoredItemCreateRequestCollection itemsToCreate, out MonitoredItemCreateResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { CreateMonitoredItemsRequest request = new CreateMonitoredItemsRequest(); CreateMonitoredItemsResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.TimestampsToReturn = timestampsToReturn; request.ItemsToCreate = itemsToCreate; UpdateRequestHeader(request, requestHeader == null, "CreateMonitoredItems"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CreateMonitoredItemsResponse)genericResponse; } else { CreateMonitoredItemsResponseMessage responseMessage = InnerChannel.CreateMonitoredItems(new CreateMonitoredItemsMessage(request)); if (responseMessage == null || responseMessage.CreateMonitoredItemsResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.CreateMonitoredItemsResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "CreateMonitoredItems"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the CreateMonitoredItems service. /// public virtual IAsyncResult BeginCreateMonitoredItems( RequestHeader requestHeader, uint subscriptionId, TimestampsToReturn timestampsToReturn, MonitoredItemCreateRequestCollection itemsToCreate, AsyncCallback callback, object asyncState) { CreateMonitoredItemsRequest request = new CreateMonitoredItemsRequest(); request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.TimestampsToReturn = timestampsToReturn; request.ItemsToCreate = itemsToCreate; UpdateRequestHeader(request, requestHeader == null, "CreateMonitoredItems"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginCreateMonitoredItems(new CreateMonitoredItemsMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the CreateMonitoredItems service. /// public virtual ResponseHeader EndCreateMonitoredItems( IAsyncResult result, out MonitoredItemCreateResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { CreateMonitoredItemsResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CreateMonitoredItemsResponse)genericResponse; } else { CreateMonitoredItemsResponseMessage responseMessage = InnerChannel.EndCreateMonitoredItems(result); if (responseMessage == null || responseMessage.CreateMonitoredItemsResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.CreateMonitoredItemsResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "CreateMonitoredItems"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the CreateMonitoredItems service. /// public virtual ResponseHeader CreateMonitoredItems( RequestHeader requestHeader, uint subscriptionId, TimestampsToReturn timestampsToReturn, MonitoredItemCreateRequestCollection itemsToCreate, out MonitoredItemCreateResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { CreateMonitoredItemsRequest request = new CreateMonitoredItemsRequest(); CreateMonitoredItemsResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.TimestampsToReturn = timestampsToReturn; request.ItemsToCreate = itemsToCreate; UpdateRequestHeader(request, requestHeader == null, "CreateMonitoredItems"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CreateMonitoredItemsResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "CreateMonitoredItems"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the CreateMonitoredItems service. /// public virtual IAsyncResult BeginCreateMonitoredItems( RequestHeader requestHeader, uint subscriptionId, TimestampsToReturn timestampsToReturn, MonitoredItemCreateRequestCollection itemsToCreate, AsyncCallback callback, object asyncState) { CreateMonitoredItemsRequest request = new CreateMonitoredItemsRequest(); request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.TimestampsToReturn = timestampsToReturn; request.ItemsToCreate = itemsToCreate; UpdateRequestHeader(request, requestHeader == null, "CreateMonitoredItems"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the CreateMonitoredItems service. /// public virtual ResponseHeader EndCreateMonitoredItems( IAsyncResult result, out MonitoredItemCreateResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { CreateMonitoredItemsResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CreateMonitoredItemsResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "CreateMonitoredItems"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the CreateMonitoredItems service using async Task based request. /// public virtual async Task CreateMonitoredItemsAsync( RequestHeader requestHeader, uint subscriptionId, TimestampsToReturn timestampsToReturn, MonitoredItemCreateRequestCollection itemsToCreate, CancellationToken ct) { CreateMonitoredItemsRequest request = new CreateMonitoredItemsRequest(); CreateMonitoredItemsResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.TimestampsToReturn = timestampsToReturn; request.ItemsToCreate = itemsToCreate; UpdateRequestHeader(request, requestHeader == null, "CreateMonitoredItems"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CreateMonitoredItemsResponse)genericResponse; } finally { RequestCompleted(request, response, "CreateMonitoredItems"); } return response; } #endif #endif #endregion #region ModifyMonitoredItems Methods #if (!OPCUA_EXCLUDE_ModifyMonitoredItems) #if (!NET_STANDARD) /// /// Invokes the ModifyMonitoredItems service. /// public virtual ResponseHeader ModifyMonitoredItems( RequestHeader requestHeader, uint subscriptionId, TimestampsToReturn timestampsToReturn, MonitoredItemModifyRequestCollection itemsToModify, out MonitoredItemModifyResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { ModifyMonitoredItemsRequest request = new ModifyMonitoredItemsRequest(); ModifyMonitoredItemsResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.TimestampsToReturn = timestampsToReturn; request.ItemsToModify = itemsToModify; UpdateRequestHeader(request, requestHeader == null, "ModifyMonitoredItems"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (ModifyMonitoredItemsResponse)genericResponse; } else { ModifyMonitoredItemsResponseMessage responseMessage = InnerChannel.ModifyMonitoredItems(new ModifyMonitoredItemsMessage(request)); if (responseMessage == null || responseMessage.ModifyMonitoredItemsResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.ModifyMonitoredItemsResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "ModifyMonitoredItems"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the ModifyMonitoredItems service. /// public virtual IAsyncResult BeginModifyMonitoredItems( RequestHeader requestHeader, uint subscriptionId, TimestampsToReturn timestampsToReturn, MonitoredItemModifyRequestCollection itemsToModify, AsyncCallback callback, object asyncState) { ModifyMonitoredItemsRequest request = new ModifyMonitoredItemsRequest(); request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.TimestampsToReturn = timestampsToReturn; request.ItemsToModify = itemsToModify; UpdateRequestHeader(request, requestHeader == null, "ModifyMonitoredItems"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginModifyMonitoredItems(new ModifyMonitoredItemsMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the ModifyMonitoredItems service. /// public virtual ResponseHeader EndModifyMonitoredItems( IAsyncResult result, out MonitoredItemModifyResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { ModifyMonitoredItemsResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (ModifyMonitoredItemsResponse)genericResponse; } else { ModifyMonitoredItemsResponseMessage responseMessage = InnerChannel.EndModifyMonitoredItems(result); if (responseMessage == null || responseMessage.ModifyMonitoredItemsResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.ModifyMonitoredItemsResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "ModifyMonitoredItems"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the ModifyMonitoredItems service. /// public virtual ResponseHeader ModifyMonitoredItems( RequestHeader requestHeader, uint subscriptionId, TimestampsToReturn timestampsToReturn, MonitoredItemModifyRequestCollection itemsToModify, out MonitoredItemModifyResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { ModifyMonitoredItemsRequest request = new ModifyMonitoredItemsRequest(); ModifyMonitoredItemsResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.TimestampsToReturn = timestampsToReturn; request.ItemsToModify = itemsToModify; UpdateRequestHeader(request, requestHeader == null, "ModifyMonitoredItems"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (ModifyMonitoredItemsResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "ModifyMonitoredItems"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the ModifyMonitoredItems service. /// public virtual IAsyncResult BeginModifyMonitoredItems( RequestHeader requestHeader, uint subscriptionId, TimestampsToReturn timestampsToReturn, MonitoredItemModifyRequestCollection itemsToModify, AsyncCallback callback, object asyncState) { ModifyMonitoredItemsRequest request = new ModifyMonitoredItemsRequest(); request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.TimestampsToReturn = timestampsToReturn; request.ItemsToModify = itemsToModify; UpdateRequestHeader(request, requestHeader == null, "ModifyMonitoredItems"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the ModifyMonitoredItems service. /// public virtual ResponseHeader EndModifyMonitoredItems( IAsyncResult result, out MonitoredItemModifyResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { ModifyMonitoredItemsResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (ModifyMonitoredItemsResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "ModifyMonitoredItems"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the ModifyMonitoredItems service using async Task based request. /// public virtual async Task ModifyMonitoredItemsAsync( RequestHeader requestHeader, uint subscriptionId, TimestampsToReturn timestampsToReturn, MonitoredItemModifyRequestCollection itemsToModify, CancellationToken ct) { ModifyMonitoredItemsRequest request = new ModifyMonitoredItemsRequest(); ModifyMonitoredItemsResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.TimestampsToReturn = timestampsToReturn; request.ItemsToModify = itemsToModify; UpdateRequestHeader(request, requestHeader == null, "ModifyMonitoredItems"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (ModifyMonitoredItemsResponse)genericResponse; } finally { RequestCompleted(request, response, "ModifyMonitoredItems"); } return response; } #endif #endif #endregion #region SetMonitoringMode Methods #if (!OPCUA_EXCLUDE_SetMonitoringMode) #if (!NET_STANDARD) /// /// Invokes the SetMonitoringMode service. /// public virtual ResponseHeader SetMonitoringMode( RequestHeader requestHeader, uint subscriptionId, MonitoringMode monitoringMode, UInt32Collection monitoredItemIds, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { SetMonitoringModeRequest request = new SetMonitoringModeRequest(); SetMonitoringModeResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.MonitoringMode = monitoringMode; request.MonitoredItemIds = monitoredItemIds; UpdateRequestHeader(request, requestHeader == null, "SetMonitoringMode"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (SetMonitoringModeResponse)genericResponse; } else { SetMonitoringModeResponseMessage responseMessage = InnerChannel.SetMonitoringMode(new SetMonitoringModeMessage(request)); if (responseMessage == null || responseMessage.SetMonitoringModeResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.SetMonitoringModeResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "SetMonitoringMode"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the SetMonitoringMode service. /// public virtual IAsyncResult BeginSetMonitoringMode( RequestHeader requestHeader, uint subscriptionId, MonitoringMode monitoringMode, UInt32Collection monitoredItemIds, AsyncCallback callback, object asyncState) { SetMonitoringModeRequest request = new SetMonitoringModeRequest(); request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.MonitoringMode = monitoringMode; request.MonitoredItemIds = monitoredItemIds; UpdateRequestHeader(request, requestHeader == null, "SetMonitoringMode"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginSetMonitoringMode(new SetMonitoringModeMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the SetMonitoringMode service. /// public virtual ResponseHeader EndSetMonitoringMode( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { SetMonitoringModeResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (SetMonitoringModeResponse)genericResponse; } else { SetMonitoringModeResponseMessage responseMessage = InnerChannel.EndSetMonitoringMode(result); if (responseMessage == null || responseMessage.SetMonitoringModeResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.SetMonitoringModeResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "SetMonitoringMode"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the SetMonitoringMode service. /// public virtual ResponseHeader SetMonitoringMode( RequestHeader requestHeader, uint subscriptionId, MonitoringMode monitoringMode, UInt32Collection monitoredItemIds, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { SetMonitoringModeRequest request = new SetMonitoringModeRequest(); SetMonitoringModeResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.MonitoringMode = monitoringMode; request.MonitoredItemIds = monitoredItemIds; UpdateRequestHeader(request, requestHeader == null, "SetMonitoringMode"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (SetMonitoringModeResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "SetMonitoringMode"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the SetMonitoringMode service. /// public virtual IAsyncResult BeginSetMonitoringMode( RequestHeader requestHeader, uint subscriptionId, MonitoringMode monitoringMode, UInt32Collection monitoredItemIds, AsyncCallback callback, object asyncState) { SetMonitoringModeRequest request = new SetMonitoringModeRequest(); request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.MonitoringMode = monitoringMode; request.MonitoredItemIds = monitoredItemIds; UpdateRequestHeader(request, requestHeader == null, "SetMonitoringMode"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the SetMonitoringMode service. /// public virtual ResponseHeader EndSetMonitoringMode( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { SetMonitoringModeResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (SetMonitoringModeResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "SetMonitoringMode"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the SetMonitoringMode service using async Task based request. /// public virtual async Task SetMonitoringModeAsync( RequestHeader requestHeader, uint subscriptionId, MonitoringMode monitoringMode, UInt32Collection monitoredItemIds, CancellationToken ct) { SetMonitoringModeRequest request = new SetMonitoringModeRequest(); SetMonitoringModeResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.MonitoringMode = monitoringMode; request.MonitoredItemIds = monitoredItemIds; UpdateRequestHeader(request, requestHeader == null, "SetMonitoringMode"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (SetMonitoringModeResponse)genericResponse; } finally { RequestCompleted(request, response, "SetMonitoringMode"); } return response; } #endif #endif #endregion #region SetTriggering Methods #if (!OPCUA_EXCLUDE_SetTriggering) #if (!NET_STANDARD) /// /// Invokes the SetTriggering service. /// public virtual ResponseHeader SetTriggering( RequestHeader requestHeader, uint subscriptionId, uint triggeringItemId, UInt32Collection linksToAdd, UInt32Collection linksToRemove, out StatusCodeCollection addResults, out DiagnosticInfoCollection addDiagnosticInfos, out StatusCodeCollection removeResults, out DiagnosticInfoCollection removeDiagnosticInfos) { SetTriggeringRequest request = new SetTriggeringRequest(); SetTriggeringResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.TriggeringItemId = triggeringItemId; request.LinksToAdd = linksToAdd; request.LinksToRemove = linksToRemove; UpdateRequestHeader(request, requestHeader == null, "SetTriggering"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (SetTriggeringResponse)genericResponse; } else { SetTriggeringResponseMessage responseMessage = InnerChannel.SetTriggering(new SetTriggeringMessage(request)); if (responseMessage == null || responseMessage.SetTriggeringResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.SetTriggeringResponse; ValidateResponse(response.ResponseHeader); } addResults = response.AddResults; addDiagnosticInfos = response.AddDiagnosticInfos; removeResults = response.RemoveResults; removeDiagnosticInfos = response.RemoveDiagnosticInfos; } finally { RequestCompleted(request, response, "SetTriggering"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the SetTriggering service. /// public virtual IAsyncResult BeginSetTriggering( RequestHeader requestHeader, uint subscriptionId, uint triggeringItemId, UInt32Collection linksToAdd, UInt32Collection linksToRemove, AsyncCallback callback, object asyncState) { SetTriggeringRequest request = new SetTriggeringRequest(); request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.TriggeringItemId = triggeringItemId; request.LinksToAdd = linksToAdd; request.LinksToRemove = linksToRemove; UpdateRequestHeader(request, requestHeader == null, "SetTriggering"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginSetTriggering(new SetTriggeringMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the SetTriggering service. /// public virtual ResponseHeader EndSetTriggering( IAsyncResult result, out StatusCodeCollection addResults, out DiagnosticInfoCollection addDiagnosticInfos, out StatusCodeCollection removeResults, out DiagnosticInfoCollection removeDiagnosticInfos) { SetTriggeringResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (SetTriggeringResponse)genericResponse; } else { SetTriggeringResponseMessage responseMessage = InnerChannel.EndSetTriggering(result); if (responseMessage == null || responseMessage.SetTriggeringResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.SetTriggeringResponse; ValidateResponse(response.ResponseHeader); } addResults = response.AddResults; addDiagnosticInfos = response.AddDiagnosticInfos; removeResults = response.RemoveResults; removeDiagnosticInfos = response.RemoveDiagnosticInfos; } finally { RequestCompleted(null, response, "SetTriggering"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the SetTriggering service. /// public virtual ResponseHeader SetTriggering( RequestHeader requestHeader, uint subscriptionId, uint triggeringItemId, UInt32Collection linksToAdd, UInt32Collection linksToRemove, out StatusCodeCollection addResults, out DiagnosticInfoCollection addDiagnosticInfos, out StatusCodeCollection removeResults, out DiagnosticInfoCollection removeDiagnosticInfos) { SetTriggeringRequest request = new SetTriggeringRequest(); SetTriggeringResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.TriggeringItemId = triggeringItemId; request.LinksToAdd = linksToAdd; request.LinksToRemove = linksToRemove; UpdateRequestHeader(request, requestHeader == null, "SetTriggering"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (SetTriggeringResponse)genericResponse; addResults = response.AddResults; addDiagnosticInfos = response.AddDiagnosticInfos; removeResults = response.RemoveResults; removeDiagnosticInfos = response.RemoveDiagnosticInfos; } finally { RequestCompleted(request, response, "SetTriggering"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the SetTriggering service. /// public virtual IAsyncResult BeginSetTriggering( RequestHeader requestHeader, uint subscriptionId, uint triggeringItemId, UInt32Collection linksToAdd, UInt32Collection linksToRemove, AsyncCallback callback, object asyncState) { SetTriggeringRequest request = new SetTriggeringRequest(); request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.TriggeringItemId = triggeringItemId; request.LinksToAdd = linksToAdd; request.LinksToRemove = linksToRemove; UpdateRequestHeader(request, requestHeader == null, "SetTriggering"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the SetTriggering service. /// public virtual ResponseHeader EndSetTriggering( IAsyncResult result, out StatusCodeCollection addResults, out DiagnosticInfoCollection addDiagnosticInfos, out StatusCodeCollection removeResults, out DiagnosticInfoCollection removeDiagnosticInfos) { SetTriggeringResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (SetTriggeringResponse)genericResponse; addResults = response.AddResults; addDiagnosticInfos = response.AddDiagnosticInfos; removeResults = response.RemoveResults; removeDiagnosticInfos = response.RemoveDiagnosticInfos; } finally { RequestCompleted(null, response, "SetTriggering"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the SetTriggering service using async Task based request. /// public virtual async Task SetTriggeringAsync( RequestHeader requestHeader, uint subscriptionId, uint triggeringItemId, UInt32Collection linksToAdd, UInt32Collection linksToRemove, CancellationToken ct) { SetTriggeringRequest request = new SetTriggeringRequest(); SetTriggeringResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.TriggeringItemId = triggeringItemId; request.LinksToAdd = linksToAdd; request.LinksToRemove = linksToRemove; UpdateRequestHeader(request, requestHeader == null, "SetTriggering"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (SetTriggeringResponse)genericResponse; } finally { RequestCompleted(request, response, "SetTriggering"); } return response; } #endif #endif #endregion #region DeleteMonitoredItems Methods #if (!OPCUA_EXCLUDE_DeleteMonitoredItems) #if (!NET_STANDARD) /// /// Invokes the DeleteMonitoredItems service. /// public virtual ResponseHeader DeleteMonitoredItems( RequestHeader requestHeader, uint subscriptionId, UInt32Collection monitoredItemIds, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { DeleteMonitoredItemsRequest request = new DeleteMonitoredItemsRequest(); DeleteMonitoredItemsResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.MonitoredItemIds = monitoredItemIds; UpdateRequestHeader(request, requestHeader == null, "DeleteMonitoredItems"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (DeleteMonitoredItemsResponse)genericResponse; } else { DeleteMonitoredItemsResponseMessage responseMessage = InnerChannel.DeleteMonitoredItems(new DeleteMonitoredItemsMessage(request)); if (responseMessage == null || responseMessage.DeleteMonitoredItemsResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.DeleteMonitoredItemsResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "DeleteMonitoredItems"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the DeleteMonitoredItems service. /// public virtual IAsyncResult BeginDeleteMonitoredItems( RequestHeader requestHeader, uint subscriptionId, UInt32Collection monitoredItemIds, AsyncCallback callback, object asyncState) { DeleteMonitoredItemsRequest request = new DeleteMonitoredItemsRequest(); request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.MonitoredItemIds = monitoredItemIds; UpdateRequestHeader(request, requestHeader == null, "DeleteMonitoredItems"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginDeleteMonitoredItems(new DeleteMonitoredItemsMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the DeleteMonitoredItems service. /// public virtual ResponseHeader EndDeleteMonitoredItems( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { DeleteMonitoredItemsResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (DeleteMonitoredItemsResponse)genericResponse; } else { DeleteMonitoredItemsResponseMessage responseMessage = InnerChannel.EndDeleteMonitoredItems(result); if (responseMessage == null || responseMessage.DeleteMonitoredItemsResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.DeleteMonitoredItemsResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "DeleteMonitoredItems"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the DeleteMonitoredItems service. /// public virtual ResponseHeader DeleteMonitoredItems( RequestHeader requestHeader, uint subscriptionId, UInt32Collection monitoredItemIds, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { DeleteMonitoredItemsRequest request = new DeleteMonitoredItemsRequest(); DeleteMonitoredItemsResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.MonitoredItemIds = monitoredItemIds; UpdateRequestHeader(request, requestHeader == null, "DeleteMonitoredItems"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (DeleteMonitoredItemsResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "DeleteMonitoredItems"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the DeleteMonitoredItems service. /// public virtual IAsyncResult BeginDeleteMonitoredItems( RequestHeader requestHeader, uint subscriptionId, UInt32Collection monitoredItemIds, AsyncCallback callback, object asyncState) { DeleteMonitoredItemsRequest request = new DeleteMonitoredItemsRequest(); request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.MonitoredItemIds = monitoredItemIds; UpdateRequestHeader(request, requestHeader == null, "DeleteMonitoredItems"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the DeleteMonitoredItems service. /// public virtual ResponseHeader EndDeleteMonitoredItems( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { DeleteMonitoredItemsResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (DeleteMonitoredItemsResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "DeleteMonitoredItems"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the DeleteMonitoredItems service using async Task based request. /// public virtual async Task DeleteMonitoredItemsAsync( RequestHeader requestHeader, uint subscriptionId, UInt32Collection monitoredItemIds, CancellationToken ct) { DeleteMonitoredItemsRequest request = new DeleteMonitoredItemsRequest(); DeleteMonitoredItemsResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.MonitoredItemIds = monitoredItemIds; UpdateRequestHeader(request, requestHeader == null, "DeleteMonitoredItems"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (DeleteMonitoredItemsResponse)genericResponse; } finally { RequestCompleted(request, response, "DeleteMonitoredItems"); } return response; } #endif #endif #endregion #region CreateSubscription Methods #if (!OPCUA_EXCLUDE_CreateSubscription) #if (!NET_STANDARD) /// /// Invokes the CreateSubscription service. /// public virtual ResponseHeader CreateSubscription( RequestHeader requestHeader, double requestedPublishingInterval, uint requestedLifetimeCount, uint requestedMaxKeepAliveCount, uint maxNotificationsPerPublish, bool publishingEnabled, byte priority, out uint subscriptionId, out double revisedPublishingInterval, out uint revisedLifetimeCount, out uint revisedMaxKeepAliveCount) { CreateSubscriptionRequest request = new CreateSubscriptionRequest(); CreateSubscriptionResponse response = null; request.RequestHeader = requestHeader; request.RequestedPublishingInterval = requestedPublishingInterval; request.RequestedLifetimeCount = requestedLifetimeCount; request.RequestedMaxKeepAliveCount = requestedMaxKeepAliveCount; request.MaxNotificationsPerPublish = maxNotificationsPerPublish; request.PublishingEnabled = publishingEnabled; request.Priority = priority; UpdateRequestHeader(request, requestHeader == null, "CreateSubscription"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CreateSubscriptionResponse)genericResponse; } else { CreateSubscriptionResponseMessage responseMessage = InnerChannel.CreateSubscription(new CreateSubscriptionMessage(request)); if (responseMessage == null || responseMessage.CreateSubscriptionResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.CreateSubscriptionResponse; ValidateResponse(response.ResponseHeader); } subscriptionId = response.SubscriptionId; revisedPublishingInterval = response.RevisedPublishingInterval; revisedLifetimeCount = response.RevisedLifetimeCount; revisedMaxKeepAliveCount = response.RevisedMaxKeepAliveCount; } finally { RequestCompleted(request, response, "CreateSubscription"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the CreateSubscription service. /// public virtual IAsyncResult BeginCreateSubscription( RequestHeader requestHeader, double requestedPublishingInterval, uint requestedLifetimeCount, uint requestedMaxKeepAliveCount, uint maxNotificationsPerPublish, bool publishingEnabled, byte priority, AsyncCallback callback, object asyncState) { CreateSubscriptionRequest request = new CreateSubscriptionRequest(); request.RequestHeader = requestHeader; request.RequestedPublishingInterval = requestedPublishingInterval; request.RequestedLifetimeCount = requestedLifetimeCount; request.RequestedMaxKeepAliveCount = requestedMaxKeepAliveCount; request.MaxNotificationsPerPublish = maxNotificationsPerPublish; request.PublishingEnabled = publishingEnabled; request.Priority = priority; UpdateRequestHeader(request, requestHeader == null, "CreateSubscription"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginCreateSubscription(new CreateSubscriptionMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the CreateSubscription service. /// public virtual ResponseHeader EndCreateSubscription( IAsyncResult result, out uint subscriptionId, out double revisedPublishingInterval, out uint revisedLifetimeCount, out uint revisedMaxKeepAliveCount) { CreateSubscriptionResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CreateSubscriptionResponse)genericResponse; } else { CreateSubscriptionResponseMessage responseMessage = InnerChannel.EndCreateSubscription(result); if (responseMessage == null || responseMessage.CreateSubscriptionResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.CreateSubscriptionResponse; ValidateResponse(response.ResponseHeader); } subscriptionId = response.SubscriptionId; revisedPublishingInterval = response.RevisedPublishingInterval; revisedLifetimeCount = response.RevisedLifetimeCount; revisedMaxKeepAliveCount = response.RevisedMaxKeepAliveCount; } finally { RequestCompleted(null, response, "CreateSubscription"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the CreateSubscription service. /// public virtual ResponseHeader CreateSubscription( RequestHeader requestHeader, double requestedPublishingInterval, uint requestedLifetimeCount, uint requestedMaxKeepAliveCount, uint maxNotificationsPerPublish, bool publishingEnabled, byte priority, out uint subscriptionId, out double revisedPublishingInterval, out uint revisedLifetimeCount, out uint revisedMaxKeepAliveCount) { CreateSubscriptionRequest request = new CreateSubscriptionRequest(); CreateSubscriptionResponse response = null; request.RequestHeader = requestHeader; request.RequestedPublishingInterval = requestedPublishingInterval; request.RequestedLifetimeCount = requestedLifetimeCount; request.RequestedMaxKeepAliveCount = requestedMaxKeepAliveCount; request.MaxNotificationsPerPublish = maxNotificationsPerPublish; request.PublishingEnabled = publishingEnabled; request.Priority = priority; UpdateRequestHeader(request, requestHeader == null, "CreateSubscription"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CreateSubscriptionResponse)genericResponse; subscriptionId = response.SubscriptionId; revisedPublishingInterval = response.RevisedPublishingInterval; revisedLifetimeCount = response.RevisedLifetimeCount; revisedMaxKeepAliveCount = response.RevisedMaxKeepAliveCount; } finally { RequestCompleted(request, response, "CreateSubscription"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the CreateSubscription service. /// public virtual IAsyncResult BeginCreateSubscription( RequestHeader requestHeader, double requestedPublishingInterval, uint requestedLifetimeCount, uint requestedMaxKeepAliveCount, uint maxNotificationsPerPublish, bool publishingEnabled, byte priority, AsyncCallback callback, object asyncState) { CreateSubscriptionRequest request = new CreateSubscriptionRequest(); request.RequestHeader = requestHeader; request.RequestedPublishingInterval = requestedPublishingInterval; request.RequestedLifetimeCount = requestedLifetimeCount; request.RequestedMaxKeepAliveCount = requestedMaxKeepAliveCount; request.MaxNotificationsPerPublish = maxNotificationsPerPublish; request.PublishingEnabled = publishingEnabled; request.Priority = priority; UpdateRequestHeader(request, requestHeader == null, "CreateSubscription"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the CreateSubscription service. /// public virtual ResponseHeader EndCreateSubscription( IAsyncResult result, out uint subscriptionId, out double revisedPublishingInterval, out uint revisedLifetimeCount, out uint revisedMaxKeepAliveCount) { CreateSubscriptionResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CreateSubscriptionResponse)genericResponse; subscriptionId = response.SubscriptionId; revisedPublishingInterval = response.RevisedPublishingInterval; revisedLifetimeCount = response.RevisedLifetimeCount; revisedMaxKeepAliveCount = response.RevisedMaxKeepAliveCount; } finally { RequestCompleted(null, response, "CreateSubscription"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the CreateSubscription service using async Task based request. /// public virtual async Task CreateSubscriptionAsync( RequestHeader requestHeader, double requestedPublishingInterval, uint requestedLifetimeCount, uint requestedMaxKeepAliveCount, uint maxNotificationsPerPublish, bool publishingEnabled, byte priority, CancellationToken ct) { CreateSubscriptionRequest request = new CreateSubscriptionRequest(); CreateSubscriptionResponse response = null; request.RequestHeader = requestHeader; request.RequestedPublishingInterval = requestedPublishingInterval; request.RequestedLifetimeCount = requestedLifetimeCount; request.RequestedMaxKeepAliveCount = requestedMaxKeepAliveCount; request.MaxNotificationsPerPublish = maxNotificationsPerPublish; request.PublishingEnabled = publishingEnabled; request.Priority = priority; UpdateRequestHeader(request, requestHeader == null, "CreateSubscription"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (CreateSubscriptionResponse)genericResponse; } finally { RequestCompleted(request, response, "CreateSubscription"); } return response; } #endif #endif #endregion #region ModifySubscription Methods #if (!OPCUA_EXCLUDE_ModifySubscription) #if (!NET_STANDARD) /// /// Invokes the ModifySubscription service. /// public virtual ResponseHeader ModifySubscription( RequestHeader requestHeader, uint subscriptionId, double requestedPublishingInterval, uint requestedLifetimeCount, uint requestedMaxKeepAliveCount, uint maxNotificationsPerPublish, byte priority, out double revisedPublishingInterval, out uint revisedLifetimeCount, out uint revisedMaxKeepAliveCount) { ModifySubscriptionRequest request = new ModifySubscriptionRequest(); ModifySubscriptionResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.RequestedPublishingInterval = requestedPublishingInterval; request.RequestedLifetimeCount = requestedLifetimeCount; request.RequestedMaxKeepAliveCount = requestedMaxKeepAliveCount; request.MaxNotificationsPerPublish = maxNotificationsPerPublish; request.Priority = priority; UpdateRequestHeader(request, requestHeader == null, "ModifySubscription"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (ModifySubscriptionResponse)genericResponse; } else { ModifySubscriptionResponseMessage responseMessage = InnerChannel.ModifySubscription(new ModifySubscriptionMessage(request)); if (responseMessage == null || responseMessage.ModifySubscriptionResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.ModifySubscriptionResponse; ValidateResponse(response.ResponseHeader); } revisedPublishingInterval = response.RevisedPublishingInterval; revisedLifetimeCount = response.RevisedLifetimeCount; revisedMaxKeepAliveCount = response.RevisedMaxKeepAliveCount; } finally { RequestCompleted(request, response, "ModifySubscription"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the ModifySubscription service. /// public virtual IAsyncResult BeginModifySubscription( RequestHeader requestHeader, uint subscriptionId, double requestedPublishingInterval, uint requestedLifetimeCount, uint requestedMaxKeepAliveCount, uint maxNotificationsPerPublish, byte priority, AsyncCallback callback, object asyncState) { ModifySubscriptionRequest request = new ModifySubscriptionRequest(); request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.RequestedPublishingInterval = requestedPublishingInterval; request.RequestedLifetimeCount = requestedLifetimeCount; request.RequestedMaxKeepAliveCount = requestedMaxKeepAliveCount; request.MaxNotificationsPerPublish = maxNotificationsPerPublish; request.Priority = priority; UpdateRequestHeader(request, requestHeader == null, "ModifySubscription"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginModifySubscription(new ModifySubscriptionMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the ModifySubscription service. /// public virtual ResponseHeader EndModifySubscription( IAsyncResult result, out double revisedPublishingInterval, out uint revisedLifetimeCount, out uint revisedMaxKeepAliveCount) { ModifySubscriptionResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (ModifySubscriptionResponse)genericResponse; } else { ModifySubscriptionResponseMessage responseMessage = InnerChannel.EndModifySubscription(result); if (responseMessage == null || responseMessage.ModifySubscriptionResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.ModifySubscriptionResponse; ValidateResponse(response.ResponseHeader); } revisedPublishingInterval = response.RevisedPublishingInterval; revisedLifetimeCount = response.RevisedLifetimeCount; revisedMaxKeepAliveCount = response.RevisedMaxKeepAliveCount; } finally { RequestCompleted(null, response, "ModifySubscription"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the ModifySubscription service. /// public virtual ResponseHeader ModifySubscription( RequestHeader requestHeader, uint subscriptionId, double requestedPublishingInterval, uint requestedLifetimeCount, uint requestedMaxKeepAliveCount, uint maxNotificationsPerPublish, byte priority, out double revisedPublishingInterval, out uint revisedLifetimeCount, out uint revisedMaxKeepAliveCount) { ModifySubscriptionRequest request = new ModifySubscriptionRequest(); ModifySubscriptionResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.RequestedPublishingInterval = requestedPublishingInterval; request.RequestedLifetimeCount = requestedLifetimeCount; request.RequestedMaxKeepAliveCount = requestedMaxKeepAliveCount; request.MaxNotificationsPerPublish = maxNotificationsPerPublish; request.Priority = priority; UpdateRequestHeader(request, requestHeader == null, "ModifySubscription"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (ModifySubscriptionResponse)genericResponse; revisedPublishingInterval = response.RevisedPublishingInterval; revisedLifetimeCount = response.RevisedLifetimeCount; revisedMaxKeepAliveCount = response.RevisedMaxKeepAliveCount; } finally { RequestCompleted(request, response, "ModifySubscription"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the ModifySubscription service. /// public virtual IAsyncResult BeginModifySubscription( RequestHeader requestHeader, uint subscriptionId, double requestedPublishingInterval, uint requestedLifetimeCount, uint requestedMaxKeepAliveCount, uint maxNotificationsPerPublish, byte priority, AsyncCallback callback, object asyncState) { ModifySubscriptionRequest request = new ModifySubscriptionRequest(); request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.RequestedPublishingInterval = requestedPublishingInterval; request.RequestedLifetimeCount = requestedLifetimeCount; request.RequestedMaxKeepAliveCount = requestedMaxKeepAliveCount; request.MaxNotificationsPerPublish = maxNotificationsPerPublish; request.Priority = priority; UpdateRequestHeader(request, requestHeader == null, "ModifySubscription"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the ModifySubscription service. /// public virtual ResponseHeader EndModifySubscription( IAsyncResult result, out double revisedPublishingInterval, out uint revisedLifetimeCount, out uint revisedMaxKeepAliveCount) { ModifySubscriptionResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (ModifySubscriptionResponse)genericResponse; revisedPublishingInterval = response.RevisedPublishingInterval; revisedLifetimeCount = response.RevisedLifetimeCount; revisedMaxKeepAliveCount = response.RevisedMaxKeepAliveCount; } finally { RequestCompleted(null, response, "ModifySubscription"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the ModifySubscription service using async Task based request. /// public virtual async Task ModifySubscriptionAsync( RequestHeader requestHeader, uint subscriptionId, double requestedPublishingInterval, uint requestedLifetimeCount, uint requestedMaxKeepAliveCount, uint maxNotificationsPerPublish, byte priority, CancellationToken ct) { ModifySubscriptionRequest request = new ModifySubscriptionRequest(); ModifySubscriptionResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.RequestedPublishingInterval = requestedPublishingInterval; request.RequestedLifetimeCount = requestedLifetimeCount; request.RequestedMaxKeepAliveCount = requestedMaxKeepAliveCount; request.MaxNotificationsPerPublish = maxNotificationsPerPublish; request.Priority = priority; UpdateRequestHeader(request, requestHeader == null, "ModifySubscription"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (ModifySubscriptionResponse)genericResponse; } finally { RequestCompleted(request, response, "ModifySubscription"); } return response; } #endif #endif #endregion #region SetPublishingMode Methods #if (!OPCUA_EXCLUDE_SetPublishingMode) #if (!NET_STANDARD) /// /// Invokes the SetPublishingMode service. /// public virtual ResponseHeader SetPublishingMode( RequestHeader requestHeader, bool publishingEnabled, UInt32Collection subscriptionIds, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { SetPublishingModeRequest request = new SetPublishingModeRequest(); SetPublishingModeResponse response = null; request.RequestHeader = requestHeader; request.PublishingEnabled = publishingEnabled; request.SubscriptionIds = subscriptionIds; UpdateRequestHeader(request, requestHeader == null, "SetPublishingMode"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (SetPublishingModeResponse)genericResponse; } else { SetPublishingModeResponseMessage responseMessage = InnerChannel.SetPublishingMode(new SetPublishingModeMessage(request)); if (responseMessage == null || responseMessage.SetPublishingModeResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.SetPublishingModeResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "SetPublishingMode"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the SetPublishingMode service. /// public virtual IAsyncResult BeginSetPublishingMode( RequestHeader requestHeader, bool publishingEnabled, UInt32Collection subscriptionIds, AsyncCallback callback, object asyncState) { SetPublishingModeRequest request = new SetPublishingModeRequest(); request.RequestHeader = requestHeader; request.PublishingEnabled = publishingEnabled; request.SubscriptionIds = subscriptionIds; UpdateRequestHeader(request, requestHeader == null, "SetPublishingMode"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginSetPublishingMode(new SetPublishingModeMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the SetPublishingMode service. /// public virtual ResponseHeader EndSetPublishingMode( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { SetPublishingModeResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (SetPublishingModeResponse)genericResponse; } else { SetPublishingModeResponseMessage responseMessage = InnerChannel.EndSetPublishingMode(result); if (responseMessage == null || responseMessage.SetPublishingModeResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.SetPublishingModeResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "SetPublishingMode"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the SetPublishingMode service. /// public virtual ResponseHeader SetPublishingMode( RequestHeader requestHeader, bool publishingEnabled, UInt32Collection subscriptionIds, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { SetPublishingModeRequest request = new SetPublishingModeRequest(); SetPublishingModeResponse response = null; request.RequestHeader = requestHeader; request.PublishingEnabled = publishingEnabled; request.SubscriptionIds = subscriptionIds; UpdateRequestHeader(request, requestHeader == null, "SetPublishingMode"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (SetPublishingModeResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "SetPublishingMode"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the SetPublishingMode service. /// public virtual IAsyncResult BeginSetPublishingMode( RequestHeader requestHeader, bool publishingEnabled, UInt32Collection subscriptionIds, AsyncCallback callback, object asyncState) { SetPublishingModeRequest request = new SetPublishingModeRequest(); request.RequestHeader = requestHeader; request.PublishingEnabled = publishingEnabled; request.SubscriptionIds = subscriptionIds; UpdateRequestHeader(request, requestHeader == null, "SetPublishingMode"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the SetPublishingMode service. /// public virtual ResponseHeader EndSetPublishingMode( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { SetPublishingModeResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (SetPublishingModeResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "SetPublishingMode"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the SetPublishingMode service using async Task based request. /// public virtual async Task SetPublishingModeAsync( RequestHeader requestHeader, bool publishingEnabled, UInt32Collection subscriptionIds, CancellationToken ct) { SetPublishingModeRequest request = new SetPublishingModeRequest(); SetPublishingModeResponse response = null; request.RequestHeader = requestHeader; request.PublishingEnabled = publishingEnabled; request.SubscriptionIds = subscriptionIds; UpdateRequestHeader(request, requestHeader == null, "SetPublishingMode"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (SetPublishingModeResponse)genericResponse; } finally { RequestCompleted(request, response, "SetPublishingMode"); } return response; } #endif #endif #endregion #region Publish Methods #if (!OPCUA_EXCLUDE_Publish) #if (!NET_STANDARD) /// /// Invokes the Publish service. /// public virtual ResponseHeader Publish( RequestHeader requestHeader, SubscriptionAcknowledgementCollection subscriptionAcknowledgements, out uint subscriptionId, out UInt32Collection availableSequenceNumbers, out bool moreNotifications, out NotificationMessage notificationMessage, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { PublishRequest request = new PublishRequest(); PublishResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionAcknowledgements = subscriptionAcknowledgements; UpdateRequestHeader(request, requestHeader == null, "Publish"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (PublishResponse)genericResponse; } else { PublishResponseMessage responseMessage = InnerChannel.Publish(new PublishMessage(request)); if (responseMessage == null || responseMessage.PublishResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.PublishResponse; ValidateResponse(response.ResponseHeader); } subscriptionId = response.SubscriptionId; availableSequenceNumbers = response.AvailableSequenceNumbers; moreNotifications = response.MoreNotifications; notificationMessage = response.NotificationMessage; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "Publish"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the Publish service. /// public virtual IAsyncResult BeginPublish( RequestHeader requestHeader, SubscriptionAcknowledgementCollection subscriptionAcknowledgements, AsyncCallback callback, object asyncState) { PublishRequest request = new PublishRequest(); request.RequestHeader = requestHeader; request.SubscriptionAcknowledgements = subscriptionAcknowledgements; UpdateRequestHeader(request, requestHeader == null, "Publish"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginPublish(new PublishMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the Publish service. /// public virtual ResponseHeader EndPublish( IAsyncResult result, out uint subscriptionId, out UInt32Collection availableSequenceNumbers, out bool moreNotifications, out NotificationMessage notificationMessage, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { PublishResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (PublishResponse)genericResponse; } else { PublishResponseMessage responseMessage = InnerChannel.EndPublish(result); if (responseMessage == null || responseMessage.PublishResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.PublishResponse; ValidateResponse(response.ResponseHeader); } subscriptionId = response.SubscriptionId; availableSequenceNumbers = response.AvailableSequenceNumbers; moreNotifications = response.MoreNotifications; notificationMessage = response.NotificationMessage; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "Publish"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the Publish service. /// public virtual ResponseHeader Publish( RequestHeader requestHeader, SubscriptionAcknowledgementCollection subscriptionAcknowledgements, out uint subscriptionId, out UInt32Collection availableSequenceNumbers, out bool moreNotifications, out NotificationMessage notificationMessage, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { PublishRequest request = new PublishRequest(); PublishResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionAcknowledgements = subscriptionAcknowledgements; UpdateRequestHeader(request, requestHeader == null, "Publish"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (PublishResponse)genericResponse; subscriptionId = response.SubscriptionId; availableSequenceNumbers = response.AvailableSequenceNumbers; moreNotifications = response.MoreNotifications; notificationMessage = response.NotificationMessage; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "Publish"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the Publish service. /// public virtual IAsyncResult BeginPublish( RequestHeader requestHeader, SubscriptionAcknowledgementCollection subscriptionAcknowledgements, AsyncCallback callback, object asyncState) { PublishRequest request = new PublishRequest(); request.RequestHeader = requestHeader; request.SubscriptionAcknowledgements = subscriptionAcknowledgements; UpdateRequestHeader(request, requestHeader == null, "Publish"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the Publish service. /// public virtual ResponseHeader EndPublish( IAsyncResult result, out uint subscriptionId, out UInt32Collection availableSequenceNumbers, out bool moreNotifications, out NotificationMessage notificationMessage, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { PublishResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (PublishResponse)genericResponse; subscriptionId = response.SubscriptionId; availableSequenceNumbers = response.AvailableSequenceNumbers; moreNotifications = response.MoreNotifications; notificationMessage = response.NotificationMessage; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "Publish"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the Publish service using async Task based request. /// public virtual async Task PublishAsync( RequestHeader requestHeader, SubscriptionAcknowledgementCollection subscriptionAcknowledgements, CancellationToken ct) { PublishRequest request = new PublishRequest(); PublishResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionAcknowledgements = subscriptionAcknowledgements; UpdateRequestHeader(request, requestHeader == null, "Publish"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (PublishResponse)genericResponse; } finally { RequestCompleted(request, response, "Publish"); } return response; } #endif #endif #endregion #region Republish Methods #if (!OPCUA_EXCLUDE_Republish) #if (!NET_STANDARD) /// /// Invokes the Republish service. /// public virtual ResponseHeader Republish( RequestHeader requestHeader, uint subscriptionId, uint retransmitSequenceNumber, out NotificationMessage notificationMessage) { RepublishRequest request = new RepublishRequest(); RepublishResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.RetransmitSequenceNumber = retransmitSequenceNumber; UpdateRequestHeader(request, requestHeader == null, "Republish"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (RepublishResponse)genericResponse; } else { RepublishResponseMessage responseMessage = InnerChannel.Republish(new RepublishMessage(request)); if (responseMessage == null || responseMessage.RepublishResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.RepublishResponse; ValidateResponse(response.ResponseHeader); } notificationMessage = response.NotificationMessage; } finally { RequestCompleted(request, response, "Republish"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the Republish service. /// public virtual IAsyncResult BeginRepublish( RequestHeader requestHeader, uint subscriptionId, uint retransmitSequenceNumber, AsyncCallback callback, object asyncState) { RepublishRequest request = new RepublishRequest(); request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.RetransmitSequenceNumber = retransmitSequenceNumber; UpdateRequestHeader(request, requestHeader == null, "Republish"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginRepublish(new RepublishMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the Republish service. /// public virtual ResponseHeader EndRepublish( IAsyncResult result, out NotificationMessage notificationMessage) { RepublishResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (RepublishResponse)genericResponse; } else { RepublishResponseMessage responseMessage = InnerChannel.EndRepublish(result); if (responseMessage == null || responseMessage.RepublishResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.RepublishResponse; ValidateResponse(response.ResponseHeader); } notificationMessage = response.NotificationMessage; } finally { RequestCompleted(null, response, "Republish"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the Republish service. /// public virtual ResponseHeader Republish( RequestHeader requestHeader, uint subscriptionId, uint retransmitSequenceNumber, out NotificationMessage notificationMessage) { RepublishRequest request = new RepublishRequest(); RepublishResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.RetransmitSequenceNumber = retransmitSequenceNumber; UpdateRequestHeader(request, requestHeader == null, "Republish"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (RepublishResponse)genericResponse; notificationMessage = response.NotificationMessage; } finally { RequestCompleted(request, response, "Republish"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the Republish service. /// public virtual IAsyncResult BeginRepublish( RequestHeader requestHeader, uint subscriptionId, uint retransmitSequenceNumber, AsyncCallback callback, object asyncState) { RepublishRequest request = new RepublishRequest(); request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.RetransmitSequenceNumber = retransmitSequenceNumber; UpdateRequestHeader(request, requestHeader == null, "Republish"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the Republish service. /// public virtual ResponseHeader EndRepublish( IAsyncResult result, out NotificationMessage notificationMessage) { RepublishResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (RepublishResponse)genericResponse; notificationMessage = response.NotificationMessage; } finally { RequestCompleted(null, response, "Republish"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the Republish service using async Task based request. /// public virtual async Task RepublishAsync( RequestHeader requestHeader, uint subscriptionId, uint retransmitSequenceNumber, CancellationToken ct) { RepublishRequest request = new RepublishRequest(); RepublishResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionId = subscriptionId; request.RetransmitSequenceNumber = retransmitSequenceNumber; UpdateRequestHeader(request, requestHeader == null, "Republish"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (RepublishResponse)genericResponse; } finally { RequestCompleted(request, response, "Republish"); } return response; } #endif #endif #endregion #region TransferSubscriptions Methods #if (!OPCUA_EXCLUDE_TransferSubscriptions) #if (!NET_STANDARD) /// /// Invokes the TransferSubscriptions service. /// public virtual ResponseHeader TransferSubscriptions( RequestHeader requestHeader, UInt32Collection subscriptionIds, bool sendInitialValues, out TransferResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { TransferSubscriptionsRequest request = new TransferSubscriptionsRequest(); TransferSubscriptionsResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionIds = subscriptionIds; request.SendInitialValues = sendInitialValues; UpdateRequestHeader(request, requestHeader == null, "TransferSubscriptions"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (TransferSubscriptionsResponse)genericResponse; } else { TransferSubscriptionsResponseMessage responseMessage = InnerChannel.TransferSubscriptions(new TransferSubscriptionsMessage(request)); if (responseMessage == null || responseMessage.TransferSubscriptionsResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.TransferSubscriptionsResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "TransferSubscriptions"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the TransferSubscriptions service. /// public virtual IAsyncResult BeginTransferSubscriptions( RequestHeader requestHeader, UInt32Collection subscriptionIds, bool sendInitialValues, AsyncCallback callback, object asyncState) { TransferSubscriptionsRequest request = new TransferSubscriptionsRequest(); request.RequestHeader = requestHeader; request.SubscriptionIds = subscriptionIds; request.SendInitialValues = sendInitialValues; UpdateRequestHeader(request, requestHeader == null, "TransferSubscriptions"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginTransferSubscriptions(new TransferSubscriptionsMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the TransferSubscriptions service. /// public virtual ResponseHeader EndTransferSubscriptions( IAsyncResult result, out TransferResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { TransferSubscriptionsResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (TransferSubscriptionsResponse)genericResponse; } else { TransferSubscriptionsResponseMessage responseMessage = InnerChannel.EndTransferSubscriptions(result); if (responseMessage == null || responseMessage.TransferSubscriptionsResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.TransferSubscriptionsResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "TransferSubscriptions"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the TransferSubscriptions service. /// public virtual ResponseHeader TransferSubscriptions( RequestHeader requestHeader, UInt32Collection subscriptionIds, bool sendInitialValues, out TransferResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { TransferSubscriptionsRequest request = new TransferSubscriptionsRequest(); TransferSubscriptionsResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionIds = subscriptionIds; request.SendInitialValues = sendInitialValues; UpdateRequestHeader(request, requestHeader == null, "TransferSubscriptions"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (TransferSubscriptionsResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "TransferSubscriptions"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the TransferSubscriptions service. /// public virtual IAsyncResult BeginTransferSubscriptions( RequestHeader requestHeader, UInt32Collection subscriptionIds, bool sendInitialValues, AsyncCallback callback, object asyncState) { TransferSubscriptionsRequest request = new TransferSubscriptionsRequest(); request.RequestHeader = requestHeader; request.SubscriptionIds = subscriptionIds; request.SendInitialValues = sendInitialValues; UpdateRequestHeader(request, requestHeader == null, "TransferSubscriptions"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the TransferSubscriptions service. /// public virtual ResponseHeader EndTransferSubscriptions( IAsyncResult result, out TransferResultCollection results, out DiagnosticInfoCollection diagnosticInfos) { TransferSubscriptionsResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (TransferSubscriptionsResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "TransferSubscriptions"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the TransferSubscriptions service using async Task based request. /// public virtual async Task TransferSubscriptionsAsync( RequestHeader requestHeader, UInt32Collection subscriptionIds, bool sendInitialValues, CancellationToken ct) { TransferSubscriptionsRequest request = new TransferSubscriptionsRequest(); TransferSubscriptionsResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionIds = subscriptionIds; request.SendInitialValues = sendInitialValues; UpdateRequestHeader(request, requestHeader == null, "TransferSubscriptions"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (TransferSubscriptionsResponse)genericResponse; } finally { RequestCompleted(request, response, "TransferSubscriptions"); } return response; } #endif #endif #endregion #region DeleteSubscriptions Methods #if (!OPCUA_EXCLUDE_DeleteSubscriptions) #if (!NET_STANDARD) /// /// Invokes the DeleteSubscriptions service. /// public virtual ResponseHeader DeleteSubscriptions( RequestHeader requestHeader, UInt32Collection subscriptionIds, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { DeleteSubscriptionsRequest request = new DeleteSubscriptionsRequest(); DeleteSubscriptionsResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionIds = subscriptionIds; UpdateRequestHeader(request, requestHeader == null, "DeleteSubscriptions"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (DeleteSubscriptionsResponse)genericResponse; } else { DeleteSubscriptionsResponseMessage responseMessage = InnerChannel.DeleteSubscriptions(new DeleteSubscriptionsMessage(request)); if (responseMessage == null || responseMessage.DeleteSubscriptionsResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.DeleteSubscriptionsResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "DeleteSubscriptions"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the DeleteSubscriptions service. /// public virtual IAsyncResult BeginDeleteSubscriptions( RequestHeader requestHeader, UInt32Collection subscriptionIds, AsyncCallback callback, object asyncState) { DeleteSubscriptionsRequest request = new DeleteSubscriptionsRequest(); request.RequestHeader = requestHeader; request.SubscriptionIds = subscriptionIds; UpdateRequestHeader(request, requestHeader == null, "DeleteSubscriptions"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginDeleteSubscriptions(new DeleteSubscriptionsMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the DeleteSubscriptions service. /// public virtual ResponseHeader EndDeleteSubscriptions( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { DeleteSubscriptionsResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (DeleteSubscriptionsResponse)genericResponse; } else { DeleteSubscriptionsResponseMessage responseMessage = InnerChannel.EndDeleteSubscriptions(result); if (responseMessage == null || responseMessage.DeleteSubscriptionsResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.DeleteSubscriptionsResponse; ValidateResponse(response.ResponseHeader); } results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "DeleteSubscriptions"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the DeleteSubscriptions service. /// public virtual ResponseHeader DeleteSubscriptions( RequestHeader requestHeader, UInt32Collection subscriptionIds, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { DeleteSubscriptionsRequest request = new DeleteSubscriptionsRequest(); DeleteSubscriptionsResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionIds = subscriptionIds; UpdateRequestHeader(request, requestHeader == null, "DeleteSubscriptions"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (DeleteSubscriptionsResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "DeleteSubscriptions"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the DeleteSubscriptions service. /// public virtual IAsyncResult BeginDeleteSubscriptions( RequestHeader requestHeader, UInt32Collection subscriptionIds, AsyncCallback callback, object asyncState) { DeleteSubscriptionsRequest request = new DeleteSubscriptionsRequest(); request.RequestHeader = requestHeader; request.SubscriptionIds = subscriptionIds; UpdateRequestHeader(request, requestHeader == null, "DeleteSubscriptions"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the DeleteSubscriptions service. /// public virtual ResponseHeader EndDeleteSubscriptions( IAsyncResult result, out StatusCodeCollection results, out DiagnosticInfoCollection diagnosticInfos) { DeleteSubscriptionsResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (DeleteSubscriptionsResponse)genericResponse; results = response.Results; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "DeleteSubscriptions"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the DeleteSubscriptions service using async Task based request. /// public virtual async Task DeleteSubscriptionsAsync( RequestHeader requestHeader, UInt32Collection subscriptionIds, CancellationToken ct) { DeleteSubscriptionsRequest request = new DeleteSubscriptionsRequest(); DeleteSubscriptionsResponse response = null; request.RequestHeader = requestHeader; request.SubscriptionIds = subscriptionIds; UpdateRequestHeader(request, requestHeader == null, "DeleteSubscriptions"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (DeleteSubscriptionsResponse)genericResponse; } finally { RequestCompleted(request, response, "DeleteSubscriptions"); } return response; } #endif #endif #endregion #endregion } #region IDiscoveryClientMethods Interface /// /// An interface used by by clients to access a UA server. /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public interface IDiscoveryClientMethods { #region Client Interface #region FindServers Methods #if (!OPCUA_EXCLUDE_FindServers) /// /// Invokes the FindServers service. /// ResponseHeader FindServers( RequestHeader requestHeader, string endpointUrl, StringCollection localeIds, StringCollection serverUris, out ApplicationDescriptionCollection servers); /// /// Begins an asynchronous invocation of the FindServers service. /// IAsyncResult BeginFindServers( RequestHeader requestHeader, string endpointUrl, StringCollection localeIds, StringCollection serverUris, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the FindServers service. /// ResponseHeader EndFindServers( IAsyncResult result, out ApplicationDescriptionCollection servers); #if (NET_STANDARD_ASYNC) /// /// Invokes the FindServers service using async Task based request. /// Task FindServersAsync( RequestHeader requestHeader, string endpointUrl, StringCollection localeIds, StringCollection serverUris, CancellationToken ct); #endif #endif #endregion #region FindServersOnNetwork Methods #if (!OPCUA_EXCLUDE_FindServersOnNetwork) /// /// Invokes the FindServersOnNetwork service. /// ResponseHeader FindServersOnNetwork( RequestHeader requestHeader, uint startingRecordId, uint maxRecordsToReturn, StringCollection serverCapabilityFilter, out DateTime lastCounterResetTime, out ServerOnNetworkCollection servers); /// /// Begins an asynchronous invocation of the FindServersOnNetwork service. /// IAsyncResult BeginFindServersOnNetwork( RequestHeader requestHeader, uint startingRecordId, uint maxRecordsToReturn, StringCollection serverCapabilityFilter, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the FindServersOnNetwork service. /// ResponseHeader EndFindServersOnNetwork( IAsyncResult result, out DateTime lastCounterResetTime, out ServerOnNetworkCollection servers); #if (NET_STANDARD_ASYNC) /// /// Invokes the FindServersOnNetwork service using async Task based request. /// Task FindServersOnNetworkAsync( RequestHeader requestHeader, uint startingRecordId, uint maxRecordsToReturn, StringCollection serverCapabilityFilter, CancellationToken ct); #endif #endif #endregion #region GetEndpoints Methods #if (!OPCUA_EXCLUDE_GetEndpoints) /// /// Invokes the GetEndpoints service. /// ResponseHeader GetEndpoints( RequestHeader requestHeader, string endpointUrl, StringCollection localeIds, StringCollection profileUris, out EndpointDescriptionCollection endpoints); /// /// Begins an asynchronous invocation of the GetEndpoints service. /// IAsyncResult BeginGetEndpoints( RequestHeader requestHeader, string endpointUrl, StringCollection localeIds, StringCollection profileUris, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the GetEndpoints service. /// ResponseHeader EndGetEndpoints( IAsyncResult result, out EndpointDescriptionCollection endpoints); #if (NET_STANDARD_ASYNC) /// /// Invokes the GetEndpoints service using async Task based request. /// Task GetEndpointsAsync( RequestHeader requestHeader, string endpointUrl, StringCollection localeIds, StringCollection profileUris, CancellationToken ct); #endif #endif #endregion #endregion } #endregion /// /// The client side interface for a UA server. /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class DiscoveryClient : ClientBase, IDiscoveryClientMethods { #region Constructors /// /// Intializes the object with a channel and a message context. /// public DiscoveryClient(ITransportChannel channel) : base(channel) { } #endregion #region Public Properties /// /// The component contains classes object use to communicate with the server. /// public new IDiscoveryChannel InnerChannel { get { return (IDiscoveryChannel)base.InnerChannel; } } #endregion #region Client API #region FindServers Methods #if (!OPCUA_EXCLUDE_FindServers) #if (!NET_STANDARD) /// /// Invokes the FindServers service. /// public virtual ResponseHeader FindServers( RequestHeader requestHeader, string endpointUrl, StringCollection localeIds, StringCollection serverUris, out ApplicationDescriptionCollection servers) { FindServersRequest request = new FindServersRequest(); FindServersResponse response = null; request.RequestHeader = requestHeader; request.EndpointUrl = endpointUrl; request.LocaleIds = localeIds; request.ServerUris = serverUris; UpdateRequestHeader(request, requestHeader == null, "FindServers"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (FindServersResponse)genericResponse; } else { FindServersResponseMessage responseMessage = InnerChannel.FindServers(new FindServersMessage(request)); if (responseMessage == null || responseMessage.FindServersResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.FindServersResponse; ValidateResponse(response.ResponseHeader); } servers = response.Servers; } finally { RequestCompleted(request, response, "FindServers"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the FindServers service. /// public virtual IAsyncResult BeginFindServers( RequestHeader requestHeader, string endpointUrl, StringCollection localeIds, StringCollection serverUris, AsyncCallback callback, object asyncState) { FindServersRequest request = new FindServersRequest(); request.RequestHeader = requestHeader; request.EndpointUrl = endpointUrl; request.LocaleIds = localeIds; request.ServerUris = serverUris; UpdateRequestHeader(request, requestHeader == null, "FindServers"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginFindServers(new FindServersMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the FindServers service. /// public virtual ResponseHeader EndFindServers( IAsyncResult result, out ApplicationDescriptionCollection servers) { FindServersResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (FindServersResponse)genericResponse; } else { FindServersResponseMessage responseMessage = InnerChannel.EndFindServers(result); if (responseMessage == null || responseMessage.FindServersResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.FindServersResponse; ValidateResponse(response.ResponseHeader); } servers = response.Servers; } finally { RequestCompleted(null, response, "FindServers"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the FindServers service. /// public virtual ResponseHeader FindServers( RequestHeader requestHeader, string endpointUrl, StringCollection localeIds, StringCollection serverUris, out ApplicationDescriptionCollection servers) { FindServersRequest request = new FindServersRequest(); FindServersResponse response = null; request.RequestHeader = requestHeader; request.EndpointUrl = endpointUrl; request.LocaleIds = localeIds; request.ServerUris = serverUris; UpdateRequestHeader(request, requestHeader == null, "FindServers"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (FindServersResponse)genericResponse; servers = response.Servers; } finally { RequestCompleted(request, response, "FindServers"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the FindServers service. /// public virtual IAsyncResult BeginFindServers( RequestHeader requestHeader, string endpointUrl, StringCollection localeIds, StringCollection serverUris, AsyncCallback callback, object asyncState) { FindServersRequest request = new FindServersRequest(); request.RequestHeader = requestHeader; request.EndpointUrl = endpointUrl; request.LocaleIds = localeIds; request.ServerUris = serverUris; UpdateRequestHeader(request, requestHeader == null, "FindServers"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the FindServers service. /// public virtual ResponseHeader EndFindServers( IAsyncResult result, out ApplicationDescriptionCollection servers) { FindServersResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (FindServersResponse)genericResponse; servers = response.Servers; } finally { RequestCompleted(null, response, "FindServers"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the FindServers service using async Task based request. /// public virtual async Task FindServersAsync( RequestHeader requestHeader, string endpointUrl, StringCollection localeIds, StringCollection serverUris, CancellationToken ct) { FindServersRequest request = new FindServersRequest(); FindServersResponse response = null; request.RequestHeader = requestHeader; request.EndpointUrl = endpointUrl; request.LocaleIds = localeIds; request.ServerUris = serverUris; UpdateRequestHeader(request, requestHeader == null, "FindServers"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (FindServersResponse)genericResponse; } finally { RequestCompleted(request, response, "FindServers"); } return response; } #endif #endif #endregion #region FindServersOnNetwork Methods #if (!OPCUA_EXCLUDE_FindServersOnNetwork) #if (!NET_STANDARD) /// /// Invokes the FindServersOnNetwork service. /// public virtual ResponseHeader FindServersOnNetwork( RequestHeader requestHeader, uint startingRecordId, uint maxRecordsToReturn, StringCollection serverCapabilityFilter, out DateTime lastCounterResetTime, out ServerOnNetworkCollection servers) { FindServersOnNetworkRequest request = new FindServersOnNetworkRequest(); FindServersOnNetworkResponse response = null; request.RequestHeader = requestHeader; request.StartingRecordId = startingRecordId; request.MaxRecordsToReturn = maxRecordsToReturn; request.ServerCapabilityFilter = serverCapabilityFilter; UpdateRequestHeader(request, requestHeader == null, "FindServersOnNetwork"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (FindServersOnNetworkResponse)genericResponse; } else { FindServersOnNetworkResponseMessage responseMessage = InnerChannel.FindServersOnNetwork(new FindServersOnNetworkMessage(request)); if (responseMessage == null || responseMessage.FindServersOnNetworkResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.FindServersOnNetworkResponse; ValidateResponse(response.ResponseHeader); } lastCounterResetTime = response.LastCounterResetTime; servers = response.Servers; } finally { RequestCompleted(request, response, "FindServersOnNetwork"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the FindServersOnNetwork service. /// public virtual IAsyncResult BeginFindServersOnNetwork( RequestHeader requestHeader, uint startingRecordId, uint maxRecordsToReturn, StringCollection serverCapabilityFilter, AsyncCallback callback, object asyncState) { FindServersOnNetworkRequest request = new FindServersOnNetworkRequest(); request.RequestHeader = requestHeader; request.StartingRecordId = startingRecordId; request.MaxRecordsToReturn = maxRecordsToReturn; request.ServerCapabilityFilter = serverCapabilityFilter; UpdateRequestHeader(request, requestHeader == null, "FindServersOnNetwork"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginFindServersOnNetwork(new FindServersOnNetworkMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the FindServersOnNetwork service. /// public virtual ResponseHeader EndFindServersOnNetwork( IAsyncResult result, out DateTime lastCounterResetTime, out ServerOnNetworkCollection servers) { FindServersOnNetworkResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (FindServersOnNetworkResponse)genericResponse; } else { FindServersOnNetworkResponseMessage responseMessage = InnerChannel.EndFindServersOnNetwork(result); if (responseMessage == null || responseMessage.FindServersOnNetworkResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.FindServersOnNetworkResponse; ValidateResponse(response.ResponseHeader); } lastCounterResetTime = response.LastCounterResetTime; servers = response.Servers; } finally { RequestCompleted(null, response, "FindServersOnNetwork"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the FindServersOnNetwork service. /// public virtual ResponseHeader FindServersOnNetwork( RequestHeader requestHeader, uint startingRecordId, uint maxRecordsToReturn, StringCollection serverCapabilityFilter, out DateTime lastCounterResetTime, out ServerOnNetworkCollection servers) { FindServersOnNetworkRequest request = new FindServersOnNetworkRequest(); FindServersOnNetworkResponse response = null; request.RequestHeader = requestHeader; request.StartingRecordId = startingRecordId; request.MaxRecordsToReturn = maxRecordsToReturn; request.ServerCapabilityFilter = serverCapabilityFilter; UpdateRequestHeader(request, requestHeader == null, "FindServersOnNetwork"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (FindServersOnNetworkResponse)genericResponse; lastCounterResetTime = response.LastCounterResetTime; servers = response.Servers; } finally { RequestCompleted(request, response, "FindServersOnNetwork"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the FindServersOnNetwork service. /// public virtual IAsyncResult BeginFindServersOnNetwork( RequestHeader requestHeader, uint startingRecordId, uint maxRecordsToReturn, StringCollection serverCapabilityFilter, AsyncCallback callback, object asyncState) { FindServersOnNetworkRequest request = new FindServersOnNetworkRequest(); request.RequestHeader = requestHeader; request.StartingRecordId = startingRecordId; request.MaxRecordsToReturn = maxRecordsToReturn; request.ServerCapabilityFilter = serverCapabilityFilter; UpdateRequestHeader(request, requestHeader == null, "FindServersOnNetwork"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the FindServersOnNetwork service. /// public virtual ResponseHeader EndFindServersOnNetwork( IAsyncResult result, out DateTime lastCounterResetTime, out ServerOnNetworkCollection servers) { FindServersOnNetworkResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (FindServersOnNetworkResponse)genericResponse; lastCounterResetTime = response.LastCounterResetTime; servers = response.Servers; } finally { RequestCompleted(null, response, "FindServersOnNetwork"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the FindServersOnNetwork service using async Task based request. /// public virtual async Task FindServersOnNetworkAsync( RequestHeader requestHeader, uint startingRecordId, uint maxRecordsToReturn, StringCollection serverCapabilityFilter, CancellationToken ct) { FindServersOnNetworkRequest request = new FindServersOnNetworkRequest(); FindServersOnNetworkResponse response = null; request.RequestHeader = requestHeader; request.StartingRecordId = startingRecordId; request.MaxRecordsToReturn = maxRecordsToReturn; request.ServerCapabilityFilter = serverCapabilityFilter; UpdateRequestHeader(request, requestHeader == null, "FindServersOnNetwork"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (FindServersOnNetworkResponse)genericResponse; } finally { RequestCompleted(request, response, "FindServersOnNetwork"); } return response; } #endif #endif #endregion #region GetEndpoints Methods #if (!OPCUA_EXCLUDE_GetEndpoints) #if (!NET_STANDARD) /// /// Invokes the GetEndpoints service. /// public virtual ResponseHeader GetEndpoints( RequestHeader requestHeader, string endpointUrl, StringCollection localeIds, StringCollection profileUris, out EndpointDescriptionCollection endpoints) { GetEndpointsRequest request = new GetEndpointsRequest(); GetEndpointsResponse response = null; request.RequestHeader = requestHeader; request.EndpointUrl = endpointUrl; request.LocaleIds = localeIds; request.ProfileUris = profileUris; UpdateRequestHeader(request, requestHeader == null, "GetEndpoints"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (GetEndpointsResponse)genericResponse; } else { GetEndpointsResponseMessage responseMessage = InnerChannel.GetEndpoints(new GetEndpointsMessage(request)); if (responseMessage == null || responseMessage.GetEndpointsResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.GetEndpointsResponse; ValidateResponse(response.ResponseHeader); } endpoints = response.Endpoints; } finally { RequestCompleted(request, response, "GetEndpoints"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the GetEndpoints service. /// public virtual IAsyncResult BeginGetEndpoints( RequestHeader requestHeader, string endpointUrl, StringCollection localeIds, StringCollection profileUris, AsyncCallback callback, object asyncState) { GetEndpointsRequest request = new GetEndpointsRequest(); request.RequestHeader = requestHeader; request.EndpointUrl = endpointUrl; request.LocaleIds = localeIds; request.ProfileUris = profileUris; UpdateRequestHeader(request, requestHeader == null, "GetEndpoints"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginGetEndpoints(new GetEndpointsMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the GetEndpoints service. /// public virtual ResponseHeader EndGetEndpoints( IAsyncResult result, out EndpointDescriptionCollection endpoints) { GetEndpointsResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (GetEndpointsResponse)genericResponse; } else { GetEndpointsResponseMessage responseMessage = InnerChannel.EndGetEndpoints(result); if (responseMessage == null || responseMessage.GetEndpointsResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.GetEndpointsResponse; ValidateResponse(response.ResponseHeader); } endpoints = response.Endpoints; } finally { RequestCompleted(null, response, "GetEndpoints"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the GetEndpoints service. /// public virtual ResponseHeader GetEndpoints( RequestHeader requestHeader, string endpointUrl, StringCollection localeIds, StringCollection profileUris, out EndpointDescriptionCollection endpoints) { GetEndpointsRequest request = new GetEndpointsRequest(); GetEndpointsResponse response = null; request.RequestHeader = requestHeader; request.EndpointUrl = endpointUrl; request.LocaleIds = localeIds; request.ProfileUris = profileUris; UpdateRequestHeader(request, requestHeader == null, "GetEndpoints"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (GetEndpointsResponse)genericResponse; endpoints = response.Endpoints; } finally { RequestCompleted(request, response, "GetEndpoints"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the GetEndpoints service. /// public virtual IAsyncResult BeginGetEndpoints( RequestHeader requestHeader, string endpointUrl, StringCollection localeIds, StringCollection profileUris, AsyncCallback callback, object asyncState) { GetEndpointsRequest request = new GetEndpointsRequest(); request.RequestHeader = requestHeader; request.EndpointUrl = endpointUrl; request.LocaleIds = localeIds; request.ProfileUris = profileUris; UpdateRequestHeader(request, requestHeader == null, "GetEndpoints"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the GetEndpoints service. /// public virtual ResponseHeader EndGetEndpoints( IAsyncResult result, out EndpointDescriptionCollection endpoints) { GetEndpointsResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (GetEndpointsResponse)genericResponse; endpoints = response.Endpoints; } finally { RequestCompleted(null, response, "GetEndpoints"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the GetEndpoints service using async Task based request. /// public virtual async Task GetEndpointsAsync( RequestHeader requestHeader, string endpointUrl, StringCollection localeIds, StringCollection profileUris, CancellationToken ct) { GetEndpointsRequest request = new GetEndpointsRequest(); GetEndpointsResponse response = null; request.RequestHeader = requestHeader; request.EndpointUrl = endpointUrl; request.LocaleIds = localeIds; request.ProfileUris = profileUris; UpdateRequestHeader(request, requestHeader == null, "GetEndpoints"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (GetEndpointsResponse)genericResponse; } finally { RequestCompleted(request, response, "GetEndpoints"); } return response; } #endif #endif #endregion #endregion } #region IRegistrationClientMethods Interface /// /// An interface used by by clients to access a UA server. /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public interface IRegistrationClientMethods { #region Client Interface #region RegisterServer Methods #if (!OPCUA_EXCLUDE_RegisterServer) /// /// Invokes the RegisterServer service. /// ResponseHeader RegisterServer( RequestHeader requestHeader, RegisteredServer server); /// /// Begins an asynchronous invocation of the RegisterServer service. /// IAsyncResult BeginRegisterServer( RequestHeader requestHeader, RegisteredServer server, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the RegisterServer service. /// ResponseHeader EndRegisterServer( IAsyncResult result); #if (NET_STANDARD_ASYNC) /// /// Invokes the RegisterServer service using async Task based request. /// Task RegisterServerAsync( RequestHeader requestHeader, RegisteredServer server, CancellationToken ct); #endif #endif #endregion #region RegisterServer2 Methods #if (!OPCUA_EXCLUDE_RegisterServer2) /// /// Invokes the RegisterServer2 service. /// ResponseHeader RegisterServer2( RequestHeader requestHeader, RegisteredServer server, ExtensionObjectCollection discoveryConfiguration, out StatusCodeCollection configurationResults, out DiagnosticInfoCollection diagnosticInfos); /// /// Begins an asynchronous invocation of the RegisterServer2 service. /// IAsyncResult BeginRegisterServer2( RequestHeader requestHeader, RegisteredServer server, ExtensionObjectCollection discoveryConfiguration, AsyncCallback callback, object asyncState); /// /// Finishes an asynchronous invocation of the RegisterServer2 service. /// ResponseHeader EndRegisterServer2( IAsyncResult result, out StatusCodeCollection configurationResults, out DiagnosticInfoCollection diagnosticInfos); #if (NET_STANDARD_ASYNC) /// /// Invokes the RegisterServer2 service using async Task based request. /// Task RegisterServer2Async( RequestHeader requestHeader, RegisteredServer server, ExtensionObjectCollection discoveryConfiguration, CancellationToken ct); #endif #endif #endregion #endregion } #endregion /// /// The client side interface for a UA server. /// /// [System.CodeDom.Compiler.GeneratedCodeAttribute("Opc.Ua.ModelCompiler", "1.0.0.0")] public partial class RegistrationClient : ClientBase, IRegistrationClientMethods { #region Constructors /// /// Intializes the object with a channel and a message context. /// public RegistrationClient(ITransportChannel channel) : base(channel) { } #endregion #region Public Properties /// /// The component contains classes object use to communicate with the server. /// public new IRegistrationChannel InnerChannel { get { return (IRegistrationChannel)base.InnerChannel; } } #endregion #region Client API #region RegisterServer Methods #if (!OPCUA_EXCLUDE_RegisterServer) #if (!NET_STANDARD) /// /// Invokes the RegisterServer service. /// public virtual ResponseHeader RegisterServer( RequestHeader requestHeader, RegisteredServer server) { RegisterServerRequest request = new RegisterServerRequest(); RegisterServerResponse response = null; request.RequestHeader = requestHeader; request.Server = server; UpdateRequestHeader(request, requestHeader == null, "RegisterServer"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (RegisterServerResponse)genericResponse; } else { RegisterServerResponseMessage responseMessage = InnerChannel.RegisterServer(new RegisterServerMessage(request)); if (responseMessage == null || responseMessage.RegisterServerResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.RegisterServerResponse; ValidateResponse(response.ResponseHeader); } } finally { RequestCompleted(request, response, "RegisterServer"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the RegisterServer service. /// public virtual IAsyncResult BeginRegisterServer( RequestHeader requestHeader, RegisteredServer server, AsyncCallback callback, object asyncState) { RegisterServerRequest request = new RegisterServerRequest(); request.RequestHeader = requestHeader; request.Server = server; UpdateRequestHeader(request, requestHeader == null, "RegisterServer"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginRegisterServer(new RegisterServerMessage(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the RegisterServer service. /// public virtual ResponseHeader EndRegisterServer( IAsyncResult result) { RegisterServerResponse response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (RegisterServerResponse)genericResponse; } else { RegisterServerResponseMessage responseMessage = InnerChannel.EndRegisterServer(result); if (responseMessage == null || responseMessage.RegisterServerResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.RegisterServerResponse; ValidateResponse(response.ResponseHeader); } } finally { RequestCompleted(null, response, "RegisterServer"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the RegisterServer service. /// public virtual ResponseHeader RegisterServer( RequestHeader requestHeader, RegisteredServer server) { RegisterServerRequest request = new RegisterServerRequest(); RegisterServerResponse response = null; request.RequestHeader = requestHeader; request.Server = server; UpdateRequestHeader(request, requestHeader == null, "RegisterServer"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (RegisterServerResponse)genericResponse; } finally { RequestCompleted(request, response, "RegisterServer"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the RegisterServer service. /// public virtual IAsyncResult BeginRegisterServer( RequestHeader requestHeader, RegisteredServer server, AsyncCallback callback, object asyncState) { RegisterServerRequest request = new RegisterServerRequest(); request.RequestHeader = requestHeader; request.Server = server; UpdateRequestHeader(request, requestHeader == null, "RegisterServer"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the RegisterServer service. /// public virtual ResponseHeader EndRegisterServer( IAsyncResult result) { RegisterServerResponse response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (RegisterServerResponse)genericResponse; } finally { RequestCompleted(null, response, "RegisterServer"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the RegisterServer service using async Task based request. /// public virtual async Task RegisterServerAsync( RequestHeader requestHeader, RegisteredServer server, CancellationToken ct) { RegisterServerRequest request = new RegisterServerRequest(); RegisterServerResponse response = null; request.RequestHeader = requestHeader; request.Server = server; UpdateRequestHeader(request, requestHeader == null, "RegisterServer"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (RegisterServerResponse)genericResponse; } finally { RequestCompleted(request, response, "RegisterServer"); } return response; } #endif #endif #endregion #region RegisterServer2 Methods #if (!OPCUA_EXCLUDE_RegisterServer2) #if (!NET_STANDARD) /// /// Invokes the RegisterServer2 service. /// public virtual ResponseHeader RegisterServer2( RequestHeader requestHeader, RegisteredServer server, ExtensionObjectCollection discoveryConfiguration, out StatusCodeCollection configurationResults, out DiagnosticInfoCollection diagnosticInfos) { RegisterServer2Request request = new RegisterServer2Request(); RegisterServer2Response response = null; request.RequestHeader = requestHeader; request.Server = server; request.DiscoveryConfiguration = discoveryConfiguration; UpdateRequestHeader(request, requestHeader == null, "RegisterServer2"); try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (RegisterServer2Response)genericResponse; } else { RegisterServer2ResponseMessage responseMessage = InnerChannel.RegisterServer2(new RegisterServer2Message(request)); if (responseMessage == null || responseMessage.RegisterServer2Response == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.RegisterServer2Response; ValidateResponse(response.ResponseHeader); } configurationResults = response.ConfigurationResults; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "RegisterServer2"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the RegisterServer2 service. /// public virtual IAsyncResult BeginRegisterServer2( RequestHeader requestHeader, RegisteredServer server, ExtensionObjectCollection discoveryConfiguration, AsyncCallback callback, object asyncState) { RegisterServer2Request request = new RegisterServer2Request(); request.RequestHeader = requestHeader; request.Server = server; request.DiscoveryConfiguration = discoveryConfiguration; UpdateRequestHeader(request, requestHeader == null, "RegisterServer2"); if (UseTransportChannel) { return TransportChannel.BeginSendRequest(request, callback, asyncState); } return InnerChannel.BeginRegisterServer2(new RegisterServer2Message(request), callback, asyncState); } /// /// Finishes an asynchronous invocation of the RegisterServer2 service. /// public virtual ResponseHeader EndRegisterServer2( IAsyncResult result, out StatusCodeCollection configurationResults, out DiagnosticInfoCollection diagnosticInfos) { RegisterServer2Response response = null; try { if (UseTransportChannel) { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (RegisterServer2Response)genericResponse; } else { RegisterServer2ResponseMessage responseMessage = InnerChannel.EndRegisterServer2(result); if (responseMessage == null || responseMessage.RegisterServer2Response == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } response = responseMessage.RegisterServer2Response; ValidateResponse(response.ResponseHeader); } configurationResults = response.ConfigurationResults; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "RegisterServer2"); } return response.ResponseHeader; } #else // NET_STANDARD /// /// Invokes the RegisterServer2 service. /// public virtual ResponseHeader RegisterServer2( RequestHeader requestHeader, RegisteredServer server, ExtensionObjectCollection discoveryConfiguration, out StatusCodeCollection configurationResults, out DiagnosticInfoCollection diagnosticInfos) { RegisterServer2Request request = new RegisterServer2Request(); RegisterServer2Response response = null; request.RequestHeader = requestHeader; request.Server = server; request.DiscoveryConfiguration = discoveryConfiguration; UpdateRequestHeader(request, requestHeader == null, "RegisterServer2"); try { IServiceResponse genericResponse = TransportChannel.SendRequest(request); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (RegisterServer2Response)genericResponse; configurationResults = response.ConfigurationResults; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(request, response, "RegisterServer2"); } return response.ResponseHeader; } /// /// Begins an asynchronous invocation of the RegisterServer2 service. /// public virtual IAsyncResult BeginRegisterServer2( RequestHeader requestHeader, RegisteredServer server, ExtensionObjectCollection discoveryConfiguration, AsyncCallback callback, object asyncState) { RegisterServer2Request request = new RegisterServer2Request(); request.RequestHeader = requestHeader; request.Server = server; request.DiscoveryConfiguration = discoveryConfiguration; UpdateRequestHeader(request, requestHeader == null, "RegisterServer2"); return TransportChannel.BeginSendRequest(request, callback, asyncState); } /// /// Finishes an asynchronous invocation of the RegisterServer2 service. /// public virtual ResponseHeader EndRegisterServer2( IAsyncResult result, out StatusCodeCollection configurationResults, out DiagnosticInfoCollection diagnosticInfos) { RegisterServer2Response response = null; try { IServiceResponse genericResponse = TransportChannel.EndSendRequest(result); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (RegisterServer2Response)genericResponse; configurationResults = response.ConfigurationResults; diagnosticInfos = response.DiagnosticInfos; } finally { RequestCompleted(null, response, "RegisterServer2"); } return response.ResponseHeader; } #endif #if (NET_STANDARD_ASYNC) /// /// Invokes the RegisterServer2 service using async Task based request. /// public virtual async Task RegisterServer2Async( RequestHeader requestHeader, RegisteredServer server, ExtensionObjectCollection discoveryConfiguration, CancellationToken ct) { RegisterServer2Request request = new RegisterServer2Request(); RegisterServer2Response response = null; request.RequestHeader = requestHeader; request.Server = server; request.DiscoveryConfiguration = discoveryConfiguration; UpdateRequestHeader(request, requestHeader == null, "RegisterServer2"); try { IServiceResponse genericResponse = await TransportChannel.SendRequestAsync(request, ct).ConfigureAwait(false); if (genericResponse == null) { throw new ServiceResultException(StatusCodes.BadUnknownResponse); } ValidateResponse(genericResponse.ResponseHeader); response = (RegisterServer2Response)genericResponse; } finally { RequestCompleted(request, response, "RegisterServer2"); } return response; } #endif #endif #endregion #endregion } }