public async Task <Snapshot> Load(string emitterId) { return(env.Read(txn => { using (var owner = MemoryPool <byte> .Shared.Rent(MaxBufferSize)) { var key = new DirectBuffer(Encoding.UTF8.GetBytes(emitterId)); var data = new DirectBuffer(owner.Memory.Span); using (var cursor = db.OpenReadOnlyCursor(txn)) { if (cursor.TryGet(ref key, ref data, CursorGetOption.Last)) { return (Snapshot)snapshotSerializer.FromBinary(owner.Memory.ToArray(), typeof(Snapshot)); } else { return default(Snapshot); } } } })); }