Files
scadalink-design/lmxproxy/src-reference/ZB.MOM.WW.LmxProxy.Host/Configuration/LmxProxyConfiguration.cs
Joseph Doherty 0d63fb1105 feat(lmxproxy): phase 1 — v2 protocol types and domain model
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 23:41:56 -04:00

111 lines
3.4 KiB
C#

namespace ZB.MOM.WW.LmxProxy.Host.Configuration
{
/// <summary>
/// Configuration settings for LmxProxy service
/// </summary>
public class LmxProxyConfiguration
{
/// <summary>
/// gRPC server port
/// </summary>
public int GrpcPort { get; set; } = 50051;
/// <summary>
/// Subscription management settings
/// </summary>
public SubscriptionConfiguration Subscription { get; set; } = new();
/// <summary>
/// Windows service recovery settings
/// </summary>
public ServiceRecoveryConfiguration ServiceRecovery { get; set; } = new();
/// <summary>
/// API key configuration file path
/// </summary>
public string ApiKeyConfigFile { get; set; } = "apikeys.json";
/// <summary>
/// MxAccess connection settings
/// </summary>
public ConnectionConfiguration Connection { get; set; } = new();
/// <summary>
/// TLS/SSL configuration for secure gRPC communication
/// </summary>
public TlsConfiguration Tls { get; set; } = new();
/// <summary>
/// Web server configuration for status display
/// </summary>
public WebServerConfiguration WebServer { get; set; } = new();
}
/// <summary>
/// Configuration for MxAccess connection monitoring and reconnection
/// </summary>
public class ConnectionConfiguration
{
/// <summary>
/// Interval in seconds between connection health checks
/// </summary>
public int MonitorIntervalSeconds { get; set; } = 5;
/// <summary>
/// Timeout in seconds for initial connection attempts
/// </summary>
public int ConnectionTimeoutSeconds { get; set; } = 30;
/// <summary>
/// Whether to automatically reconnect when connection is lost
/// </summary>
public bool AutoReconnect { get; set; } = true;
/// <summary>
/// Timeout in seconds for read operations
/// </summary>
public int ReadTimeoutSeconds { get; set; } = 5;
/// <summary>
/// Timeout in seconds for write operations
/// </summary>
public int WriteTimeoutSeconds { get; set; } = 5;
/// <summary>
/// Maximum number of concurrent read/write operations allowed
/// </summary>
public int? MaxConcurrentOperations { get; set; } = 10;
/// <summary>
/// Name of the node to connect to (optional)
/// </summary>
public string? NodeName { get; set; }
/// <summary>
/// Name of the galaxy to connect to (optional)
/// </summary>
public string? GalaxyName { get; set; }
}
/// <summary>
/// Configuration for web server that displays status information
/// </summary>
public class WebServerConfiguration
{
/// <summary>
/// Whether the web server is enabled
/// </summary>
public bool Enabled { get; set; } = true;
/// <summary>
/// Port number for the web server
/// </summary>
public int Port { get; set; } = 8080;
/// <summary>
/// Prefix URL for the web server (default: http://+:{Port}/)
/// </summary>
public string? Prefix { get; set; }
}
}