Commit graph

6 commits

Author SHA1 Message Date
Roland Kuhn
61b77ea50c =str #15755 #15756 rework Source/Sink materialization
The philosophy is that the FlowMaterializer has complete control over
how it interprets the AST, no restrictions. Therefore it only involves
one specified method: materialize() which returns a MaterializedFlow.
Within the ActorBasedFlowMaterializer we materialize Sources and Sinks
that implement the specified SimpleSource/SourceWithKey interfaces (same
for Sinks), others are not supported. These traits are extensible and
they require that an ActorBasedFlowMaterializer is passed into the
factory methods. Other materializers can of course interpret these AST
nodes differently, or they can use the actor-based facilities by
creating a suitable materializer for them to use.

This means that everything is fully extensible, but the infrastructure
we provide concretely for ourselves is built exactly for that and
nothing more. Overgeneralization would just lead nowhere.

Also made FutureSink isActive and implement it using a light-weight
Subscriber instead of a Flow/Transformer.
2014-09-04 14:05:51 +02:00
Patrik Nordwall
4bee84f149 =str #15755 implement Sources
* Implement IteratorSource
* and add tests for IterableSource and IteratorSource
* Implement ThunkSource
* Implement FutureSource
* Implement TickSource
2014-09-03 16:00:16 +02:00
Patrik Nordwall
c21a72a5a8 =str #15755 mandate materializer for IterableSource
* Source attach to top flow subscriber
2014-09-03 15:59:37 +02:00
Roland Kuhn
5ba32ccc50 =str #15755 #15756 correct variance annotations
- make HasNoX into pure marker traits
- make materialization type-safe
- remove casting when using EmptyPublisher
2014-09-03 15:59:22 +02:00
Patrik Nordwall
0046bebdfe =str #15755 #15756 First stab at input/output factories
* New naming based on Source and Sink
2014-09-02 12:58:56 +02:00
Patrik Nordwall
b0051c492e =str #15744 Hook-up transform to the AST nodes
* Removed unused parts of the new dsl, such as FlowGraph
* Materialization of transform, still with old way of terminal operators,
  input/output factories will come next
* New ActorBasedFlowMaterializer in impl2
2014-09-01 12:10:56 +02:00