public async Task<IEnumerable<Thing>> RetrieveOrderedThings(string key, TimeSpan maxAge)
{
await Initialize();
try
{
using (var blobCursor = await _blobStoreDb.SeekAsync(_blobStoreDb.GetKeys()[0], BitConverter.GetBytes(key.GetHashCode()), DBReadFlags.WaitOnLock))
{
if (blobCursor != null)
{
var gottenBlob = blobCursor.Get();
var microseconds = BitConverter.ToInt64(gottenBlob, 4);
var updatedTime = new DateTime(microseconds * 10).AddYears(1969);
var blobAge = DateTime.Now - updatedTime;
if (blobAge <= maxAge)
{
var compressor = new BaconographyPortable.Model.Compression.CompressionService();
var decompressedBytes = compressor.Decompress(gottenBlob, 12);
IEnumerable<Thing> result = JsonConvert.DeserializeObject<Thing[]>(Encoding.UTF8.GetString(decompressedBytes, 0, decompressedBytes.Length));
return result;
}
}
}
}
catch(Exception ex)
{
var errorString = DBError.TranslateError((uint)ex.HResult);
Debug.WriteLine(errorString);
}
return null;
}