All Downloads are FREE. Search and download functionalities are using the official Maven repository.

vertx.effect.exp.Quintuple Maven / Gradle / Ivy

There is a newer version: 5.0.0
Show newest version
package vertx.effect.exp;

import io.vavr.Tuple5;
import vertx.effect.Val;
import vertx.effect.core.AbstractVal;

import static java.util.Objects.requireNonNull;

public abstract class Quintuple extends AbstractVal> {

    public static  Quintuple parallel(final Val _1,
                                                                    final Val _2,
                                                                    final Val _3,
                                                                    final Val _4,
                                                                    final Val _5) {
        return new ParallelQuintuple<>(requireNonNull(_1),
                                       requireNonNull(_2),
                                       requireNonNull(_3),
                                       requireNonNull(_4),
                                       requireNonNull(_5)
        );
    }

    public static  Quintuple sequential(final Val _1,
                                                                      final Val _2,
                                                                      final Val _3,
                                                                      final Val _4,
                                                                      final Val _5) {
        return new SequentialQuintuple<>(requireNonNull(_1),
                                         requireNonNull(_2),
                                         requireNonNull(_3),
                                         requireNonNull(_4),
                                         requireNonNull(_5)
        );
    }

    public abstract Val _1();

    public abstract Val _2();

    public abstract Val _3();

    public abstract Val _4();

    public abstract Val _5();


    public static  Val race(final Quintuple quintuple) {
        if (quintuple == null)
            return Cons.failure(new IllegalArgumentException("Quintuple.race: pair is null"));
        return ListExp.parallel(quintuple._1(),
                                quintuple._2(),
                                quintuple._3(),
                                quintuple._4(),
                                quintuple._5()
                               )
                      .race();
    }


}