private async static void TransformItems(PipelineSource<int> source, PipelineSink<string> sink) { Tuple<bool, int> current = await source.Receive(); while (current.Item1) { await sink.Yield("Got " + current.Item2); current = await source.Receive(); } }
private async static void DumpItems(PipelineSource<string> source) { Tuple<bool, string> current = await source.Receive(); while (current.Item1) { Console.WriteLine("Received message = '{0}'", current.Item2); current = await source.Receive(); } }
private async static void FilterItems(PipelineSource<int> source, PipelineSink<int> sink) { Tuple<bool, int> current = await source.Receive(); while (current.Item1) { int value = current.Item2; // Yield even numbers once, and multiples of 3 once (so 0 and 6 will be yielded twice each) if (value % 2 == 0) { await sink.Yield(value); } if (value % 3 == 0) { await sink.Yield(value); } current = await source.Receive(); } }