123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace InABox.DigitalMatter
- {
- public class DMDataRequest : DMMessage
- {
- public List<DMRecord> _records = new();
- public override byte Type => 0x04;
- public DMRecord[] Records
- {
- get => _records.ToArray();
- set => _records = value.ToList();
- }
- protected override void DoDecode(IDMReadBuffer buffer)
- {
- _records.Clear();
- ushort bytestaken = 0;
- while (bytestaken < CheckSum)
- {
- var length = buffer.PeekUInt16(0);
- var record = new DMRecord();
- record.Decode(new DMPartialReadBuffer(buffer, 0, length));
- bytestaken += length;
- _records.Add(record);
- }
- }
- protected override void DoEncode(IDMWriteBuffer buffer)
- {
- foreach (var record in _records)
- record.Encode(buffer);
- buffer.InsertUInt16(0, buffer.BufferSize);
- }
- public override byte[] Dump()
- {
- return Encoding.UTF8.GetBytes($"(DataRequest):\n- {string.Join("\n- ", Records.Select(x => x.Dump()))}");
- }
- }
- }
|