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())); }
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())); }