public void ConsumeData(IFarsightDashModule moduleToBeConsumed, IFarsightDashModule consumingModule) { var selectedEmitter = moduleToBeConsumed as IDataEmitter; var selectedConsumer = consumingModule as IDataConsumer; if (selectedEmitter == null) { throw new Exception($"{moduleToBeConsumed.ModuleName} is not a {nameof(IDataEmitter)}!"); } if (selectedConsumer == null) { throw new Exception($"{consumingModule.ModuleName} is not a {nameof(IDataConsumer)}!"); } if (!_ConsumerDictionary.ContainsKey(selectedConsumer.ModuleName)) { _ConsumerDictionary.Add(selectedConsumer.ModuleName, new List <string>()); } if (_ConsumerDictionary[selectedConsumer.ModuleName].Contains(selectedEmitter.ModuleName)) { throw new Exception( $"Module {selectedEmitter.ModuleName} is already being consumed by {selectedConsumer.ModuleName}"); } else { _ConsumerDictionary[selectedConsumer.ModuleName].Add(selectedEmitter.ModuleName); } selectedEmitter.EmitData += selectedConsumer.DataHandler; selectedEmitter.Initialize(); }
public ModuleManagementData(IFarsightDashModule module) { ModuleName = module.ModuleName; ModuleTypeName = module.ModuleTypeName; IsDataEmitter = module is IDataEmitter; IsDataConsumer = module is IDataConsumer; IsDashboardView = module is IDashboardView; }
public void RegisterModule(IFarsightDashModule newModule) { if (_Modules.ContainsKey(newModule.ModuleName)) { throw new Exception($"Module {newModule.ModuleName} already registered!"); } _Modules.Add(newModule.ModuleName, newModule); }
public void UnregisterModule(IFarsightDashModule newModule) { if (!_Modules.ContainsKey(newModule.ModuleName)) { throw new Exception($"Module {newModule.ModuleName} is not registered!"); } _Modules.Remove(newModule.ModuleName); if (_ConsumerDictionary.ContainsKey(newModule.ModuleName)) { _ConsumerDictionary.Remove(newModule.ModuleName); } foreach (var key in _ConsumerDictionary) { if (key.Value.Any(x => x == newModule.ModuleName)) { key.Value.Remove(newModule.ModuleName); } } }