コード例 #1
0
        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;
        }
コード例 #2
0
        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));
            });
        }