Beispiel #1
0
        public virtual HttpRequest Create(HeadDocumentRequest request)
        {
            Ensure.That(request, "request").IsNotNull();

            return(new HttpRequest(HttpMethod.Head, GenerateRelativeUrl(request))
                   .SetRequestTypeHeader(request.GetType())
                   .SetIfMatchHeader(request.Rev));
        }
Beispiel #2
0
        protected virtual string GenerateRelativeUrl(HeadDocumentRequest request)
        {
            var urlParams = new UrlParams();

            urlParams.AddIfNotNullOrWhiteSpace("rev", request.Rev);

            return(string.Format("/{0}{1}", new UrlSegment(request.Id), new QueryString(urlParams)));
        }
Beispiel #3
0
        public virtual async Task <DocumentHeaderResponse> HeadAsync(HeadDocumentRequest request)
        {
            var httpRequest = CreateHttpRequest(request);

            using (var res = await SendAsync(httpRequest).ForAwait())
            {
                return(ProcessDocumentHeaderResponse(res));
            }
        }
Beispiel #4
0
        public virtual async Task <DocumentHeaderResponse> HeadAsync(HeadDocumentRequest request, CancellationToken cancellationToken = default)
        {
            var httpRequest = HeadDocumentHttpRequestFactory.Create(request);

            using (var res = await SendAsync(httpRequest, cancellationToken).ForAwait())
            {
                return(await DocumentHeaderReponseFactory.CreateAsync(res).ForAwait());
            }
        }
Beispiel #5
0
        public static async Task RemoveInboundRCSsAsync(IEnumerable <RCS.StackID> enumerable, int generationOrOlder)
        {
            await rcsRemovalLock.DoLockedAsync(async() =>
            {
                if (inboundRCSsRemoved >= generationOrOlder)
                {
                    return;
                }
                if (generationOrOlder > inboundRCSsRemoved + 10)
                {
                    inboundRCSsRemoved = generationOrOlder - 10;
                }
                Log.Minor("Trimming inbound RCSs g" + (inboundRCSsRemoved + 1) + " .. g" + generationOrOlder);

                List <Task <DocumentHeaderResponse> > tasks = new List <Task <DocumentHeaderResponse> >();
                List <DocumentHeader> bulkRemove            = new List <DocumentHeader>();
                for (int g = inboundRCSsRemoved + 1; g <= generationOrOlder; g++)
                {
                    foreach (var s in enumerable)
                    {
                        HeadDocumentRequest req = new HeadDocumentRequest(new RCS.GenID(s, g).ToString());
                        tasks.Add(RCSStore.Documents.HeadAsync(req));
                    }
                }
                foreach (var t in tasks)
                {
                    var rs = await t;
                    if (rs.IsSuccess)
                    {
                        bulkRemove.Add(new DocumentHeader(rs.Id, rs.Rev));
                    }
                }
                if (bulkRemove.Count > 0)
                {
                    var result =
                        await RCSStore.Documents.BulkAsync(new BulkRequest().Delete(bulkRemove.ToArray()));
                    if (!result.IsSuccess)
                    {
                        Log.Error("Failed to remove some inbound RCSs: " + result.Error);
                    }
                }
                inboundRCSsRemoved = generationOrOlder;
            });
        }
Beispiel #6
0
 protected virtual HttpRequest CreateHttpRequest(HeadDocumentRequest request)
 {
     return(HeadDocumentHttpRequestFactory.Create(request));
 }