예제 #1
0
        public override string ToString()
        {
            StringBuilder objValue = new StringBuilder();

            objValue.Append("CompressedSize" + PropertyValueDelimeter + CompressedSize.ToString());
            objValue.Append(PropertyDelimeter);
            objValue.Append("CreatedDate" + PropertyValueDelimeter + CreatedDate.ToString());
            objValue.Append(PropertyDelimeter);
            objValue.Append("FileName" + PropertyValueDelimeter + FileName);
            objValue.Append(PropertyDelimeter);
            objValue.Append("OriginalFilePath" + PropertyValueDelimeter + OriginalFilePath);
            objValue.Append(PropertyDelimeter);
            objValue.Append("RelativePath" + PropertyValueDelimeter + RelativePath);
            objValue.Append(PropertyDelimeter);
            objValue.Append("Size" + PropertyValueDelimeter + Size.ToString());
            objValue.Append(PropertyDelimeter);
            objValue.Append("Version" + PropertyValueDelimeter + Version);
            objValue.Append(PropertyDelimeter);

            StringBuilder objKeyValues = new StringBuilder();

            foreach (string strKey in Keys)
            {
                objKeyValues.Append(strKey);
                objKeyValues.Append(KeyValueDelimeter);
            }
            objValue.Append("Keys" + PropertyValueDelimeter + objKeyValues.ToString());

            return(objValue.ToString());
        }
예제 #2
0
        public byte[] Encode()
        {
            var header = new List <byte>();

            header.AddRange(Identifier.GetBytes());
            header.Add((byte)Filetype);
            header.Add(0);

            header.AddRange(StartOffset.GetBytes());
            header.AddRange(UncompressedSize.GetBytes());
            // don't know what this is for...
            header.AddRange(MysteryBytes);
            header.AddRange(0.GetBytes());

            header.AddRange(CompressedSize.GetBytes());
            header.AddRange(0.GetBytes());
            header.AddRange(0.GetBytes());

            header.AddRange(FileFormatIndexOffset.GetBytes());
            header.AddRange(NameOffset.GetBytes());

            if (header.Count < DetailsHeaderSize)
            {
                header.AddRange(new byte[DetailsHeaderSize - header.Count]);
            }
            return(header.ToArray());
        }
예제 #3
0
 public void WriteHeader(System.Xml.XmlElement node)
 {
     node.SetAttribute("Size", Size.ToString());
     node.SetAttribute("CompressedSize", CompressedSize.ToString());
     node.SetAttribute("Checksum", String.Format("{0:x8}", Adler32));
     node.SetAttribute("FileTime", String.Format("{0:x8}", FileTime));
     node.SetAttribute("Algorithm", Algorithm.ToString());
 }
예제 #4
0
        public byte[] DeflateDecompressor_DecompressStream(CompressedSize input)
        {
            using var decompressed = new MemoryStream();
            using var data         = new MemoryStream(input.Data);
            DeflateDecompressor.Decompress(data, decompressed);

            return(decompressed.ToArray());
        }
예제 #5
0
        internal void WriteManifestInfo(System.Xml.XmlWriter writer)
        {
            writer.WriteAttributeString("ID", ID);

            writer.WriteAttributeString("Path", Path);
            writer.WriteAttributeString("CompressedHash", CompressedHash);
            writer.WriteAttributeString("CompressedSize", CompressedSize.ToString());
            writer.WriteAttributeString("UncompressedHash", UncompressedHash);
            writer.WriteAttributeString("UncompressedSize", UncompressedSize.ToString());
        }
예제 #6
0
        public override int GetHashCode()
        {
            var hash = 23;

            hash = hash * 31 + _fileName.GetHashCode();
            hash = hash * 31 + FilePath.GetHashCode();
            hash = hash * 31 + OriginalSize.GetHashCode();
            hash = hash * 31 + CompressedSize.GetHashCode();
            Logger.Debug("hash code : " + hash);
            return(hash);
        }
예제 #7
0
        public byte[] SIOC_DeflateStream_Decompress(CompressedSize input)
        {
            using var decompressed = new MemoryStream();

            using (var data = new MemoryStream(input.Data))
                using (var deflate = new DeflateStream(data, CompressionMode.Decompress))
                {
                    deflate.CopyTo(decompressed);
                }

            return(decompressed.ToArray());
        }
예제 #8
0
        public byte[] SharpZipLib_Decompress(CompressedSize input)
        {
            var inf = new Inflater(true);

            using var decompressed = new MemoryStream();

            using (var data = new MemoryStream(input.Data))
                using (var decompressor = new InflaterInputStream(data, inf))
                {
                    decompressor.CopyTo(decompressed);
                }

            return(decompressed.ToArray());
        }
예제 #9
0
        public override int GetHashCode()
        {
            int hash = 1;

            if (Id.Length != 0)
            {
                hash ^= Id.GetHashCode();
            }
            if (Name.Length != 0)
            {
                hash ^= Name.GetHashCode();
            }
            if (Digest.Length != 0)
            {
                hash ^= Digest.GetHashCode();
            }
            if (CompressedSize != 0L)
            {
                hash ^= CompressedSize.GetHashCode();
            }
            if (config_ != null)
            {
                hash ^= Config.GetHashCode();
            }
            hash ^= layers_.GetHashCode();
            hash ^= tags_.GetHashCode();
            if (createdAt_ != null)
            {
                hash ^= CreatedAt.GetHashCode();
            }
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
예제 #10
0
 public byte[] DeflateDecompressor_Decompress(CompressedSize input)
 {
     return(DeflateDecompressor.Decompress(input.Data));
 }