collate
Configuration
Input Ports
There are no input ports for this process.
Output Ports
Pipefile Usage
The following sections describe the blocks needed to use this process in a pipe file.
Pipefile block
# ================================================================
process <this-proc>
:: collate
# ================================================================
Process connections
The following Input ports will need to be set
# There are no input port's for this process
The following Output ports will need to be set
# This process will produce the following output ports
Class Description
-
class collate_process : public sprokit::process
A process for collating input data from multiple input edges.
\process Collate incoming data into a single stream. A collation operation reads input from a set of input ports and serializes that data to a single output port. This collation process can handle multiple collation operations. Each set of collation ports is identified by a unique tag.
\iports
\iport{status/\portvar{tag}} The status of the result \portvar{tag}. \iport{coll/\portvar{tag}/\portvar{item}} A port to collate data for \portvar{tag} from. Data is collated from ports in ASCII-betical order.
\oports
\oport{res/\portvar{tag}} The collated result \portvar{tag}.
\reqs
\req Each input port \port{status/\portvar{tag}} must be connected. \req Each \portvar{tag} must have at least two inputs to collate. \req Each output port \port{res/\portvar{tag}} must be connected.
The status port is used to signal upstream status about the collate set. Only complete and flush packet types are handled. Regular data packets are ignored on that port.
This process automatically makes the input and output types for each tag the same based on the type of the port that is first connected.
process collate :: collate_process # -- Connect collate set "input1" # status port connect foo.p1_stat to collate.status/input1 # actual data ports connect foo_1.out to collate.coll/input1/A connect foo_2.out to collate.coll/input1/B connect collate.res/input1 to bar.input # -- Connect collate set "input2" # status port can feed multiple groups connect foo.p1_stat to collate.status/input2 # actual data ports connect foo_1.out to collate.coll/input2/A connect foo_2.out to collate.coll/input2/B connect foo_3.out to collate.coll/input2/C connect collate.res/input2 to bar.other
- Todo:
Add configuration to allow forcing a number of inputs for a result.
Add configuration to allow same number of sources for all results.
Note
Edges for a \portvar{tag} may only be connected after the \port{status/\portvar{tag}} is connected to. Before this connection happens, the other ports to not exist and will cause errors. In short: The first connection for any \portvar{tag} must be \port{status/\portvar{tag}}.
Note
It is not immediately apparent how the input ports become sorted in ASCII-betical order on “item” order.
-
class priv
-
class tag_info
-
class tag_info