Example #1
0
        private static async Task <List <FileRecord> > ReadStreamToRecords(CloudAppendBlob blob)
        {
            List <FileRecord> records = new List <FileRecord>();

            using (var s = new MemoryStream())
            {
                if (!await blob.ExistsAsync())
                {
                    return(records);
                }

                await blob.DownloadRangeToStreamAsync(s, 0, blob.Properties.Length);

                s.Position = 0;
                var reader = new BinaryReader(s);

                var record = new FileRecord();
                while (record.ReadContentFromStream(reader))
                {
                    records.Add(record);
                    record = new FileRecord();
                }
            }

            return(records);
        }
Example #2
0
        /// <summary>
        /// Gets all records from a starting file pointer
        /// </summary>
        /// <param name="pointer">Byte position inside the file to start downloading from.</param>
        /// <returns></returns>
        private async Task <IEnumerable <RecordContainer> > GetAllFromPointerAsync(long pointer)
        {
            if (!await file.ExistsAsync())
            {
                return(new List <RecordContainer>());
            }
            if ((await GetFileSize()) <= pointer)
            {
                return(new List <RecordContainer>());
            }

            using (MemoryStream ms = new MemoryStream())
            {
                await file.DownloadRangeToStreamAsync(ms, pointer, null);

                ms.Position = 0;

                return(ParseRecordStream(ms));
            }
        }