Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.Hive.Client.Core/3.2/PluginCache.cs @ 1594

Last change on this file since 1594 was 1594, checked in by kgrading, 15 years ago

updated the runner class & webservice interfaces (#547)

File size: 1.6 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using HeuristicLab.PluginInfrastructure;
6using HeuristicLab.Hive.Client.Communication;
7using HeuristicLab.Hive.Client.Common;
8using HeuristicLab.Hive.Contracts.BusinessObjects;
9
10namespace HeuristicLab.Hive.Client.Core {
11  public class PluginCache {
12    private List<CachedHivePluginInfo> pluginCache;
13   
14    public PluginCache() {
15      pluginCache = new List<CachedHivePluginInfo>();
16    }
17   
18    public void AddPlugin(CachedHivePluginInfo plugin) {
19      pluginCache.Add(plugin);   
20    }
21
22    public List<CachedHivePluginInfo> GetPlugins(List<HivePluginInfo> requests) {
23      List<CachedHivePluginInfo> neededPlugins = new List<CachedHivePluginInfo>();
24      List<HivePluginInfo> missingPlugins = new List<HivePluginInfo>();
25      bool found = false;
26      foreach (HivePluginInfo info in requests) {
27        foreach (CachedHivePluginInfo cache in pluginCache) {
28          if (info.Equals(cache)) {
29            neededPlugins.Add(cache);
30            found = true;
31            break;
32          }
33        }
34        if (!found)
35          missingPlugins.Add(info);
36        found = false;
37      }
38
39      List<CachedHivePluginInfo> receivedPlugins = WcfService.Instance.RequestPlugins(missingPlugins);
40      if (receivedPlugins != null) {
41        neededPlugins.AddRange(receivedPlugins);
42        pluginCache.AddRange(receivedPlugins);
43      } else
44        Logging.Instance.Error(this.ToString(), "Fetching of the plugins failed!");
45
46      return neededPlugins;
47    }
48
49  }
50}
Note: See TracBrowser for help on using the repository browser.