Changeset 6444 for branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/Util/PluginUtil.cs
- Timestamp:
- 06/19/11 23:21:21 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/Util/PluginUtil.cs
r6426 r6444 30 30 namespace HeuristicLab.Clients.Hive { 31 31 public static class PluginUtil { 32 private static object locker = new object(); 32 33 33 34 /// <summary> … … 40 41 /// <returns></returns> 41 42 public static List<Guid> GetPluginDependencies(IHiveService service, List<Plugin> onlinePlugins, List<Plugin> alreadyUploadedPlugins, IEnumerable<IPluginDescription> neededPlugins) { 42 var pluginIds = new List<Guid>(); 43 Dictionary<IPluginDescription, byte[]> checksumsNeededPlugins = CalcChecksumsForPlugins(neededPlugins); 43 lock (locker) { 44 var pluginIds = new List<Guid>(); 45 Dictionary<IPluginDescription, byte[]> checksumsNeededPlugins = CalcChecksumsForPlugins(neededPlugins); 44 46 45 foreach (var neededPlugin in checksumsNeededPlugins) { 46 Plugin foundPlugin = alreadyUploadedPlugins.FirstOrDefault(p => p.Hash.SequenceEqual(neededPlugin.Value)); 47 if (foundPlugin == null) { 48 foundPlugin = onlinePlugins.FirstOrDefault(p => { 49 if (p.Hash != null) { 50 return p.Hash.SequenceEqual(neededPlugin.Value); 47 foreach (var neededPlugin in checksumsNeededPlugins) { 48 Plugin foundPlugin = alreadyUploadedPlugins.FirstOrDefault(p => p.Hash.SequenceEqual(neededPlugin.Value)); 49 if (foundPlugin == null) { 50 foundPlugin = onlinePlugins.FirstOrDefault(p => { 51 if (p.Hash != null) { 52 return p.Hash.SequenceEqual(neededPlugin.Value); 53 } else { 54 return false; 55 } 56 }); 57 58 if (foundPlugin == null) { 59 Plugin p = CreatePlugin(neededPlugin.Key, neededPlugin.Value); 60 List<PluginData> pd = CreatePluginDatas(neededPlugin.Key); 61 try { 62 p.Id = service.AddPlugin(p, pd); 63 alreadyUploadedPlugins.Add(p); 64 pluginIds.Add(p.Id); 65 } 66 catch (FaultException<PluginAlreadyExistsFault> fault) { 67 onlinePlugins.Add(service.GetPlugin(fault.Detail.Id)); 68 } 51 69 } else { 52 return false; 53 } 54 }); 55 56 if (foundPlugin == null) { 57 Plugin p = CreatePlugin(neededPlugin.Key, neededPlugin.Value); 58 List<PluginData> pd = CreatePluginDatas(neededPlugin.Key); 59 try { 60 p.Id = service.AddPlugin(p, pd); 61 alreadyUploadedPlugins.Add(p); 62 pluginIds.Add(p.Id); 63 } 64 catch (FaultException<PluginAlreadyExistsFault> fault) { 65 onlinePlugins.Add(service.GetPlugin(fault.Detail.Id)); 70 pluginIds.Add(foundPlugin.Id); 66 71 } 67 72 } else { 68 73 pluginIds.Add(foundPlugin.Id); 69 74 } 70 } else {71 pluginIds.Add(foundPlugin.Id);72 75 } 76 return pluginIds; 73 77 } 74 return pluginIds;75 78 } 76 79
Note: See TracChangeset
for help on using the changeset viewer.