namespace ZB.MOM.WW.OtOpcUa.Client.Shared.Models;

/// <summary>
///     Information about the current OPC UA session.
/// </summary>
public sealed class ConnectionInfo
{
    /// <summary>Initializes a new instance of the ConnectionInfo with session details.</summary>
    /// <param name="endpointUrl">The endpoint URL of the connected server.</param>
    /// <param name="serverName">The server application name.</param>
    /// <param name="securityMode">The security mode in use.</param>
    /// <param name="securityPolicyUri">The security policy URI.</param>
    /// <param name="sessionId">The session identifier.</param>
    /// <param name="sessionName">The session name.</param>
    public ConnectionInfo(
        string endpointUrl,
        string serverName,
        string securityMode,
        string securityPolicyUri,
        string sessionId,
        string sessionName)
    {
        EndpointUrl = endpointUrl;
        ServerName = serverName;
        SecurityMode = securityMode;
        SecurityPolicyUri = securityPolicyUri;
        SessionId = sessionId;
        SessionName = sessionName;
    }

    /// <summary>The endpoint URL of the connected server.</summary>
    public string EndpointUrl { get; }

    /// <summary>The server application name.</summary>
    public string ServerName { get; }

    /// <summary>The security mode in use (e.g., "None", "Sign", "SignAndEncrypt").</summary>
    public string SecurityMode { get; }

    /// <summary>The security policy URI (e.g., "http://opcfoundation.org/UA/SecurityPolicy#None").</summary>
    public string SecurityPolicyUri { get; }

    /// <summary>The session identifier.</summary>
    public string SessionId { get; }

    /// <summary>The session name.</summary>
    public string SessionName { get; }
}