public string Merge(IKaVESet <string> relZips) { Asserts.NotNull(relZips); Asserts.That(relZips.Count > 0); foreach (var relZip in relZips) { var zip = _io.GetFullPath_In(relZip); Asserts.That(File.Exists(zip)); } var relZipOut = relZips.First(); _log.NextGroup(relZips.Count, relZipOut); var zipOut = _io.GetFullPath_Merged(relZipOut); _io.EnsureParentExists(zipOut); var numEvents = 0; using (var wa = new WritingArchive(zipOut)) { foreach (var e in ReadArchives(relZips)) { numEvents++; wa.Add(e); } } _log.Result(numEvents); return(relZipOut); }
private bool GetNextZip(int taskId, out string relZip) { lock (_lock) { if (_remainingZips.Count > 0) { relZip = _remainingZips.First(); _remainingZips.Remove(relZip); var numStarted = _numZips - _remainingZips.Count; var perc = 100 * numStarted / (double)_numZips; Log( "({0}) reading {1} ... ({2}/{3}, {4:0.0}% started)", taskId, relZip, numStarted, _numZips, perc); return(true); } relZip = null; return(false); } }