protected void WriteBatch(TInput[] data)
 {
     if (data == null || data.Length == 0)
     {
         return;
     }
     if (ProgressCount == 0)
     {
         NLogStartOnce();
     }
     try
     {
         if (BeforeBatchWrite != null)
         {
             data = BeforeBatchWrite.Invoke(data);
         }
         if (!WasWritingPrepared)
         {
             PrepareWrite();
             WasWritingPrepared = true;
         }
         BulkInsertData(data);
         LogProgressBatch(data.Length);
         AfterBatchWrite?.Invoke(data);
     }
     catch (Exception e)
     {
         ThrowOrRedirectError(e, ErrorSource.ConvertErrorData <TInput[]>(data));
     }
 }
 protected override void InternalInitBufferObjects()
 {
     Buffer = new BufferBlock <TOutput>(new DataflowBlockOptions()
     {
         BoundedCapacity = MaxBufferSize
     });
     Completion = new Task(
         () =>
     {
         try
         {
             OnExecutionDoAsyncWork();
             CompleteBufferOnPredecessorCompletion();
             ErrorSource?.CompleteBufferOnPredecessorCompletion();
             CleanUpOnSuccess();
         }
         catch (Exception e)
         {
             FaultBufferOnPredecessorCompletion(e);
             ErrorSource?.FaultBufferOnPredecessorCompletion(e);
             CleanUpOnFaulted(e);
             throw e;
         }
     }
         , TaskCreationOptions.LongRunning);
 }
Beispiel #3
0
 protected IDataFlowSource <ETLBoxError> InternalLinkErrorTo(IDataFlowDestination <ETLBoxError> target)
 {
     if (ErrorSource == null)
     {
         ErrorSource = new ErrorSource();
     }
     ErrorSource.LinkTo(target);
     return(target as IDataFlowSource <ETLBoxError>);
 }