using InnovEnergy.Lib.Protocols.DBus.WireFormat; namespace InnovEnergy.Lib.Protocols.DBus.Transport; using Buffer = ArraySegment; internal class DBusBufferReader : DBusReader { private Int32 _Position; private Buffer Buffer { get; } public override Int32 BytesRead => _Position; public DBusBufferReader(Buffer buffer, Boolean swapEndian) : base(swapEndian) => Buffer = buffer; public override Byte ReadByte() { return Buffer[_Position++]; } public override Buffer ReadSegment(Int32 size) { var segment = Buffer.Slice(_Position, size); // DEBUG // var s = new System.Diagnostics.StackTrace(); // var frames = s.GetFrames(); // var meth = frames // .Select(f => f.GetMethod()!.Name) // .FirstOrDefault(n => !n.Contains("AlignedSpan") && !n.Contains("ReadSegment")); // // Console.WriteLine(meth ?? ""); // Console.WriteLine(segment.ToHexView2()); _Position += size; return segment; } }