Class OutputPortBase<TOutput>
Generic base class for dataflow ports, containing the functionality that depends on the type of the row class.
The library user only uses this class via OutputPort<TOutput> and ErrorOutputPort<TError>.
Note: As per normal, unless otherwise noted, the instance members are not thread-safe, and should only be used from the worker that the port belongs to.
Inherited Members
Namespace: actionETL
Assembly: actionETL.dll
Syntax
public abstract class OutputPortBase<TOutput> : OutputPortBase where TOutput : class
Type Parameters
Name | Description |
---|---|
TOutput | The type of the rows. |
Properties
ClearRowErrors
If the property is true
and the CaptureRowErrors field is present in the
TOutput
output type, any row errors in the
RowErrors list will be cleared from all rows passing though the
output port.
This is typically used to clear row errors after having handled them (e.g. by correcting the data, or checking the error is benign). Although optional, clearing the errors avoids combining earlier 'handled' errors with later 'unhandled' errors.
Also see Clear().
Note: This property is thread-safe.
Declaration
public bool ClearRowErrors { get; set; }
Property Value
Type | Description |
---|---|
Boolean |
Exceptions
Type | Condition |
---|---|
InvalidOperationException | Cannot set ClearRowErrors after the port is in state Ready or later. |
Link
Gets the dataflow downstream factory for creating one transform or target worker linked to this output or error output port.
Note that in the returned factory, the UpstreamPort will always be set to this port.
Also see GetDownstreamFactory<TInput>(), which is only rarely needed, e.g. when a transform or target is created before their upstream worker has been created. See Worker Instantiation and Transform and Target Factory Methods for further details.
Note: This property is thread-safe.
Declaration
public DownstreamFactory<TOutput> Link { get; }
Property Value
Type | Description |
---|---|
DownstreamFactory<TOutput> | The dataflow downstream factory for creating one transform or target worker linked to this output or error output port. |
LinkedTo
Gets the downstream input port this output (or error output) port is linked to,
or null
if it is not linked.
Note: This property is thread-safe.
Declaration
public InputPort<TOutput> LinkedTo { get; }
Property Value
Type | Description |
---|---|
InputPort<TOutput> |
Methods
LinkTo(InputPort<TOutput>)
Link this output (or error output) port to a specified downstream input port, which must have the same row type.
Note that all input and regular output ports must be linked to a single port when its parent worker starts. For error output ports, linking is optional.
After linking, ports cannot be relinked. It is however possible to remove all child workers from a parent worker, and recreate them with different links.
When linking from an ErrorOutputPort<TError>, the MaxRowsBeforeError and MaxRowsSent properties can limit the number of allowed error rows.
Note: This method is thread-safe.
Declaration
public void LinkTo(InputPort<TOutput> inputPort)
Parameters
Type | Name | Description |
---|---|---|
InputPort<TOutput> | inputPort | The downstream input port to link to. |
Exceptions
Type | Condition |
---|---|
ArgumentNullException | inputPort |
InvalidOperationException |
|
SetDebugCommands(DebugPortCommands)
Sets the debug command. This has the same effect as setting the DebugCommands, see that property for details.
Note: This method is thread-safe.
Declaration
public OutputPortBase<TOutput> SetDebugCommands(DebugPortCommands debugPortCommands)
Parameters
Type | Name | Description |
---|---|---|
DebugPortCommands | debugPortCommands | The debug port commands. |
Returns
Type | Description |
---|---|
OutputPortBase<TOutput> | The output port itself, to allow a fluent coding style. |
SetDebugCommands(DebugPortCommands, Int64)
Sets the debug commands.
Note that unlike DebugCommands, DebugBreakAfterRows, and SetDebugCommands(DebugPortCommands), this method sets and overwrites the commands exactly as specified, and does not take any special action regarding OnRows.
Note: This method is thread-safe.
Declaration
public OutputPortBase<TOutput> SetDebugCommands(DebugPortCommands debugPortCommands, long debugBreakAfterRows)
Parameters
Type | Name | Description |
---|---|---|
DebugPortCommands | debugPortCommands | The debug port commands for when to launch and/or break a debugger when debugging dataflow ports.
Multiple commands can be set at the same time by combining them with bitwise OR
( The various "On..." commands defines when to break or launch the debugger, while Launch and Break defines what to do, i.e. launching and/or breaking the debugger. In most debugging scenarios, both one or more "On..." commands, as well as Launch and/or Break, should be set. There are also several predefined combinations, e.g. BreakOnRowsAndStateCompleted that is very useful for viewing rows sent from an output or error output port. Note: Any Launch command will be automatically downgraded to a Break command after the first attempt to launch a debugger. Note: To view the dataflow rows while debugging, DebugCommands must be set to something other than None when the port worker initially runs. |
Int64 | debugBreakAfterRows | The number of rows sent after which to execute any debug command, e.g. break any
attached debugger.
A value of zero will break every time rows are sent, while e.g. a value of
|
Returns
Type | Description |
---|---|
OutputPortBase<TOutput> | The output port itself, to allow a fluent coding style. |