internal void Add(string name, string type, string connection, string commandMode, string portName, bool?HardwareFlowControl, string networkHost, int?networkPort) { lock (this.DiscChangers) { string keyBase = new String(name.ToLower().Where(c => !char.IsWhiteSpace(c)).Take(6).ToArray()); int i = 0; string key = keyBase; while (key2DiscChanger.ContainsKey(key)) { i++; key = keyBase + i.ToString(); } DiscChanger dc = DiscChanger.Create(type); dc.Key = key; Update(dc, name, type, connection, commandMode, portName, HardwareFlowControl, networkHost, networkPort); DiscChangers.Add(dc); key2DiscChanger[key] = dc; Save(); _hubContext.Clients.All.SendAsync("Reload"); } }
internal async Task <string> Test(string key, string type, string connection, string commandMode, string portName, bool?HardwareFlowControl, string networkHost, int?networkPort) { DiscChanger d = null; bool b = key != null && key2DiscChanger.TryGetValue(key, out d) && connection == d.Connection && portName == d.PortName && networkHost == d.NetworkHost && networkPort == d.NetworkPort; if (b) { d.Disconnect(); } DiscChanger dc = DiscChanger.Create(type); try { dc.Connection = connection; dc.CommandMode = commandMode; dc.PortName = portName; dc.HardwareFlowControl = HardwareFlowControl; dc.NetworkHost = networkHost; dc.NetworkPort = networkPort; await dc.Connect(null, null, _logger); return(await dc.Test()); } catch (Exception e) { return($"Disc changer testing of ({key},{type},{connection},{commandMode},{portName},{HardwareFlowControl},{networkHost}) returned error: {e.Message}"); } finally { dc.Disconnect(); if (b) { await d.Connect(); } } }