public Task OnSettingsChanged(MyActionSettings settings) { if (!string.IsNullOrEmpty(settings.OpenhabUri)) { this.connection = openhabManager.Connect(settings.OpenhabUri); this.currentItem = settings.ItemName; if (!string.IsNullOrEmpty(settings.ItemName)) { this.monitor?.Dispose(); this.monitor = connection.MonitorState(settings.ItemName, UpdateState); } } return(Task.CompletedTask); }
public OpenhabConnection Connect(string url) { var manager = managers.FirstOrDefault(x => x.Url.Equals(url, StringComparison.OrdinalIgnoreCase)); if (manager == null) { lock (managers) { manager = managers.FirstOrDefault(x => x.Url.Equals(url, StringComparison.OrdinalIgnoreCase)); if (manager == null) { manager = new OpenhabConnection(url); managers.Add(manager); } } } return(manager); }
public MonitorDisposable(OpenhabConnection manager, string itemName, Action <string> callback) { Manager = manager; ItemName = itemName; Callback = callback; }