Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }