public ProxyStream(ComplexFile cf, FileHeader fileHeader) { settings = ComplexFile.Settings; this.cf = (FileStream)cf; startBlock = fileHeader.BlockNumber; size = (long)fileHeader.Size; Position = 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(); }
/* ** 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) }); }
public static byte[] ToBytes(ICFSettings settings) { return(new byte[512]); }