// Shows how to unregister all clients from a GDS.
//
// Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-ConnectivityStudio/Latest/examples.html .
// OPC client and subscriber examples in C# on GitHub: https://github.com/OPCLabs/Examples-ConnectivityStudio-CSharp .
// Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
// a commercial license in order to use Online Forums, and we reply to every post.
using System;
using System.Collections.Generic;
using System.Linq;
using OpcLabs.BaseLib.Collections.Generic.Extensions;
using OpcLabs.EasyOpc.UA;
using OpcLabs.EasyOpc.UA.AddressSpace;
using OpcLabs.EasyOpc.UA.Discovery;
using OpcLabs.EasyOpc.UA.Extensions;
using OpcLabs.EasyOpc.UA.Gds;
using OpcLabs.EasyOpc.UA.OperationModel;
namespace UADocExamples.Gds._EasyUAGlobalDiscoveryClient
{
class UnregisterApplication
{
public static void Main1()
{
// Define which GDS we will work with.
UAEndpointDescriptor gdsEndpointDescriptor =
((UAEndpointDescriptor)"opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer")
.WithUserNameIdentity("appadmin", "demo");
// Instantiate the global discovery client object
var globalDiscoveryClient = new EasyUAGlobalDiscoveryClient();
// Find application IDs of all client applications registered in the GDS.
var clientApplicationIds = new HashSet<UANodeId>();
try
{
globalDiscoveryClient.QueryApplications(
gdsEndpointDescriptor: gdsEndpointDescriptor,
startingRecordId: 0,
maximumRecordsToReturn: 0,
applicationName: "",
applicationUriString: "",
applicationTypes: UAApplicationTypes.Client,
productUriString: "",
serverCapabilities: new string[0],
lastCounterResetTime: out _,
nextRecordId: out _,
applications: out UAApplicationDescription[] applicationDescriptionArray);
foreach (UAApplicationDescription applicationDescription in applicationDescriptionArray)
{
var applicationRecordArray = globalDiscoveryClient.FindApplications(
gdsEndpointDescriptor,
applicationDescription.ApplicationUriString);
clientApplicationIds.AddRange(applicationRecordArray.Select(description => description.ApplicationId));
}
}
catch (UAException uaException)
{
Console.WriteLine("*** Failure: {0}", uaException.GetBaseException().Message);
return;
}
// Unregister all client applications found.
foreach (UANodeId applicationId in clientApplicationIds)
{
Console.WriteLine();
Console.WriteLine("Application ID: {0}", applicationId);
try
{
globalDiscoveryClient.UnregisterApplication(gdsEndpointDescriptor, applicationId);
}
catch (UAException uaException)
{
Console.WriteLine("*** Failure: {0}", uaException.GetBaseException().Message);
continue;
}
Console.WriteLine("Unregistered.");
}
}
}
}
' Shows how to unregister all clients from a GDS.
'
' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-ConnectivityStudio/Latest/examples.html .
' OPC client and subscriber examples in VB.NET on GitHub: https://github.com/OPCLabs/Examples-ConnectivityStudio-VBNET .
' Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
' a commercial license in order to use Online Forums, and we reply to every post.
Imports OpcLabs.BaseLib.Collections.Generic.Extensions
Imports OpcLabs.EasyOpc.UA
Imports OpcLabs.EasyOpc.UA.AddressSpace
Imports OpcLabs.EasyOpc.UA.Discovery
Imports OpcLabs.EasyOpc.UA.Extensions
Imports OpcLabs.EasyOpc.UA.Gds
Imports OpcLabs.EasyOpc.UA.OperationModel
Namespace Global.UADocExamples.Gds._EasyUAGlobalDiscoveryClient
Friend Class UnregisterApplication
Public Shared Sub Main1()
' Define which GDS we will work with.
Dim gdsEndpointDescriptor As UAEndpointDescriptor =
New UAEndpointDescriptor("opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer") _
.WithUserNameIdentity("appadmin", "demo")
' Instantiate the global discovery client object
Dim globalDiscoveryClient = New EasyUAGlobalDiscoveryClient()
' Find application IDs of all client applications registered in the GDS.
Dim clientApplicationIds = New HashSet(Of UANodeId)
Try
Dim lastCounterResetTime As DateTime
Dim nextRecordId As Long
Dim applicationDescriptionArray() As UAApplicationDescription = Nothing
globalDiscoveryClient.QueryApplications(
gdsEndpointDescriptor:=gdsEndpointDescriptor,
startingRecordId:=0,
maximumRecordsToReturn:=0,
applicationName:="",
applicationUriString:="",
applicationTypes:=UAApplicationTypes.Client,
productUriString:="",
serverCapabilities:=New String() {},
lastCounterResetTime:=lastCounterResetTime,
nextRecordId:=nextRecordId,
applications:=applicationDescriptionArray)
For Each applicationDescription As UAApplicationDescription In applicationDescriptionArray
Dim applicationRecordArray = globalDiscoveryClient.FindApplications(
gdsEndpointDescriptor,
applicationDescription.ApplicationUriString)
clientApplicationIds.AddRange(applicationRecordArray.Select(Function(description) description.ApplicationId))
Next applicationDescription
Catch uaException As UAException
Console.WriteLine("*** Failure: {0}", uaException.GetBaseException.Message)
Exit Sub
End Try
' Unregister all client applications found.
For Each applicationId As UANodeId In clientApplicationIds
Console.WriteLine()
Console.WriteLine("Application ID: {0}", applicationId)
Try
globalDiscoveryClient.UnregisterApplication(gdsEndpointDescriptor, applicationId)
Catch uaException As UAException
Console.WriteLine("*** Failure: {0}", uaException.GetBaseException.Message)
Continue For
End Try
Console.WriteLine("Unregistered.")
Next applicationId
End Sub
End Class
End Namespace
// Shows how to unregister all clients from a GDS.
//
// Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-ConnectivityStudio/Latest/examples.html .
// OPC client and subscriber examples in Object Pascal (Delphi) on GitHub: https://github.com/OPCLabs/Examples-ConnectivityStudio-OP .
// Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
// a commercial license in order to use Online Forums, and we reply to every post.
class procedure UnregisterApplication.Main;
var
ApplicationDescription: _UAApplicationDescription;
ApplicationDescriptionArray: OleVariant;
ApplicationId: _UANodeId;
ApplicationName: WideString;
ApplicationRecord: _UAApplicationRecordDataType;
ApplicationRecordArray: OleVariant;
ApplicationUriString: WideString;
ClientApplicationIds: TList<_UANodeID>;
GlobalDiscoveryClient: OpcLabs_EasyOpcUA_TLB._EasyUAGlobalDiscoveryClient;
GdsEndpointDescriptor: _UAEndpointDescriptor;
I, J: integer;
LastCounterResetTime: TDateTime;
MaximumRecordsToReturn: Integer;
NextRecordId: Integer;
ProductUriString: WideString;
ServerCapabilities: array of string;
StartingRecordId: Integer;
begin
// Define which GDS we will work with.
GdsEndpointDescriptor := CoUAEndpointDescriptor.Create;
GdsEndpointDescriptor.UrlString := 'opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer';
GdsEndpointDescriptor.UserIdentity.UserNameTokenInfo.UserName := 'appadmin';
GdsEndpointDescriptor.UserIdentity.UserNameTokenInfo.Password := 'demo';
// Instantiate the global discovery client object
GlobalDiscoveryClient := CoEasyUAGlobalDiscoveryClient.Create;
// Find application IDs of all client applications registered in the GDS.
ClientApplicationIds := TList<_UANodeID>.Create();
StartingRecordId := 0;
MaximumRecordsToReturn := 0;
ApplicationName := '';
ApplicationUriString := '';
ProductUriString := '';
try
GlobalDiscoveryClient.QueryApplications(
GdsEndpointDescriptor,
StartingRecordId,
MaximumRecordsToReturn,
ApplicationName,
ApplicationUriString,
UAApplicationTypes_Client,
ProductUriString,
ServerCapabilities,
LastCounterResetTime,
NextRecordId,
ApplicationDescriptionArray);
for I := VarArrayLowBound(ApplicationDescriptionArray,1) to VarArrayHighBound(ApplicationDescriptionArray,1) do
begin
ApplicationDescription := IUnknown(ApplicationDescriptionArray[I]) as _UAApplicationDescription;
TVarData(ApplicationRecordArray).VType := varArray or varVariant;
TVarData(ApplicationRecordArray).VArray := PVarArray(GlobalDiscoveryClient.FindApplications(
GdsEndpointDescriptor, ApplicationDescription.ApplicationUriString));
for J := VarArrayLowBound(ApplicationRecordArray,1) to VarArrayHighBound(ApplicationRecordArray,1) do
begin
ApplicationRecord := IUnknown(ApplicationRecordArray[J]) as _UAApplicationRecordDataType;
ClientApplicationIds.Add(ApplicationRecord.ApplicationId);
end;
end;
except
on E: EOleException do
begin
WriteLn(Format('*** Failure: %s', [E.GetBaseException.Message]));
end;
end;
// Unregister all client applications found.
for ApplicationId in ClientApplicationIds do
begin
WriteLn;
WriteLn('Application ID: ', ApplicationId.ToString);
try
GlobalDiscoveryClient.UnregisterApplication(
GdsEndpointDescriptor, ApplicationId);
except
on E: EOleException do
begin
WriteLn(Format('*** Failure: %s', [E.GetBaseException.Message]));
Continue;
end;
end;
WriteLn('Unregistered.');
end;
FreeAndNil(ClientApplicationIds);
end;
# Shows how to unregister all clients from a GDS.
#
# Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-ConnectivityStudio/Latest/examples.html .
# OPC client and subscriber examples in Python on GitHub: https://github.com/OPCLabs/Examples-ConnectivityStudio-Python .
# Missing some example? Ask us for it on our Online Forums, https://www.opclabs.com/forum/index ! You do not have to own
# a commercial license in order to use Online Forums, and we reply to every post.
# The QuickOPC package is needed. Install it using "pip install opclabs_quickopc".
import opclabs_quickopc
# Import .NET namespaces.
from System import *
from OpcLabs.EasyOpc.UA import *
from OpcLabs.EasyOpc.UA.Discovery import *
from OpcLabs.EasyOpc.UA.Extensions import *
from OpcLabs.EasyOpc.UA.Gds import *
from OpcLabs.EasyOpc.UA.OperationModel import *
# Define which GDS we will work with.
gdsEndpointDescriptor = UAEndpointDescriptor('opc.tcp://opcua.demo-this.com:58810/GlobalDiscoveryServer')
gdsEndpointDescriptor = UAEndpointDescriptorExtension.WithUserNameIdentity(gdsEndpointDescriptor,
'appadmin', 'demo')
# Instantiate the global discovery client object.
globalDiscoveryClient = EasyUAGlobalDiscoveryClient()
# Find application IDs of all client applications registered in the GDS.
clientApplicationIds = set()
try:
_, _, _, applicationDescriptionArray = globalDiscoveryClient.QueryApplications(
gdsEndpointDescriptor,
0, # startingRecordId
0, # maximumRecordsToReturn
'', # applicationName
'', # applicationUriString
UAApplicationTypes.Client, # applicationTypes
'', # productUriString
Array.Empty[String](), # serverCapabilities
DateTime(), # out lastCounterResetTime
0, # out nextRecordId
Array.Empty[UAApplicationDescription]()) # out applications
for applicationDescription in applicationDescriptionArray:
applicationRecordArray = globalDiscoveryClient.FindApplications(
gdsEndpointDescriptor,
applicationDescription.ApplicationUriString)
for applicationRecord in applicationRecordArray:
clientApplicationIds.add(applicationRecord.ApplicationId)
except UAException as uaException:
print('*** Failure: ' + uaException.GetBaseException().Message)
exit()
# Unregister all client applications found.
for applicationId in clientApplicationIds:
print()
print('Application ID: ', applicationId, sep='')
try:
globalDiscoveryClient.UnregisterApplication(gdsEndpointDescriptor, applicationId)
except UAException as uaException:
print('*** Failure: ' + uaException.GetBaseException().Message)
continue
print('Application unregistered.')
print()
print('Finished.')