ACE_Stream is handy when you have several ACE_Task objects that you would like to link together.
An intermediate class you we will deal with is the ACE_Module.
The basic plan is to wrap your Task into a Module, push the Module onto the Stream. Do this for each Task, and then inject Message_Blocks into the Stream.
Each Task then processes the Message_Block, and forwards it on to the next Task in the Stream.
If you are not already familiar with Message_Blocks and Message_Queues, I highly suggest that you check out Tutorials 10-13.
Streams can be used for both downstream and upstream movement of messages. Used this way mirrors closely the way System V STREAMS work. But you don't have to use them bidirectionally. In this tutorial, we only use one direction of the Stream. Down.
This tutorial is contributed by Bob McWhirter (bob@netwrench.com)