Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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();
        }