Example #1
0
        public Archive Open(string path)
        {
            var package              = Package.Open(path, FileMode.Open);
            var metadata             = package.GetPart(new Uri("/Metadata.xml", UriKind.Relative)).GetStream();
            var mapProvider          = new MapProvider(package);
            var metadataStreamMapper = new MetadataStreamMapper(ChecksumSize);
            var metadataRepository   = OpenRepository(package, "/Metadata.dat", metadataStreamMapper, metadataStreamMapper.BufferSize);
            var dataRepository       = OpenRepository(package, "/Data.dat", new DataStreamMapper(BlockSize), BlockSize);
            var storage              = new Storage(_hash, mapProvider, metadataRepository, dataRepository);
            var mapProcessor         = new MapProcessorFactory(storage);
            var repository           = new Repository(mapProcessor, storage.MapIds.ToList(), BlockSize);

            return(new Archive(package, repository, metadata));
        }
Example #2
0
        public Archive Create(string path)
        {
            var package              = Package.Open(path, FileMode.Create);
            var metadata             = package.CreatePart(new Uri("/Metadata.xml", UriKind.Relative), System.Net.Mime.MediaTypeNames.Text.Xml).GetStream();
            var mapProvider          = new MapProvider(package);
            var metadataStreamMapper = new MetadataStreamMapper(ChecksumSize);
            var metadataRepository   = CreateRepository(package, "/Metadata.dat", metadataStreamMapper, metadataStreamMapper.BufferSize);
            var dataRepository       = CreateRepository(package, "/Data.dat", new DataStreamMapper(BlockSize), BlockSize);
            var storage              = new Storage(_hash, mapProvider, metadataRepository, dataRepository);
            var mapProcessor         = new MapProcessorFactory(storage);
            var repository           = new Repository(mapProcessor, storage.MapIds.ToList(), BlockSize);

            package.Flush();

            return(new Archive(package, repository, metadata));
        }