public static string GetCollectedSnapshotFilesArchive()

in JetBrains.Profiler.SelfApi/src/DotTrace.cs [404:453]


    public static string GetCollectedSnapshotFilesArchive(bool deleteUnpackedFiles)
    {
      lock (Mutex)
      {
        var indexFiles = GetCollectedSnapshotIndexFilesCore();
        if (_packedInZipCount >= indexFiles.Length)
          return null;

        var firstIndexFile = indexFiles[_packedInZipCount];
        var directory = Path.GetDirectoryName(firstIndexFile);
        var name = Path.GetFileNameWithoutExtension(firstIndexFile);
        var zipFilePatch = CreateUniqFileName(directory, name, "zip");
        var packedIndexFiles = new List<string>();
        var packedFiles = new List<string>();

        using (var zipInput = File.OpenWrite(zipFilePatch))
        using (var zip = new ZipArchive(zipInput, ZipArchiveMode.Create))
          for (var index = _packedInZipCount; index < indexFiles.Length; index++)
          {
            var indexFile = indexFiles[index];
            packedIndexFiles.Add(indexFile);
            foreach (var file in GetSnapshotFiles(indexFile))
            {
              zip.CreateEntryFromFile(file, Path.GetFileName(file));
              packedFiles.Add(file);
            }
          }

        if (deleteUnpackedFiles)
        {
          foreach (var packedFile in packedFiles)
          {
            try
            {
              File.Delete(packedFile);
            }
            catch
            {
              // ignored
            }
          }

          foreach (var packedIndexFile in packedIndexFiles)
            _deletedIndexFiles.Add(packedIndexFile);
        }

        _packedInZipCount = indexFiles.Length;
        return zipFilePatch;
      }
    }