Cut out a couple of middlemen

This commit is contained in:
Tony Garnock-Jones 2020-12-09 21:04:20 +01:00
parent 935b7ea5c3
commit 864f371034
2 changed files with 39 additions and 32 deletions

View File

@ -201,15 +201,6 @@ public class Actor implements Executor {
}
public void execute(Runnable work, Runnable ifNotAlive) {
this.later(0, work, ifNotAlive);
}
public void later(long delayMilliseconds, Runnable work) {
this.later(delayMilliseconds, work, null);
}
public void later(long delayMilliseconds, Runnable work, Runnable ifNotAlive) {
if (delayMilliseconds == 0) {
{
WorkItem i = new WorkItem(work, ifNotAlive);
tail.getAndSet(i).set(i);
@ -236,6 +227,15 @@ public class Actor implements Executor {
}
});
}
}
public void later(long delayMilliseconds, Runnable work) {
this.later(delayMilliseconds, work, null);
}
public void later(long delayMilliseconds, Runnable work, Runnable ifNotAlive) {
if (delayMilliseconds == 0) {
this.execute(work, ifNotAlive);
} else {
_scheduledExecutor.schedule(() -> this._performSync(work, ifNotAlive), delayMilliseconds, TimeUnit.MILLISECONDS);
}

View File

@ -18,18 +18,21 @@ public class Remote<T> {
}
public void async(Consumer<T> f) {
this.async(0, f);
this._actor.execute(() -> f.accept(this._target));
}
public void async(long delayMilliseconds, Consumer<T> f) {
this._actor.later(delayMilliseconds, () -> f.accept(this._target));
}
public Promise<Object> syncVoid(Consumer<T> f) {
return this.syncVoid(0, f);
public Promise<?> syncVoid(Consumer<T> f) {
return this.sync((t) -> {
f.accept(t);
return null;
});
}
public Promise<Object> syncVoid(long delayMilliseconds, Consumer<T> f) {
public Promise<?> syncVoid(long delayMilliseconds, Consumer<T> f) {
return this.sync(delayMilliseconds, (t) -> {
f.accept(t);
return null;
@ -37,7 +40,11 @@ public class Remote<T> {
}
public<R> Promise<R> sync(Function<T, R> f) {
return this.sync(0, f);
Promise<R> p = new Promise<>();
this._actor.execute(
() -> p.resolveWith(f.apply(this._target)),
() -> p.rejectWith(this._actor.getExitReason()));
return p;
}
public<R> Promise<R> sync(long delayMilliseconds, Function<T, R> f) {