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); }
protected IDataFlowSource <ETLBoxError> InternalLinkErrorTo(IDataFlowDestination <ETLBoxError> target) { if (ErrorSource == null) { ErrorSource = new ErrorSource(); } ErrorSource.LinkTo(target); return(target as IDataFlowSource <ETLBoxError>); }