OPC Studio User's Guide and Reference
EndpointStateChanged Event (IEasyUAServerEndpointMonitoring)
Example 



OpcLabs.ServerOpcUA Assembly > OpcLabs.EasyOpc.UA Namespace > IEasyUAServerEndpointMonitoring Interface : EndpointStateChanged Event
Raised when the state of the OPC UA server endpoint has changed.
Syntax
'Declaration
 
Event EndpointStateChanged As EasyUAServerEndpointStateChangedEventHandler
'Usage
 
Dim instance As IEasyUAServerEndpointMonitoring
Dim handler As EasyUAServerEndpointStateChangedEventHandler
 
AddHandler instance.EndpointStateChanged, handler
Event Data

The event handler receives an argument of type EasyUAServerEndpointStateChangedEventArgs containing data related to this event. The following EasyUAServerEndpointStateChangedEventArgs properties provide information specific to this event.

PropertyDescription
Indicates the state of the connection. (Inherited from OpcLabs.BaseLib.Communication.ConnectedConditionChangedEventArgs)
Diagnostics information (such as warnings) assembled during the operation. (Inherited from OpcLabs.BaseLib.OperationModel.OperationEventArgs)
Count of diagnostic information elements assembled during the operation. (Inherited from OpcLabs.BaseLib.OperationModel.OperationEventArgs)
Textual summary of diagnostics information, one message per line. (Inherited from OpcLabs.BaseLib.OperationModel.OperationEventArgs)
The URL of the endpoint.  
The URL string of the endpoint.  
Gets or sets the error ID of the error. (Inherited from OpcLabs.BaseLib.OperationModel.OperationEventArgs)
Gets or sets a message that describes the current exception. (Inherited from OpcLabs.BaseLib.OperationModel.OperationEventArgs)
The first line of the error message. (Inherited from OpcLabs.BaseLib.OperationModel.OperationEventArgs)
Gets the current exception. Contains null reference when no exception. (Inherited from OpcLabs.BaseLib.OperationModel.OperationEventArgs)
Indicates whether the object is now connected. (Inherited from OpcLabs.BaseLib.Communication.ConnectedConditionChangedEventArgs)
The (effective) message security modes of the endpoint.  
A normalized OpcLabs.BaseLib.OperationModel.OperationEventArgs.Diagnostics collection. (Inherited from OpcLabs.BaseLib.OperationModel.OperationEventArgs)
A normalized OpcLabs.BaseLib.OperationModel.OperationEventArgs.Exception object, or null if there was no error. (Inherited from OpcLabs.BaseLib.OperationModel.OperationEventArgs)
When disconnected, time to next reconnection attempt. In milliseconds. (Inherited from OpcLabs.BaseLib.Communication.ConnectedConditionChangedEventArgs)
Gets or sets statistics for the connected condition at the moment the event was generated. (Inherited from OpcLabs.BaseLib.Communication.ConnectedConditionChangedEventArgs)
Status information corresponding to the contents of the event arguments. (Inherited from OpcLabs.BaseLib.Communication.ConnectedConditionChangedEventArgs)
Gets indication whether the operation has succeeded. (Inherited from OpcLabs.BaseLib.OperationModel.OperationEventArgs)
Remarks

You receive notifications when the endpoint is opening, when it is (successfully) open, when it is closing, and when it has closed (which may be due to a failure during opening). The event notification passes to you an instance of the OpcLabs.EasyOpc.UA.OperationModel.EasyUAServerEndpointStateChangedEventArgs Class, which contains data about the condition of the server endpoint. The OpcLabs.EasyOpc.UA.OperationModel.EasyUAServerEndpointStateChangedEventArgs.EndpointUrlString Property (and OpcLabs.EasyOpc.UA.OperationModel.EasyUAServerEndpointStateChangedEventArgs.EndpointUrl Property) contain the URL of the endpoint, and the OpcLabs.EasyOpc.UA.OperationModel.EasyUAServerEndpointStateChangedEventArgs.MessageSecurityModes Property contains its effective message security modes. The OpcLabs.BaseLib.Communication.ConnectedConditionChangedEventArgs.ConnectionState Property indicates the state of the server endpoint (it is open when the OpcLabs.BaseLib.Communication.ConnectedConditionChangedEventArgs.IsConnected Property is true). The System.Exception Property contains a null reference in case of success, or it contains an exception object in case of problems.

Example
// This example shows how to obtain notifications about the changes in the state of the endpoints that server exposes.
// You can use any OPC UA client, including our Connectivity Explorer and OpcCmd utility, to connect to the server. 
//
// Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
// OPC client, server and subscriber examples in C# on GitHub: https://github.com/OPCLabs/Examples-OPCStudio-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 OpcLabs.EasyOpc.UA;
using OpcLabs.EasyOpc.UA.NodeSpace;
using OpcLabs.EasyOpc.UA.OperationModel;

namespace UAServerDocExamples._EasyUAServer
{
    class EndpointStateChanged
    {
        public static void Main1()
        {
            // Instantiate the server object.
            // By default, the server will run on endpoint URL "opc.tcp://localhost:48040/".
            var server = new EasyUAServer();

            // Define a data variable providing random integers.
            var random = new Random();
            server.Add(new UADataVariable("MyDataVariable").ReadValueFunction(() => random.Next()));

            // Hook events.
            server.EndpointStateChanged += ServerOnEndpointStateChanged;

            // Start the server.
            Console.WriteLine("The server is starting...");
            server.Start();

            Console.WriteLine("The server is started.");
            Console.WriteLine();

            // Let the user decide when to stop.
            Console.WriteLine("Press Enter to stop the server...");
            Console.ReadLine();

            // Stop the server.
            Console.WriteLine("The server is stopping...");
            server.Stop();

            Console.WriteLine("The server is stopped.");
        }

        // Event handler for the EndpointStateChanged event. It simply prints out the event.
        private static void ServerOnEndpointStateChanged(object sender, EasyUAServerEndpointStateChangedEventArgs e)
        {
            Console.WriteLine(e);

            // Following are some useful properties in the event notification:
            //   e.EndpointUrlString
            //   e.ConnectionState
            //   e.Exception
            //   e.Succeeded
        }
    }
}
' This example shows how to obtain notifications about the changes in the state of the endpoints that server exposes.
' You can use any OPC UA client, including our Connectivity Explorer and OpcCmd utility, to connect to the server. 
'
' Find all latest examples here: https://opclabs.doc-that.com/files/onlinedocs/OPCLabs-OpcStudio/Latest/examples.html .
' OPC client and subscriber examples in VB.NET on GitHub: https://github.com/OPCLabs/Examples-QuickOPC-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 System
Imports OpcLabs.EasyOpc.UA
Imports OpcLabs.EasyOpc.UA.NodeSpace
Imports OpcLabs.EasyOpc.UA.OperationModel

Namespace _EasyUAServer
    Partial Friend Class EndpointStateChanged
        Shared Sub Main1()
            ' Instantiate the server object.
            ' By default, the server will run on endpoint URL "opc.tcp://localhost:48040/".
            Dim server = New EasyUAServer()

            ' Define a data variable providing random integers.
            Dim random = New Random()
            server.Add(New UADataVariable("MyDataVariable").ReadValueFunction(Function() random.Next()))

            ' Hook events.
            AddHandler server.EndpointStateChanged, AddressOf ServerOnEndpointStateChanged

            ' Start the server.
            Console.WriteLine("The server is starting...")
            server.Start()

            Console.WriteLine("The server is started.")
            Console.WriteLine()

            ' Let the user decide when to stop.
            Console.WriteLine("Press Enter to stop the server...")
            Console.ReadLine()

            ' Stop the server.
            Console.WriteLine("The server is stopping...")
            server.Stop()

            Console.WriteLine("The server is stopped.")
        End Sub

        ' Event handler for the EndpointStateChanged event. It simply prints out the event.
        Private Shared Sub ServerOnEndpointStateChanged(ByVal sender As Object, ByVal e As EasyUAServerEndpointStateChangedEventArgs)
            Console.WriteLine(e)

            ' Following are some useful properties in the event notification:
            '   e.EndpointUrlString
            '   e.ConnectionState
            '   e.Exception
            '   e.Succeeded
        End Sub
    End Class
End Namespace
Requirements

Target Platforms: .NET Framework: Windows 10 (selected versions), Windows 11 (selected versions), Windows Server 2016, Windows Server 2022; .NET: Linux, macOS, Microsoft Windows

See Also