示例#1
0
 public VfsTree(VfsCasConfiguration configuration)
 {
     PathTable              = new PathTable();
     _configuration         = configuration;
     _root                  = new VfsDirectoryNode(string.Empty, DateTime.UtcNow, null);
     _nodeMap[string.Empty] = _root;
 }
示例#2
0
        /// <nodoc />
        public VirtualizedContentStore(IContentStore innerStore, Logger logger, VfsCasConfiguration configuration)
        {
            _logger        = logger;
            _innerStore    = innerStore;
            _configuration = configuration;

            Tree = new VfsTree(_configuration);
        }
示例#3
0
 public VfsContentManager(ILogger logger, VfsCasConfiguration configuration, VfsTree tree, IContentSession contentSession)
 {
     _logger         = logger;
     _configuration  = configuration;
     Tree            = tree;
     _contentSession = contentSession;
     _fileSystem     = new PassThroughFileSystem();
     _tempDirectory  = new DisposableDirectory(_fileSystem, configuration.DataRootPath / "temp");
 }
示例#4
0
        /// <nodoc />
        public VfsContentManager(ILogger logger, VfsCasConfiguration configuration, IReadOnlyContentSession placer)
        {
            Tree = new VfsTree(configuration);

            _logger        = logger;
            _configuration = configuration;
            _placer        = placer;
            _fileSystem    = new PassThroughFileSystem();
            _tempDirectory = new DisposableDirectory(_fileSystem, configuration.DataRootPath / "temp");

            Provider = new VfsProvider(logger, configuration, this);
        }
示例#5
0
        public async Task RunAsync(VfsCasConfiguration configuration)
        {
            // Create VFS root
            using (var fileLog = new FileLog((configuration.RootPath / "Bvfs.log").Path))
                using (var logger = new Logger(fileLog))
                {
                    var fileSystem = new PassThroughFileSystem(logger);
                    var context    = new OperationContext(new Context(logger));

                    // Map junctions into VFS root
                    foreach (var mount in configuration.VirtualizationMounts)
                    {
                        CreateJunction(context, source: mount.Value, target: configuration.VfsMountRootPath / mount.Key);
                    }

                    var clientContentStore = new ServiceClientContentStore(
                        logger,
                        fileSystem,
                        new ServiceClientContentStoreConfiguration(
                            configuration.CacheName,
                            new ServiceClientRpcConfiguration(
                                configuration.BackingGrpcPort),
                            scenario: configuration.Scenario));

                    // Client is startup/shutdown with wrapping VFS content store

                    using (var server = new LocalContentServer(
                               fileSystem,
                               logger,
                               scenario: "bvfs" + configuration.ServerGrpcPort,
                               path => new VirtualizedContentStore(clientContentStore, logger, configuration),
                               new LocalServerConfiguration(
                                   configuration.DataRootPath,
                                   new Dictionary <string, AbsolutePath>()
                    {
                        { configuration.CacheName, configuration.ServerRootPath }
                    },
                                   configuration.ServerGrpcPort,
                                   fileSystem)))
                    {
                        await server.StartupAsync(context).ThrowIfFailure();

                        await WaitForTerminationAsync(context);

                        await server.ShutdownAsync(context).ThrowIfFailure();
                    }
                }
        }
 /// <nodoc />
 public VirtualizedContentStore(IContentStore innerStore, ILogger logger, VfsCasConfiguration configuration)
 {
     _logger       = logger;
     _innerStore   = innerStore;
     Configuration = configuration;
 }