Convert if statement to switch statement.
When the comparison is performed on an enum, using a switch statement can allow for additional compiler optimizations.
This commit is contained in:
@@ -222,39 +222,39 @@ namespace Duplicati.Library.Main.Operation
|
||||
if (expectedmetablocks <= 1) expectedmetablocklisthashes = 0;
|
||||
|
||||
var metadataid = long.MinValue;
|
||||
if (fe.Type == FilelistEntryType.Folder)
|
||||
switch (fe.Type)
|
||||
{
|
||||
metadataid = restoredb.AddMetadataset(fe.Metahash, fe.Metasize, fe.MetaBlocklistHashes, expectedmetablocklisthashes, tr);
|
||||
restoredb.AddDirectoryEntry(filesetid, fe.Path, fe.Time, metadataid, tr);
|
||||
}
|
||||
else if (fe.Type == FilelistEntryType.File)
|
||||
{
|
||||
var expectedblocks = (fe.Size + blocksize - 1) / blocksize;
|
||||
var expectedblocklisthashes = (expectedblocks + hashes_pr_block - 1) / hashes_pr_block;
|
||||
if (expectedblocks <= 1) expectedblocklisthashes = 0;
|
||||
case FilelistEntryType.Folder:
|
||||
metadataid = restoredb.AddMetadataset(fe.Metahash, fe.Metasize, fe.MetaBlocklistHashes, expectedmetablocklisthashes, tr);
|
||||
restoredb.AddDirectoryEntry(filesetid, fe.Path, fe.Time, metadataid, tr);
|
||||
break;
|
||||
case FilelistEntryType.File:
|
||||
var expectedblocks = (fe.Size + blocksize - 1) / blocksize;
|
||||
var expectedblocklisthashes = (expectedblocks + hashes_pr_block - 1) / hashes_pr_block;
|
||||
if (expectedblocks <= 1) expectedblocklisthashes = 0;
|
||||
|
||||
var blocksetid = restoredb.AddBlockset(fe.Hash, fe.Size, fe.BlocklistHashes, expectedblocklisthashes, tr);
|
||||
metadataid = restoredb.AddMetadataset(fe.Metahash, fe.Metasize, fe.MetaBlocklistHashes, expectedmetablocklisthashes, tr);
|
||||
restoredb.AddFileEntry(filesetid, fe.Path, fe.Time, blocksetid, metadataid, tr);
|
||||
|
||||
if (fe.Size <= blocksize)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(fe.Blockhash))
|
||||
restoredb.AddSmallBlocksetLink(fe.Hash, fe.Blockhash, fe.Blocksize, tr);
|
||||
else if (m_options.BlockHashAlgorithm == m_options.FileHashAlgorithm)
|
||||
restoredb.AddSmallBlocksetLink(fe.Hash, fe.Hash, fe.Size, tr);
|
||||
else
|
||||
m_result.AddWarning(string.Format("No block hash found for file: {0}", fe.Path), null);
|
||||
}
|
||||
}
|
||||
else if (fe.Type == FilelistEntryType.Symlink)
|
||||
{
|
||||
metadataid = restoredb.AddMetadataset(fe.Metahash, fe.Metasize, fe.MetaBlocklistHashes, expectedmetablocklisthashes, tr);
|
||||
restoredb.AddSymlinkEntry(filesetid, fe.Path, fe.Time, metadataid, tr);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_result.AddWarning(string.Format("Skipping file-entry with unknown type {0}: {1} ", fe.Type, fe.Path), null);
|
||||
var blocksetid = restoredb.AddBlockset(fe.Hash, fe.Size, fe.BlocklistHashes, expectedblocklisthashes, tr);
|
||||
metadataid = restoredb.AddMetadataset(fe.Metahash, fe.Metasize, fe.MetaBlocklistHashes, expectedmetablocklisthashes, tr);
|
||||
restoredb.AddFileEntry(filesetid, fe.Path, fe.Time, blocksetid, metadataid, tr);
|
||||
|
||||
if (fe.Size <= blocksize)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(fe.Blockhash))
|
||||
restoredb.AddSmallBlocksetLink(fe.Hash, fe.Blockhash, fe.Blocksize, tr);
|
||||
else if (m_options.BlockHashAlgorithm == m_options.FileHashAlgorithm)
|
||||
restoredb.AddSmallBlocksetLink(fe.Hash, fe.Hash, fe.Size, tr);
|
||||
else
|
||||
m_result.AddWarning(string.Format("No block hash found for file: {0}", fe.Path), null);
|
||||
}
|
||||
|
||||
break;
|
||||
case FilelistEntryType.Symlink:
|
||||
metadataid = restoredb.AddMetadataset(fe.Metahash, fe.Metasize, fe.MetaBlocklistHashes, expectedmetablocklisthashes, tr);
|
||||
restoredb.AddSymlinkEntry(filesetid, fe.Path, fe.Time, metadataid, tr);
|
||||
break;
|
||||
default:
|
||||
m_result.AddWarning(string.Format("Skipping file-entry with unknown type {0}: {1} ", fe.Type, fe.Path), null);
|
||||
break;
|
||||
}
|
||||
|
||||
if (fe.Metasize <= blocksize && (fe.Type == FilelistEntryType.Folder || fe.Type == FilelistEntryType.File || fe.Type == FilelistEntryType.Symlink))
|
||||
|
||||
Reference in New Issue
Block a user