Exemplo n.º 1
0
        /// <summary>
        /// Reads 
        /// <see cref="V8Commit.Entities.V8FileSystem.V8FileSystemReference"/> 
        /// from bytes buffer 
        /// </summary>
        /// <param name="buffer">
        /// Bytes buffer, passed by reference,
        /// that contains the data to read
        /// </param>
        /// <param name="offset">
        /// Start position to read from bytes buffer
        /// </param>
        /// <returns>
        /// Returns 
        /// <see cref="V8Commit.Entities.V8FileSystem.V8FileSystemReference"/> 
        /// with data
        /// </returns>
        /// <permission cref="System.Security.PermissionSet">Everyone 
        /// can access this method.
        /// </permission>
        public V8FileSystemReference ReadFileSystemReference(byte[] buffer, Int32 offset)
        {
            V8FileSystemReference reference = new V8FileSystemReference();
            reference.RefToHeader = BitConverter.ToInt32(buffer, offset);
            reference.RefToData = BitConverter.ToInt32(buffer, offset + 4);
            reference.ReservedField = BitConverter.ToInt32(buffer, offset + 8);

            return reference;
        }
Exemplo n.º 2
0
        /// <summary>
        /// Writes deflated data bytes from 
        /// <see cref = "V8Commit.Entities.V8FileSystem.V8FileSystemReference"/> 
        /// file to <see cref="System.IO.MemoryStream"/>
        /// </summary>
        /// <param name="stream">
        /// <see cref="System.IO.MemoryStream"/>, passed by reference, 
        /// in which data bytes will be placed
        /// </param>
        /// <param name="file">
        /// <see cref="V8Commit.Entities.V8FileSystem.V8FileSystemReference"/>, 
        /// passed by reference, that contains references to file header and 
        /// data to read from <see cref="_reader"/> 
        /// </param>
        /// <example> This sample shows how to use 
        /// the ReadV8FileRawData method from your plugin
        /// <code>
        /// 
        /// using (FileV8Reader v8Reader = new FileV8Reader(Input))
        /// {
        ///     var fileSystem = v8Reader.ReadV8FileSystem();
        ///     foreach (var reference in fileSystem.References)
        ///     {
        ///         using (MemoryStream stream = new MemoryStream())
        ///         {
        ///             v8Reader.ReadV8FileRawData(stream, file);
        ///             
        ///             // some yours сode
        /// 
        ///         }
        ///     }
        /// }
        /// 
        /// </code>
        /// </example>
        /// <permission cref="System.Security.PermissionSet">Everyone 
        /// can access this method.
        /// </permission>
        public void ReadV8FileRawData(MemoryStream stream, V8FileSystemReference file)
        {
            Seek(file.RefToData, SeekOrigin.Begin);
            using (var tmpStream = new MemoryStream(ReadBytes(ReadBlockHeader())))
            {
                if (file.IsInFlated)
                {
                    using (var deflateStream = new DeflateStream(tmpStream, CompressionMode.Decompress))
                    {
                        deflateStream.CopyTo(stream);
                    }
                }
                else
                {
                    tmpStream.CopyTo(stream);
                }

                stream.Seek(0, SeekOrigin.Begin);
            }
        }