public static XElement MakeConfigResourceGroup(DfsClient dfsClient, Uri dfsDirectory, XDocument config, string configName, ILogger logger = null) { dfsClient.EnsureDirectory(dfsDirectory, false); XElement resourceElement = MakeConfigResource(dfsClient, dfsDirectory, config, configName, logger); XElement groupElement = MakeDfsResourceGroupElement(dfsClient, dfsDirectory, false); groupElement.Add(resourceElement); return groupElement; }
public static XElement MakeResourceGroup(DfsClient dfsClient, Uri dfsDirectory, bool isPublic, IEnumerable<string> localFiles, ILogger logger = null) { ConsoleLogger.EnsureLogger(ref logger); dfsClient.EnsureDirectory(dfsDirectory, isPublic); XElement groupElement = MakeDfsResourceGroupElement(dfsClient, dfsDirectory, isPublic); if (dfsClient.IsThreadSafe) { List<Task<XElement>> waiters = new List<Task<XElement>>(); foreach (string filePath in localFiles) { Task<XElement> waiter = Task.Run(() => MakeDfsResourceFromFile(filePath, dfsClient, dfsDirectory, logger)); waiters.Add(waiter); } try { Task.WaitAll(waiters.ToArray()); } catch (Exception e) { throw new ApplicationException("Dfs resource make failed", e); } foreach (Task<XElement> t in waiters) { groupElement.Add(t.Result); } } else { try { foreach (string filePath in localFiles) { groupElement.Add(MakeDfsResourceFromFile(filePath, dfsClient, dfsDirectory, logger)); } } catch (Exception e) { throw new ApplicationException("Dfs resource make failed", e); } } return groupElement; }