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);
        }
Пример #3
0
 public MonitorDisposable(OpenhabConnection manager, string itemName, Action <string> callback)
 {
     Manager  = manager;
     ItemName = itemName;
     Callback = callback;
 }