コード例 #1
0
        /// <summary>
        ///     Initializes a new instance of the <see cref="GetBulkLocationsResult"/> class.
        /// </summary>
        public GetBulkLocationsResult(IReadOnlyList <ContentHashWithSizeAndLocations> contentHashesInfo, GetBulkOrigin origin = GetBulkOrigin.Global)
        {
            Contract.Requires(contentHashesInfo != null);

            ContentHashesInfo = contentHashesInfo;
            Origin            = origin;
        }
コード例 #2
0
 public static Task <GetBulkLocationsResult> GetBulkAsync(
     this IContentLocationStore store,
     Context context,
     ContentHash contentHash,
     GetBulkOrigin origin)
 {
     return(store.GetBulkAsync(context, new ContentHash[] { contentHash }, CancellationToken.None, UrgencyHint.Nominal, origin));
 }
コード例 #3
0
        /// <summary>
        /// Retrieves the content locations for a given set of content hashes where Global origin returns merged global and local content locations.
        /// </summary>
        public static async Task <GetBulkLocationsResult> GetBulkStackedAsync(
            this IContentLocationStore store,
            Context context,
            IReadOnlyList <ContentHash> contentHashes,
            CancellationToken cts,
            UrgencyHint urgencyHint,
            GetBulkOrigin origin)
        {
            var localResults = await store.GetBulkAsync(context, contentHashes, cts, urgencyHint, GetBulkOrigin.Local);

            if (origin == GetBulkOrigin.Local)
            {
                return(localResults);
            }

            var globalResults = await store.GetBulkAsync(context, contentHashes, cts, urgencyHint, GetBulkOrigin.Global);

            return(localResults.Merge(globalResults));
        }
コード例 #4
0
 /// <inheritdoc />
 public Task <GetBulkLocationsResult> GetBulkAsync(Context context, IReadOnlyList <ContentHash> contentHashes, CancellationToken cts, UrgencyHint urgencyHint, GetBulkOrigin origin) => null;
コード例 #5
0
        /// <inheritdoc />
        public Task <GetBulkLocationsResult> GetBulkAsync(Context context, IReadOnlyList <ContentHash> contentHashes, CancellationToken cts, UrgencyHint urgencyHint, GetBulkOrigin origin)
        {
            var operationContext = new OperationContext(context, cts);

            if (!_configuration.HasReadMode(ContentLocationMode.Redis) || (origin == GetBulkOrigin.Local && _configuration.HasReadMode(ContentLocationMode.LocalLocationStore)))
            {
                return(_localLocationStore.GetBulkAsync(operationContext, contentHashes, origin));
            }

            Contract.Assert(_redisContentLocationStore != null, "Read or Write mode should support ContentLocationMode.Redis.");
            return(_redisContentLocationStore.GetBulkAsync(context, contentHashes, cts, urgencyHint, origin));
        }
コード例 #6
0
        /// <inheritdoc />
        public Task <GetBulkLocationsResult> GetBulkAsync(Context context, IReadOnlyList <ContentHash> contentHashes, CancellationToken cts, UrgencyHint urgencyHint, GetBulkOrigin origin)
        {
            var operationContext = new OperationContext(context, cts);

            return(GetBulkAsync(operationContext, contentHashes, origin));
        }
コード例 #7
0
 /// <nodoc />
 public Task <GetBulkLocationsResult> GetBulkAsync(OperationContext context, IReadOnlyList <ContentHash> contentHashes, GetBulkOrigin origin)
 {
     return(LocalLocationStore.GetBulkAsync(context, LocalMachineId, contentHashes, origin));
 }
コード例 #8
0
 private static GetBulkLocationsResult ToResult(GetBulkOrigin origin, params ContentHashWithSizeAndLocations[] contentHashes)
 => new GetBulkLocationsResult(contentHashes, origin);