Finally, you have reached the heart of the book. From this chapter onward, the topics will have a different taste.
As we saw so far, Simorg is all about vibrations and shells (spaces) in which the vibrations flow. Now, vibration alone does not do enough unless it is able to flow and stream. This is where the dataflow operators shine.
Well, the fact is that all the operators we saw so far were dataflows.
These operators are one of the most useful tools provided by the engine to make the flow of bytes happen naturally. When we write our simorg code, we are creating spaces and pathways in which the stream of data starts flowing..
In all these use cases dataflow operators play a crucial role and make streaming quite easy to manage. These operators are the glues between the shells.
Since writing our first lines of simorg, we were using dataflows when logging data using <<<logger operator ?>>> or when declaring a variable using <<<declaration operator #>>>; more details about these operators soon. Simorg's building blocks are serving data and dataflows are shining among them.
So in all dataflow operators, vibration starts from the left side and continues to flow toward the right side of the expression. This is shaping a <<<Dataflow Pipeline>>>.
Dataflow pipelines are shaped when operators attach to one another in order to perform different processes on data.
We can also combine/join pipelines with each other in order to create complex dataflows.
A pipeline by default is not vibrating anything outside itself. So we may consider a pipeline quite similar to a real pipe that allows water to enter from one side, pass through it, and exit from the other side. Now depending on our logic we can inject vibrations in the middle of the pipe or take them out of the pipe.
Now let's see how each of them works in action while explaining more concepts as we use them.