Beispiel #1
0
        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;
        }
Beispiel #3
0
        public void RegisterModule(IFarsightDashModule newModule)
        {
            if (_Modules.ContainsKey(newModule.ModuleName))
            {
                throw new Exception($"Module {newModule.ModuleName} already registered!");
            }

            _Modules.Add(newModule.ModuleName, newModule);
        }
Beispiel #4
0
        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);
                }
            }
        }