public override async ValueTask <T> ReadAsync(CancellationToken token) { await reader.WaitToReadAsync(token).ConfigureAwait(false); //lock and deserialize T result; using (await readLock.Acquire(token).ConfigureAwait(false)) { var lookup = Partition; //reset file cache await lookup.FlushAsync(token).ConfigureAwait(false); result = await reader.DeserializeAsync(lookup, token).ConfigureAwait(false); cursor.Advance(lookup.Position); } return(result); }
public override async ValueTask WriteAsync(T item, CancellationToken token) { using (await writeLock.Acquire(token).ConfigureAwait(false)) { var partition = Partition; await writer.SerializeAsync(item, partition, token).ConfigureAwait(false); cursor.Advance(partition.Position); } writer.MessageReady(); }