File size: 1,349 Bytes
d46f4a3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package net.minecraft.util.thread;

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
import java.util.function.Consumer;

public interface TaskScheduler<R extends Runnable> extends AutoCloseable {
    String name();

    void schedule(R p_365586_);

    @Override
    default void close() {
    }

    R wrapRunnable(Runnable p_367607_);

    default <Source> CompletableFuture<Source> scheduleWithResult(Consumer<CompletableFuture<Source>> p_365778_) {
        CompletableFuture<Source> completablefuture = new CompletableFuture<>();
        this.schedule(this.wrapRunnable(() -> p_365778_.accept(completablefuture)));
        return completablefuture;
    }

    static TaskScheduler<Runnable> wrapExecutor(final String p_367076_, final Executor p_363384_) {
        return new TaskScheduler<Runnable>() {
            @Override
            public String name() {
                return p_367076_;
            }

            @Override
            public void schedule(Runnable p_361412_) {
                p_363384_.execute(p_361412_);
            }

            @Override
            public Runnable wrapRunnable(Runnable p_367104_) {
                return p_367104_;
            }

            @Override
            public String toString() {
                return p_367076_;
            }
        };
    }
}