/// <summary> /// Create instance of MonitoredItemMessageEncoder. /// </summary> /// <param name="logger"> Logger to be used for reporting. </param> /// <param name="standaloneConfig"> injected configuration. </param> /// <param name="engineConfig"> injected configuration. </param> public MonitoredItemMessageEncoder(ILogger logger, IStandaloneCliModelProvider standaloneConfig, IEngineConfiguration engineConfig) { _logger = logger; _jsonContentType = standaloneConfig.StandaloneCliModel.LegacyCompatibility ? ContentMimeType.UaLegacyPublisher : ContentMimeType.Json; _enableRoutingInfo = engineConfig.EnableRoutingInfo.GetValueOrDefault(false); }
/// <summary> /// Provider of utilities for published nodes file. /// </summary> /// <param name="standaloneCliModelProvider"> standaloneCliModelProvider that will define location of published nodes file. </param> /// <param name="logger"> Logger </param> public PublishedNodesProvider(IStandaloneCliModelProvider standaloneCliModelProvider, ILogger logger) { _standaloneCliModel = standaloneCliModelProvider?.StandaloneCliModel ?? throw new ArgumentNullException(nameof(standaloneCliModelProvider)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); var directory = Path.GetDirectoryName(_standaloneCliModel.PublishedNodesFile); if (string.IsNullOrWhiteSpace(directory)) { directory = Environment.CurrentDirectory; } var file = Path.GetFileName(_standaloneCliModel.PublishedNodesFile); _fileSystemWatcher = new FileSystemWatcher(directory, file); _fileSystemWatcher.Deleted += FileSystemWatcher_Deleted; _fileSystemWatcher.Created += FileSystemWatcher_Created; _fileSystemWatcher.Changed += FileSystemWatcher_Changed; _fileSystemWatcher.Renamed += FileSystemWatcher_Renamed; _fileSystemWatcher.EnableRaisingEvents = true; _lock = new SemaphoreSlim(1, 1); }