/// <summary> /// Bridge classification of single operation's argument. /// Get the argument data and pass it to the segmentation strategies. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="strategy">The strategy.</param> /// <param name="options">The options.</param> /// <param name="operation">The operation.</param> /// <param name="argumentName">Name of the argument.</param> /// <param name="producedData">The produced data.</param> /// <returns></returns> private async ValueTask <Bucket> ClassifyArgumentAsync <T>( IProducerAsyncSegmentationStrategy strategy, IEventSourceOptions options, string operation, string argumentName, T producedData) { Bucket segments = Bucket.Empty; var seg = await strategy.TryClassifyAsync( segments, operation, argumentName, producedData, options); #region Validation if (seg == null) { return(segments); } #endregion // Validation return(seg); }
/// <summary> /// Register segmentation strategy, /// Segmentation responsible of splitting an instance into segments. /// Segments is how the producer sending its raw data to /// the consumer. It's in a form of dictionary when /// keys represent the different segments /// and the value represent serialized form of the segment's data. /// </summary> /// <param name="segmentationStrategy">A strategy of segmentation.</param> /// <returns></returns> /// <exception cref="NotImplementedException"></exception> /// <example> /// Examples for segments can be driven from regulation like /// GDPR (personal, non-personal data), /// Technical vs Business aspects, etc. /// </example> IProducerHooksBuilder IProducerHooksBuilder.UseSegmentation( IProducerAsyncSegmentationStrategy segmentationStrategy) { var prms = Plan.AddSegmentation(segmentationStrategy); return(new ProducerBuilder(prms)); }
/// <summary> /// Adds the segmentation. /// </summary> /// <param name="segmentation">The segmentation.</param> /// <returns></returns> public ProducerPlan AddSegmentation( IProducerAsyncSegmentationStrategy segmentation) { return(new ProducerPlan(this, segmentationStrategies: SegmentationStrategies.Add(segmentation))); }