public override void ReadBody(NdrBinaryStream stream) { ClaimSource = (ClaimSourceType)stream.ReadInt(); Count = stream.ReadUnsignedInt(); var claims = new List <ClaimEntry>(); stream.Seek(4); var count = stream.ReadInt(); if (Count != count) { throw new InvalidDataException($"Claims count {Count} doesn't match actual count {count}"); } for (var i = 0; i < Count; i++) { var claim = new ClaimEntry(); claim.ReadBody(stream); claims.Add(claim); } foreach (var entry in claims) { entry.ReadValue(stream); } ClaimEntries = claims; }
internal void WriteClaimEntry(ClaimEntry claim, Queue <Action> deferred) { WriteDeferredString(claim.Id, deferred); WriteUnsignedInt((int)claim.Type); WriteUnsignedInt(claim.RawValues.Count()); WriteReferent(deferred); deferred.Enqueue(() => { WriteDeferredArray(claim.RawValues, claim.Type == ClaimType.CLAIM_TYPE_STRING, (v, str) => claim.EncodeType(v, claim.Type, str)); }); }