Beispiel #1
0
        private static AggregationHashChain CreateAggregationHashChainWithLevelCorrection(AggregationHashChain aggregationHashChain, ulong levelCorrection)
        {
            ReadOnlyCollection <AggregationHashChain.Link> chainLinks = aggregationHashChain.GetChainLinks();
            TlvTagBuilder builder = new TlvTagBuilder(aggregationHashChain);

            AggregationHashChain.Link firstLink = chainLinks[0];
            builder.ReplaceChildTag(firstLink, CreateLinkWithLevelCorrection(firstLink, levelCorrection));
            return(new AggregationHashChain(builder.BuildTag()));
        }
Beispiel #2
0
        private static AggregationHashChain.Link CreateLinkWithLevelCorrection(AggregationHashChain.Link link, ulong levelCorrection)
        {
            TlvTagBuilder builder            = new TlvTagBuilder(link);
            IntegerTag    levelCorrectionTag = builder.GetChildByType(Constants.AggregationHashChain.Link.LevelCorrectionTagType) as IntegerTag;

            if (levelCorrectionTag != null)
            {
                IntegerTag newLevelCorrectionTag = new IntegerTag(
                    levelCorrectionTag.Type,
                    levelCorrectionTag.NonCritical,
                    levelCorrectionTag.Forward,
                    levelCorrection);

                builder.ReplaceChildTag(levelCorrectionTag, newLevelCorrectionTag);
            }
            else
            {
                builder.AddChildTag(new IntegerTag(Constants.AggregationHashChain.Link.LevelCorrectionTagType, false, false, levelCorrection));
            }

            return(new AggregationHashChain.Link(builder.BuildTag()));
        }