Exemple #1
0
 public RowDuplication()
 {
     TypeInfo     = new TypeInfo(typeof(TInput));
     ObjectCopy   = new ObjectCopy <TInput>(TypeInfo);
     OutputBuffer = new BufferBlock <TInput>();
     InputBuffer  = new ActionBlock <TInput>(row => DuplicateRow(row));
     InputBuffer.Completion.ContinueWith(t => FinishInput());
 }
Exemple #2
0
 private void DuplicateRow(TInput row)
 {
     if (row == null)
     {
         return;
     }
     OutputBuffer.SendAsync(row).Wait();
     LogProgress();
     for (int i = 0; i < NumberOfDuplicates; i++)
     {
         if (CanDuplicate?.Invoke(row) ?? true)
         {
             TInput copy = ObjectCopy.Clone(row);
             OutputBuffer.SendAsync(copy).Wait();
             LogProgress();
         }
     }
 }
Exemple #3
0
        private IEnumerable <TInput> DuplicateRow(TInput row)
        {
            if (row == null)
            {
                return(null);
            }
            List <TInput> result = new List <TInput>(NumberOfDuplicates);

            result.Add(row);
            LogProgress();
            for (int i = 0; i < NumberOfDuplicates; i++)
            {
                if (CanDuplicate?.Invoke(row) ?? true)
                {
                    TInput copy = ObjectCopy.Clone(row);
                    result.Add(copy);
                    LogProgress();
                }
            }
            return(result);
        }
Exemple #4
0
 public Multicast()
 {
     TypeInfo       = new TypeInfo(typeof(TInput));
     ObjectCopy     = new ObjectCopy <TInput>(TypeInfo);
     BroadcastBlock = new BroadcastBlock <TInput>(Clone);
 }
Exemple #5
0
 public RowDuplication()
 {
     TypeInfo       = new TypeInfo(typeof(TInput));
     ObjectCopy     = new ObjectCopy <TInput>(TypeInfo);
     TransformBlock = new TransformManyBlock <TInput, TInput>(DuplicateRow);
 }