private bool FindExpectedVersion(byte[] fileBytes, long position, AudioBinaryFileVersion version, out string failureReason) { failureReason = null; if (fileBytes[position] != version.Main || fileBytes[position + 1] != version.Sub) { failureReason = $"Unexpected Audio Binary File Version found! {fileBytes[position]}.{fileBytes[position+1]} instead of the expected {version.Main}.{version.Sub}!"; return(false); } return(true); }
private bool TryReading <TAudioBinaryFileType>(byte[] fileBytes, byte[] arrayOfBytesMagic, AudioBinaryFileVersion expectedVersion, out TAudioBinaryFileType file) where TAudioBinaryFileType : AAudioBinaryFile, new() { file = null; var internalFileStartPosition = fileBytes.FindSubArray(arrayOfBytesMagic); if (internalFileStartPosition < 0) { return(false); } if (!FindExpectedVersion(fileBytes, internalFileStartPosition + arrayOfBytesMagic.Length, expectedVersion, out var failureReason)) { Logger.Warn(failureReason); } file = new TAudioBinaryFileType(); file.Read(fileBytes, internalFileStartPosition); return(true); }