The Pipe Runtime
The Pipe Runtime implements all the internals of inputs, actions and outputs available in the Pipe Language. As such, it's the engine responsible for doing the work defined in Pipes, and executing that work robustly and reliably. Each new platform release usually brings improvements and new capabilities to the Pipe Runtime, and in a manner that maintains maximum backwards compatibility with existing Pipe definitions.
The Pipe Runtime is part of the platform internals, and is transparent to platform users. However, for the purpose of authoring Pipes, it's worth understanding the basic operation of the Pipe Runtime.
The following diagram shows the logical steps of the Pipe Runtime.
For Pipe authors, some key facts about the Runtime's operation is worth being aware of:
- When a Pipe initializes, inputs and outputs are set up first. Each input and output has it's own internal initialization logic, depending on what it does.
- As a Pipe's input receives or produces data, it will push that data into the Pipe as events.
- When a Pipe has no actions, an event proceeds directly to the Pipe's output.
- When a Pipe has one or more actions, an event is flows through each action, in the defined order.
- Some actions (like
filter
) can discard an event, in which case the event won't reach the next action (or output). - Once an event is handled by the final action in the action chain, it proceeds to the Pipe's output.
When a Pipe shuts down under normal circumstances, in-flight events will drain before the Pipe stops.