using System; using System.Collections.Generic; using System.Linq; using System.Text; using HeuristicLab.PluginInfrastructure; using HeuristicLab.Hive.Client.Communication; using HeuristicLab.Hive.Client.Common; namespace HeuristicLab.Hive.Client.Core { public class PluginCache { private List pluginCache; public PluginCache() { pluginCache = new List(); } public void AddPlugin(CachedPlugin plugin) { pluginCache.Add(plugin); } public List GetPlugins(List requests) { List neededPlugins = new List(); List missingPlugins = new List(); bool found = false; foreach (PluginInfo info in requests) { foreach (CachedPlugin cache in pluginCache) { if (info.Equals(cache)) { neededPlugins.Add(cache); found = true; break; } } if (!found) missingPlugins.Add(info); found = false; } List receivedPlugins = WcfService.Instance.RequestPlugins(missingPlugins); if (receivedPlugins != null) neededPlugins.AddRange(receivedPlugins); else Logging.Instance.Error(this.ToString(), "Fetching of the plugins failed!"); return neededPlugins; } } }