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); }
/// <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)); } }