Ejemplo n.º 1
0
        public static ClaimPredicate Decode(XdrDataInputStream stream)
        {
            ClaimPredicate     decodedClaimPredicate = new ClaimPredicate();
            ClaimPredicateType discriminant          = ClaimPredicateType.Decode(stream);

            decodedClaimPredicate.Discriminant = discriminant;
            switch (decodedClaimPredicate.Discriminant.InnerValue)
            {
            case ClaimPredicateType.ClaimPredicateTypeEnum.CLAIM_PREDICATE_UNCONDITIONAL:
                break;

            case ClaimPredicateType.ClaimPredicateTypeEnum.CLAIM_PREDICATE_AND:
                int andPredicatessize = stream.ReadInt();
                decodedClaimPredicate.AndPredicates = new ClaimPredicate[andPredicatessize];
                for (int i = 0; i < andPredicatessize; i++)
                {
                    decodedClaimPredicate.AndPredicates[i] = ClaimPredicate.Decode(stream);
                }
                break;

            case ClaimPredicateType.ClaimPredicateTypeEnum.CLAIM_PREDICATE_OR:
                int orPredicatessize = stream.ReadInt();
                decodedClaimPredicate.OrPredicates = new ClaimPredicate[orPredicatessize];
                for (int i = 0; i < orPredicatessize; i++)
                {
                    decodedClaimPredicate.OrPredicates[i] = ClaimPredicate.Decode(stream);
                }
                break;

            case ClaimPredicateType.ClaimPredicateTypeEnum.CLAIM_PREDICATE_NOT:
                int NotPredicatePresent = stream.ReadInt();
                if (NotPredicatePresent != 0)
                {
                    decodedClaimPredicate.NotPredicate = ClaimPredicate.Decode(stream);
                }
                break;

            case ClaimPredicateType.ClaimPredicateTypeEnum.CLAIM_PREDICATE_BEFORE_ABSOLUTE_TIME:
                decodedClaimPredicate.AbsBefore = Int64.Decode(stream);
                break;

            case ClaimPredicateType.ClaimPredicateTypeEnum.CLAIM_PREDICATE_BEFORE_RELATIVE_TIME:
                decodedClaimPredicate.RelBefore = Int64.Decode(stream);
                break;
            }
            return(decodedClaimPredicate);
        }
 public static void Encode(XdrDataOutputStream stream, ClaimPredicateType value)
 {
     stream.WriteInt((int)value.InnerValue);
 }