コード例 #1
0
        private async Task <PeekResponse> HandleAsync(PeekCommandBase request, Func <ActorId, Uuid?, Task <Bundle?> > requestHandler)
        {
            ArgumentNullException.ThrowIfNull(request, nameof(request));

            _logger.LogProcess("Peek", _correlationContext.Id, request.MarketOperator);

            var marketOperator = Guid.TryParse(request.MarketOperator, out var actorId)
                ? new ActorId(actorId)
                : new LegacyActorId(new GlobalLocationNumber(request.MarketOperator));

            var suggestedBundleId = request.BundleId != null
                ? new Uuid(request.BundleId)
                : null;

            var bundle = await requestHandler(marketOperator, suggestedBundleId).ConfigureAwait(false);

            if (bundle != null)
            {
                if (bundle.TryGetContent(out var bundleContent))
                {
                    _logger.LogProcess("Peek", "HasContent", _correlationContext.Id, request.MarketOperator, bundle.BundleId.ToString(), bundle.NotificationIds.Select(x => x.ToString()));

                    return(new PeekResponse(
                               true,
                               bundle.BundleId.ToString(),
                               await bundleContent.OpenAsync().ConfigureAwait(false),
                               bundle.DocumentTypes));
                }

                _logger.LogProcess("Peek", "TimeoutOrError", _correlationContext.Id, request.MarketOperator, bundle.BundleId.ToString(), bundle.NotificationIds.Select(x => x.ToString()));
            }

            _logger.LogProcess("Peek", "NoContent", _correlationContext.Id, request.MarketOperator, string.Empty);

            return(new PeekResponse(
                       false,
                       string.Empty,
                       Stream.Null,
                       Enumerable.Empty <string>()));
        }
コード例 #2
0
 private static bool BundleIdCheck(Uuid r, PeekCommandBase request)
 {
     return(r.ToString().Equals(request.BundleId, StringComparison.OrdinalIgnoreCase));
 }