package au.gov.amsa.ais.router;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import au.gov.amsa.ais.router.model.Port;
import rx.Observable;
import rx.Subscriber;
import rx.schedulers.Schedulers;
public class Router {
private static final Logger log = LoggerFactory.getLogger(Router.class);
public static Subscriber<Port> start(Port... ports) {
Subscriber<Port> subscriber = createSubscriber();
Observable //
.from(ports) //
.flatMap(port -> Observable //
.just(port) //
.doOnNext(p -> p.start()) //
.subscribeOn(Schedulers.io()))
.subscribe(subscriber);
return subscriber;
}
private static Subscriber<Port> createSubscriber() {
return new Subscriber<Port>() {
@Override
public void onCompleted() {
log.info("all ports stopped");
}
@Override
public void onError(Throwable e) {
log.error(e.getMessage(), e);
}
@Override
public void onNext(Port t) {
}
};
}
}