io.camunda.zeebe.scheduler.future.FutureContinuationRunnable Maven / Gradle / Ivy
The newest version!
/*
* Copyright Camunda Services GmbH and/or licensed to Camunda Services GmbH under
* one or more contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright ownership.
* Licensed under the Camunda License 1.0. You may not use this file
* except in compliance with the Camunda License 1.0.
*/
package io.camunda.zeebe.scheduler.future;
import java.util.function.BiConsumer;
import org.agrona.LangUtil;
public final class FutureContinuationRunnable implements Runnable {
private final ActorFuture future;
private final BiConsumer consumer;
public FutureContinuationRunnable(
final ActorFuture future, final BiConsumer consumer) {
this.future = future;
this.consumer = consumer;
}
@Override
public void run() {
if (!future.isCompletedExceptionally()) {
try {
final T res = future.get();
consumer.accept(res, null);
} catch (final Exception e) {
LangUtil.rethrowUnchecked(e);
}
} else {
consumer.accept(null, future.getException());
}
}
}