Exemple #1
0
        public bool CreateUpload(string destination, byte[] data, FileCompressionMode compress, FileType type)
        {
            Close();
            _fileHash = Utils.Adler32(0, data, (ulong)data.Length);
            _filename = destination;
            _fileSize = (ulong)data.Length;

            _compressedSize = _fileSize;
            _compress       = compress;
            _type           = type;
            _closed         = false;
            if (Compress == FileCompressionMode.WHOLE)
            {
                MemoryStream ms         = new MemoryStream();
                BinaryWriter gzipWriter = new BinaryWriter(ms);

                //write DEFLATE header
                gzipWriter.Write((byte)0x78);
                gzipWriter.Write((byte)0x9C);

                using (DeflateStream compressStream = new DeflateStream(ms, CompressionMode.Compress, true))
                    compressStream.Write(data, 0, (int)_fileSize);

                _compressedSize = (ulong)ms.Length;
                _data           = ms.ToArray();
            }
            else
            {
                _data = new byte[_fileSize];
                Buffer.BlockCopy(data, 0, _data, 0, (int)_fileSize);
            }
            return(true);
        }
Exemple #2
0
 /// <summary>
 /// Default constructor
 /// </summary>
 /// <param name="settings">The settings when serializing the data</param>
 /// <param name="compressionMode">The compression mode for files and the block</param>
 public UbiArtIPKArchiveConfigViewModel(UbiArtSettings settings, FileCompressionMode compressionMode)
 {
     CompressionMode      = compressionMode;
     Settings             = settings;
     CompressedExtensions = ".dtape.ckd," +
                            ".fx.fxb," +
                            ".m3d.ckd," +
                            ".png.ckd," +
                            ".tga.ckd";
 }
Exemple #3
0
        private void QueueFileUpload(PatchAsset asset, FileCompressionMode compress)
        {
            var info = new FileUploadInfo()
            {
                Asset    = asset,
                Compress = compress
            };

            lock (_uploadQueue)
                _uploadQueue.Enqueue(info);
        }
Exemple #4
0
        private void QueueFileUpload(PatchFile asset, FileCompressionMode compress)
        {
            var info = new FileUploadInfo()
            {
                File      = asset,
                Compress  = compress,
                LocalFile = Path.Combine(Program.Config.PatcherFilesPath, asset.Name)
            };

            lock (_uploadQueue)
                _uploadQueue.Enqueue(info);
        }
Exemple #5
0
        private void QueueFileUpload(FileType type, string destination, byte[] data, FileCompressionMode compress)
        {
            var info = new FileUploadInfo()
            {
                Destination = destination,
                Data        = data,
                FileType    = type,
                Compress    = compress
            };

            lock (_uploadQueue)
                _uploadQueue.Enqueue(info);
        }
Exemple #6
0
        /// <summary>
        /// Creates file that is being uploaded to client from harddrive
        /// </summary>
        /// <param name="filename"></param>
        /// <param name="destination"></param>
        /// <param name="compress"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        public bool CreateUpload(string filename, string destination, FileCompressionMode compress, FileType type, uint hash = 0)
        {
            Close();
            _closed = false;
            _file   = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);
            if (hash == 0)
            {
                _fileHash = Utils.Adler32(_file, _file.Length);
            }
            else
            {
                _fileHash = hash;
            }
            _filename       = destination;
            _fileSize       = (ulong)_file.Length;
            _destination    = destination;
            _compressedSize = _fileSize;
            _compress       = compress;
            _type           = type;

            if (Compress == FileCompressionMode.WHOLE)
            {
                _compressedTempFileName = Path.Combine(Program.Config.TempFilesPath, "tempu_" + DateTime.Now.ToFileTimeUtc().ToString() + ".part");
                if (File.Exists(_compressedTempFileName))
                {
                    File.Delete(_compressedTempFileName);
                }

                _compressedTempFile = new FileStream(_compressedTempFileName, FileMode.Create, FileAccess.ReadWrite);

                BinaryWriter gzipWriter = new BinaryWriter(_compressedTempFile);

                //write DEFLATE header
                gzipWriter.Write((byte)0x78);
                gzipWriter.Write((byte)0x9C);

                using (DeflateStream compressStream = new DeflateStream(_compressedTempFile, CompressionMode.Compress, true))
                    _file.CopyTo(compressStream);

                //      gzipWriter.Write(_fileHash); //write adler32
                gzipWriter.Flush();
                _compressedSize = (ulong)_compressedTempFile.Length;

                _file.Close();
                _file = _compressedTempFile;
            }
            return(true);
        }
        public FileStructure(string _filename, byte[] data)
        {
            Version          = 0;
            Flags            = 0;
            CompressionMode  = FileCompressionMode.Uncompressed;
            ModificationTime = 0;
            ModificationDate = 0;
            CRC32            = (int)Cryptography.Crc32Algorithm.Compute(data);
            CompressedSize   = -1;
            UncompressedSize = -1;
            FilenameLength   = (short)_filename.Length;

            //TODO: Calculate this value, make sure alignment to 0x1000
            ExtraLength = 0;

            Filename = _filename;
            Extra    = new FileStructureExtraData(_filename, data);
        }
        public FileStructure(Stream stream, CustomBinaryReader reader)
        {
            if ((stream.Position - 4) % 0x1000 != 0)
            {
                throw new Exception("File Data Section Alignment Error (Pre Read)");
            }

            Version          = reader.ReadInt16();
            Flags            = reader.ReadInt16();
            CompressionMode  = (FileCompressionMode)reader.ReadInt16();
            ModificationTime = reader.ReadUInt16();
            ModificationDate = reader.ReadUInt16();
            CRC32            = reader.ReadInt32();
            CompressedSize   = reader.ReadInt32();
            UncompressedSize = reader.ReadInt32();
            FilenameLength   = reader.ReadInt16();
            ExtraLength      = reader.ReadInt16();

            Filename = reader.ReadString(FilenameLength);
            Extra    = new FileStructureExtraData(stream, reader, ExtraLength);
        }