public ProxyStream(ComplexFile cf, FileHeader fileHeader)
 {
     settings   = ComplexFile.Settings;
     this.cf    = (FileStream)cf;
     startBlock = fileHeader.BlockNumber;
     size       = (long)fileHeader.Size;
     Position   = 0;
 }
Exemple #2
0
 private ComplexFile(string path, FileMode mode)
     : base(path, mode)
 {
     Settings      = DefaultSettings.Instance; //TODO Load settings from zero block
     blockFactory  = BlockFactory.Instance;
     headerFactory = HeaderFactory.Instance;
     TOCs          = GetTOCs();
 }
Exemple #3
0
        /*
        ** Create ComplexFile with specified name
        */
        public static ComplexFile Create(string path, ICFSettings settings)
        {
            ComplexFile complexFile = new ComplexFile(path, FileMode.Create);

            complexFile.Write(Utilities.ToBytes(Settings), 0, Settings.BlockSize);
            complexFile.Write(new byte[Settings.BlockSize], 0, Settings.BlockSize);
            complexFile.Close();
            return(Open(path));
        }
 public IBlock CreateBlock(byte[] block)
 {
     settings = ComplexFile.Settings;
     if (block[0] == (byte)0)
     {
         var hf          = HeaderFactory.Instance;
         var fileHeaders = hf.CreateHeaders(
             block.Skip(4).Take(settings.BlockSize - 8).ToArray()
             );
         return(new TOC()
         {
             Type = 0,
             Next = BitConverter.ToInt32(block, settings.BlockSize - 4),
             FileHeaders = fileHeaders
         });
     }
     return(new SystemFile()
     {
         Type = BitConverter.ToInt32(block, 0),
         Data = block.Skip(4).Take(settings.DataSize).ToArray(),
         Next = BitConverter.ToInt32(block, settings.DataSize + 4)
     });
 }
Exemple #5
0
 public static byte[] ToBytes(ICFSettings settings)
 {
     return(new byte[512]);
 }