using System.Buffers.Binary; using System.Security.Cryptography; namespace XFEEliteDangerous.NativeFormat.Replication; /// /// Native78/79: U32 correlation and a compressed byte vector containing a record /// map.984D60/933CE0 read its envelope;9B6AD0/9B5E20 expand the raw Snappy block; /// 1D21000/1CA6CA0 fulfill the matching request and accept a zero-entry map. /// Only the explicitly empty local map is supported here, never nonempty imports. /// public static class EdServerPersistentRecordMapMessageCodec { public static uint ReadRequest(EdServerCallEnvelope message) { if(message.PayloadBits!=40)throw new InvalidDataException("Invalid native record-map request shape."); var bytes=message.CopyPayload(); try { if(bytes[0]!=78)throw new InvalidDataException("Invalid native record-map request method."); return BinaryPrimitives.ReadUInt32LittleEndian(bytes.AsSpan(1)); } finally{CryptographicOperations.ZeroMemory(bytes);} } public static EdServerCallEnvelope CreateEmptyReply(ulong reference,uint requestId) { Span bytes=stackalloc byte[16];bytes.Clear();bytes[0]=79; BinaryPrimitives.WriteUInt32LittleEndian(bytes[1..],requestId); // Compressed vector length10: exponent3 (five bits), residual3 // (three bits). Its ten bytes are varint raw-size8, Snappy literal // token(8-1)<<2 and eight zero bytes: compressed map count0 plus padding. bytes[5]=3|(3<<5);bytes[6]=8;bytes[7]=(8-1)<<2; try{return new(reference,false,128,bytes);}finally{bytes.Clear();} } public static uint ReadEmptyReply(EdServerCallEnvelope message) { if(message.Flag||message.PayloadBits!=128)throw new InvalidDataException("Invalid native empty record-map reply shape."); var bytes=message.CopyPayload(); try { if(bytes[0]!=79||bytes[5]!=0x63||bytes[6]!=8||bytes[7]!=0x1C||bytes.AsSpan(8).ContainsAnyExcept((byte)0)) throw new InvalidDataException("Expected the explicit empty native record map."); return BinaryPrimitives.ReadUInt32LittleEndian(bytes.AsSpan(1)); } finally{CryptographicOperations.ZeroMemory(bytes);} } }