Class RowTransformBase<TDerived, TInputOutputError>
An abstract dataflow worker with an Input, Output, and ErrorOutput port,
all of the same type, which repeatedly executes the OnInputRow(TInputOutputError)
method on each incoming row. The method is passed the row as a parameter, to read and modify
as needed. The method does not itself take rows from or send rows to the ports, the
passed in row is instead automatically handled as per the method return value.
The library user must inherit this class and override OnInputRow to provide
custom functionality.
If the method throws an exception, the input row will be rejected to the ErrorOutput port.
The derived class can additionally override RunAsync()
to add logic that runs before and after all processing of rows, in which case the base class
base.RunAsync() must be called. The derived class (or its user) can also use
worker callbacks to add logic.
The input port uses the Default policy. Consider whether this is appropriate, or should be overridden, see BufferingMode for further details.
Use RowTransformBase<TDerived, TInputError, TOutput> instead if the Output port
has a different row type.
Also see the
RowTransformBase
example.
Inheritance
Implements
Inherited Members
Namespace: actionETL
Assembly: actionETL.dll
Syntax
public abstract class RowTransformBase<TDerived, TInputOutputError> : RowsTransformBase<TDerived, TInputOutputError, TInputOutputError, TInputOutputError>, IDisposeOnFinished where TDerived : RowTransformBase<TDerived, TInputOutputError> where TInputOutputError : class
Type Parameters
| Name | Description |
|---|---|
| TDerived | The type of the derived worker. Class definition example:
|
| TInputOutputError | The type of each |
Remarks
To create a transform without any ErrorOutput, consider inheriting from
RowsTransformBase<TDerived, TInput, TOutput>.
Constructors
RowTransformBase(in DownstreamFactory<TInputOutputError>, String, Boolean)
Initializes a new instance of the RowTransformBase<TDerived, TInputOutputError>
abstract dataflow worker, which repeatedly executes the OnInputRow method when there are
input rows and output demand available on the ports.
Declaration
protected RowTransformBase(in DownstreamFactory<TInputOutputError> downstreamFactory, string workerName, bool autoCompleteOutput)
Parameters
| Type | Name | Description |
|---|---|---|
| DownstreamFactory<TInputOutputError> | downstreamFactory | The downstream factory, which specifies the parent worker and (optionally) the upstream port to link the "first" input port of this dataflow worker to. Get it from Link when the upstream port is known ahead of time (which is usually the case). Otherwise get it from GetDownstreamFactory<TInput>(), and link the transform or target explicitly using LinkTo(InputPort<TOutput>) or LinkFrom(OutputPortBase<TInput>). |
| String | workerName | Name of the worker.
Set to a prefix plus a trailing
While less useful, set to
The name cannot otherwise contain |
| Boolean | autoCompleteOutput |
|
Exceptions
| Type | Condition |
|---|---|
| ArgumentException |
|
| ArgumentNullException |
|
| InvalidOperationException |
|
Methods
OnInputRow(TInputOutputError)
An abstract synchronous method that gets called when there is an incoming row available for processing. Override it to read and optionally modify each incoming row.
Declaration
protected abstract TransformRowTreatment OnInputRow(TInputOutputError inputRow)
Parameters
| Type | Name | Description |
|---|---|---|
| TInputOutputError | inputRow | The incoming row. Guaranteed to not be |
Returns
| Type | Description |
|---|---|
| TransformRowTreatment | If and how the input row should be passed to downstream workers. |
OnRowsAndDemandAsync()
For internal use.
Declaration
protected sealed override Task<ProgressStatus> OnRowsAndDemandAsync()
Returns
| Type | Description |
|---|---|
| Task<ProgressStatus> |