public async Task StartPump(CancellationToken cancellationToken = default)
        {
            if (!CloudStorageAccount.TryParse(
                    eventHubsDetails.CaptureStorageAccountConnectionString,
                    out CloudStorageAccount storageAccount))
            {
                return;
            }

            var              cloudBlobClient     = storageAccount.CreateCloudBlobClient();
            var              captureContainer    = cloudBlobClient.GetContainerReference(eventHubsDetails.CaptureContainerName);
            var              captureContainerUri = captureContainer.Uri.ToString() + "/";
            string           uriPrefix           = captureContainerUri + startString;
            string           listBlobPrefix      = FormatStorageString(partitionContext);
            OperationContext operationContext    = null;

            BlobContinuationToken blobContinuationToken = null;

            do
            {
                var blobResultSegment = await captureContainer.ListBlobsSegmentedAsync(
                    prefix : listBlobPrefix, useFlatBlobListing : true,
                    blobListingDetails : BlobListingDetails.None,
                    maxResults : null, currentToken : blobContinuationToken,
                    options : new BlobRequestOptions(), operationContext : operationContext,
                    cancellationToken : cancellationToken);

                blobContinuationToken = blobResultSegment.ContinuationToken;

                foreach (var listBlobItem in blobResultSegment.Results)
                {
                    if (useStartFile && string.Compare(uriPrefix, listBlobItem.Uri.AbsoluteUri) > 0)
                    {
                        continue;
                    }

                    var blob = await cloudBlobClient.GetBlobReferenceFromServerAsync(
                        blobUri : listBlobItem.Uri, cancellationToken : cancellationToken);

                    using Stream stream = await blob.OpenReadAsync(
                              accessCondition : null,
                              options : new BlobRequestOptions(),
                              operationContext : operationContext,
                              cancellationToken : cancellationToken);

                    IEnumerable <EventData> eventHubMessages = stream.ReadAvroStreamToEventHubData(
                        partitionKey: this.partitionContext.PartitionId);

                    await eventProcessor.ProcessEventsAsync(
                        context : partitionContext,
                        messages : eventHubMessages);
                }
            } while (blobContinuationToken != null);
        }
        public async Task StartPump()
        {
            //start the pump on storage account or
            CloudStorageAccount storageAccount;

            if (CloudStorageAccount.TryParse(eventHubsDetails.StorageAccountConnectionString, out storageAccount))
            {
                var    cloudBlobClient    = storageAccount.CreateCloudBlobClient();
                var    cloudBlobContainer = cloudBlobClient.GetContainerReference(eventHubsDetails.CaptureContainer);
                string containerUri       = cloudBlobContainer.Uri.ToString() + "/";
                BlobContinuationToken blobContinuationToken = null;
                do
                {
                    BlobRequestOptions bro    = new BlobRequestOptions();
                    string             format = FormatStorageString(context.PartitionId);
                    var results = cloudBlobContainer.ListBlobsSegmentedAsync(format,
                                                                             true, BlobListingDetails.None, null, blobContinuationToken, bro, null).Result;
                    // Get the value of the continuation token returned by the listing call.
                    blobContinuationToken = results.ContinuationToken;
                    foreach (IListBlobItem item in results.Results)
                    {
                        if (useStartFile)
                        {
                            if (string.Compare(containerUri + startString, item.Uri.ToString()) > 0)
                            {
                                //do something?
                                continue;
                            }
                        }

                        Console.WriteLine(item.Uri);
                        ICloudBlob blob = await cloudBlobClient.GetBlobReferenceFromServerAsync(item.Uri);

                        using (Stream stream = blob.OpenReadAsync(null, bro, null).Result)
                        {
                            await processor.ProcessEventsAsync(context, ReadFile(stream));
                        }
                    }
                } while (blobContinuationToken != null); // Loop while the continuation token is not null.
            }

            /*
             * //file local store
             * foreach (var file in Directory.EnumerateFiles(filePath, searchPattern))
             * {
             *  //load each file
             *  using (var inStream = File.OpenRead(file))
             *  {
             *      processor.ProcessEventsAsync(context, ReadFile(inStream));
             *  }
             * }
             */
            //return Task.CompletedTask;
        }