<PackageReference Include="Azure.Storage.Blobs" Version="12.26.0-beta.1" />

AvroReader

using System; using System.Collections.Generic; using System.IO; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; namespace Azure.Storage.Internal.Avro { internal class AvroReader : IDisposable { private readonly Stream _dataStream; private readonly Stream _headerStream; private byte[] _syncMarker; private Dictionary<string, string> _metadata; private AvroType _itemType; private long _itemsRemainingInBlock; private bool _initalized; private bool _disposed; private readonly long _initialBlockOffset; public virtual long BlockOffset { get; set; } public virtual long ObjectIndex { get; set; } public AvroReader(Stream dataStream) { if (dataStream.CanSeek) { _dataStream = dataStream; _headerStream = dataStream; } else { _dataStream = new StreamWithPosition(dataStream, 0); _headerStream = _dataStream; } _metadata = new Dictionary<string, string>(); _initalized = false; } public AvroReader(Stream dataStream, Stream headerStream, long currentBlockOffset, long indexWithinCurrentBlock) { if (dataStream.CanSeek) _dataStream = dataStream; else _dataStream = new StreamWithPosition(dataStream, 0); if (headerStream.CanSeek) _headerStream = headerStream; else _headerStream = new StreamWithPosition(headerStream, 0); _metadata = new Dictionary<string, string>(); _initalized = false; _initialBlockOffset = currentBlockOffset; BlockOffset = currentBlockOffset; ObjectIndex = indexWithinCurrentBlock; _initalized = false; } public AvroReader() { } [AsyncStateMachine(typeof(<Initalize>d__20))] public virtual Task Initalize(bool async, CancellationToken cancellationToken = default(CancellationToken)) { <Initalize>d__20 stateMachine = default(<Initalize>d__20); stateMachine.<>t__builder = AsyncTaskMethodBuilder.Create(); stateMachine.<>4__this = this; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public virtual bool HasNext() { if (_initalized) return _itemsRemainingInBlock > 0; return true; } [AsyncStateMachine(typeof(<Next>d__22))] public virtual Task<object> Next(bool async, CancellationToken cancellationToken = default(CancellationToken)) { <Next>d__22 stateMachine = default(<Next>d__22); stateMachine.<>t__builder = AsyncTaskMethodBuilder<object>.Create(); stateMachine.<>4__this = this; stateMachine.async = async; stateMachine.cancellationToken = cancellationToken; stateMachine.<>1__state = -1; stateMachine.<>t__builder.Start(ref stateMachine); return stateMachine.<>t__builder.Task; } public void Dispose() { Dispose(true); } protected virtual void Dispose(bool disposing) { if (!_disposed) { if (disposing) { _dataStream.Dispose(); _headerStream.Dispose(); } _disposed = true; } } } }