コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }