package io.pivotal.literx;
//generic imports to help with simpler IDEs (ie tech.io)
import java.util.*;
import java.util.function.*;
import java.time.*;
import reactor.core.publisher.Flux;
/**
* Learn how to create Flux instances.
*
* @author Sebastien Deleuze
* @see <a href="https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html">Flux Javadoc</a>
*/
public class Part01Flux {
//========================================================================================
// TODO Return an empty Flux
Flux<String> emptyFlux() {
return Flux.empty();
}
//========================================================================================
// TODO Return a Flux that contains 2 values "foo" and "bar" without using an array or a collection
Flux<String> fooBarFluxFromValues() {
return Flux.just("foo", "bar");
}
//========================================================================================
// TODO Create a Flux from a List that contains 2 values "foo" and "bar"
Flux<String> fooBarFluxFromList() {
// List<String> list = new ArrayList<String>();
// list.add("foo");
// list.add("bar");
// return Flux.fromIterable(Arrays.asList(new String[] {"foo", "bar"}));
// return Flux.fromIterable(list);
return Flux.fromIterable(Arrays.asList(new String[] {"foo", "bar"}));
}
//========================================================================================
// TODO Create a Flux that emits an IllegalStateException
Flux<String> errorFlux() {
return Flux.error(new IllegalStateException());
}
//========================================================================================
// TODO Create a Flux that emits increasing values from 0 to 9 each 100ms
Flux<Long> counter() {
return Flux.interval(Duration.ofMillis(100)).take(10);
}
}