add statefulMapConcat to overview and fix links

This commit is contained in:
Roland Kuhn 2016-02-15 13:03:47 +01:00
parent a83f08d4ab
commit d1b35e441e
13 changed files with 529 additions and 462 deletions

View file

@ -42,11 +42,10 @@ public class RecipeSeq extends RecipeTest {
public void drainSourceToList() throws Exception {
new JavaTestKit(system) {
{
final Source<String, NotUsed> mySource = Source.from(Arrays.asList("1", "2", "3"));
//#draining-to-list-unsafe
final Source<String, NotUsed> myData = Source.from(Arrays.asList("1", "2", "3"));
final int MAX_ALLOWED_SIZE = 100;
final CompletionStage<List<String>> strings = myData.runWith(Sink.seq(), mat); // dangerous!
// Dangerous: might produce a collection with 2 billion elements!
final CompletionStage<List<String>> strings = mySource.runWith(Sink.seq(), mat);
//#draining-to-list-unsafe
strings.toCompletableFuture().get(3, TimeUnit.SECONDS);
@ -58,14 +57,14 @@ public class RecipeSeq extends RecipeTest {
public void drainSourceToListWithLimit() throws Exception {
new JavaTestKit(system) {
{
final Source<String, NotUsed> mySource = Source.from(Arrays.asList("1", "2", "3"));
//#draining-to-list-safe
final Source<String, NotUsed> myData = Source.from(Arrays.asList("1", "2", "3"));
final int MAX_ALLOWED_SIZE = 100;
// OK. Future will fail with a `StreamLimitReachedException`
// if the number of incoming elements is larger than max
final CompletionStage<List<String>> strings =
myData.limit(MAX_ALLOWED_SIZE).runWith(Sink.seq(), mat);
mySource.limit(MAX_ALLOWED_SIZE).runWith(Sink.seq(), mat);
//#draining-to-list-safe
strings.toCompletableFuture().get(1, TimeUnit.SECONDS);
@ -76,13 +75,14 @@ public class RecipeSeq extends RecipeTest {
public void drainSourceToListWithTake() throws Exception {
new JavaTestKit(system) {
{
final Source<String, NotUsed> myData = Source.from(Arrays.asList("1", "2", "3"));
final Source<String, NotUsed> mySource = Source.from(Arrays.asList("1", "2", "3"));
final int MAX_ALLOWED_SIZE = 100;
//#draining-to-list-safe
// OK. Collect up until max-th elements only, then cancel upstream
final CompletionStage<List<String>> strings =
myData.take(MAX_ALLOWED_SIZE).runWith(Sink.seq(), mat);
mySource.take(MAX_ALLOWED_SIZE).runWith(Sink.seq(), mat);
//#draining-to-list-safe
strings.toCompletableFuture().get(1, TimeUnit.SECONDS);