/// <summary> /// Initializes a new instance of the <see cref="BlobReadOnlyContentSession"/> class. /// </summary> /// <param name="fileSystem">Filesystem used to read/write files.</param> /// <param name="name">Session name.</param> /// <param name="implicitPin">Policy determining whether or not content should be automatically pinned on adds or gets.</param> /// <param name="dedupStoreHttpClient">Backing DedupStore http client.</param> /// <param name="timeToKeepContent">Minimum time-to-live for accessed content.</param> /// <param name="pinInlineThreshold">Maximum time-to-live to inline pin calls.</param> /// <param name="ignorePinThreshold">Minimum time-to-live to ignore pin calls.</param> /// <param name="maxConnections">The maximum number of outbound connections to VSTS.</param> /// <param name="counterTracker">Parent counters to track the session.</param> public DedupReadOnlyContentSession( IAbsFileSystem fileSystem, string name, ImplicitPin implicitPin, IDedupStoreHttpClient dedupStoreHttpClient, TimeSpan timeToKeepContent, TimeSpan pinInlineThreshold, TimeSpan ignorePinThreshold, CounterTracker counterTracker = null, int maxConnections = DefaultMaxConnections) : base(name, counterTracker) { Contract.Requires(fileSystem != null); Contract.Requires(name != null); Contract.Requires(dedupStoreHttpClient != null); ImplicitPin = implicitPin; DedupStoreClient = new DedupStoreClient(dedupStoreHttpClient, DefaultMaxParallelism); FileSystem = fileSystem; TempDirectory = new DisposableDirectory(fileSystem); ConnectionGate = new SemaphoreSlim(maxConnections); EndDateTime = DateTime.UtcNow + timeToKeepContent; _pinInlineThreshold = pinInlineThreshold; _ignorePinThreshold = ignorePinThreshold; _counters = CounterTracker.CreateCounterCollection <BackingContentStore.SessionCounters>(counterTracker); _dedupCounters = CounterTracker.CreateCounterCollection <Counters>(counterTracker); }
/// <summary> /// Initializes a new instance of the <see cref="DedupContentSession"/> class. /// </summary> public DedupContentSession( Context context, IAbsFileSystem fileSystem, string name, ImplicitPin implicitPin, IDedupStoreHttpClient dedupStoreHttpClient, TimeSpan timeToKeepContent, int maxConnections = DefaultMaxConnections) : base(fileSystem, name, implicitPin, dedupStoreHttpClient, timeToKeepContent, maxConnections) { _artifactFileSystem = VstsFileSystem.Instance; _uploadSession = DedupStoreClient.CreateUploadSession( DedupStoreClient, new KeepUntilBlobReference(EndDateTime), new AppTraceSourceContextAdapter(context, "CreateUploadSession", SourceLevels.All), _artifactFileSystem); }
/// <summary> /// Initializes a new instance of the <see cref="BlobReadOnlyContentSession"/> class. /// </summary> /// <param name="fileSystem">Filesystem used to read/write files.</param> /// <param name="name">Session name.</param> /// <param name="implicitPin">Policy determining whether or not content should be automatically pinned on adds or gets.</param> /// <param name="dedupStoreHttpClient">Backing DedupStore http client.</param> /// <param name="timeToKeepContent">Minimum time-to-live for accessed content.</param> /// <param name="maxConnections">The maximum number of outboud connections to VSTS.</param> public DedupReadOnlyContentSession( IAbsFileSystem fileSystem, string name, ImplicitPin implicitPin, IDedupStoreHttpClient dedupStoreHttpClient, TimeSpan timeToKeepContent, int maxConnections = DefaultMaxConnections) : base(name) { Contract.Requires(fileSystem != null); Contract.Requires(name != null); Contract.Requires(dedupStoreHttpClient != null); ImplicitPin = implicitPin; DedupStoreClient = new DedupStoreClient(dedupStoreHttpClient, DefaultMaxParallelism); FileSystem = fileSystem; TempDirectory = new DisposableDirectory(fileSystem); ConnectionGate = new SemaphoreSlim(maxConnections); EndDateTime = DateTime.UtcNow + timeToKeepContent; }