Package net.minecraft.server.level
Class ChunkTaskPriorityQueueSorter
java.lang.Object
net.minecraft.server.level.ChunkTaskPriorityQueueSorter
- All Implemented Interfaces:
AutoCloseable
,ChunkHolder.LevelChangeListener
public class ChunkTaskPriorityQueueSorter
extends Object
implements ChunkHolder.LevelChangeListener, AutoCloseable
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final class
static final class
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final org.slf4j.Logger
private final ProcessorMailbox
<StrictQueue.IntRunnable> private final Map
<ProcessorHandle<?>, ChunkTaskPriorityQueue<? extends Function<ProcessorHandle<Unit>, ?>>> private final Set
<ProcessorHandle<?>> -
Constructor Summary
ConstructorsConstructorDescriptionChunkTaskPriorityQueueSorter
(List<ProcessorHandle<?>> pQueues, Executor pTask, int pMaxTasks) -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
getProcessor
(ProcessorHandle<T> pProcessor, boolean pFlush) private <T> ChunkTaskPriorityQueue
<Function<ProcessorHandle<Unit>, T>> getQueue
(ProcessorHandle<T> pProcessor) getReleaseProcessor
(ProcessorHandle<Runnable> pProcessor) boolean
hasWork()
message
(Runnable pTask, long pPos, IntSupplier pLevel) static <T> ChunkTaskPriorityQueueSorter.Message
<T> message
(Function<ProcessorHandle<Unit>, T> pTask, long pPos, IntSupplier pLevel) message
(GenerationChunkHolder pChunk, Runnable pTask) static <T> ChunkTaskPriorityQueueSorter.Message
<T> message
(GenerationChunkHolder pChunk, Function<ProcessorHandle<Unit>, T> pTask) void
onLevelChange
(ChunkPos pChunkPos, IntSupplier pQueueLevelGetter, int pTicketLevel, IntConsumer pQueueLevelSetter) private <T> void
pollTask
(ChunkTaskPriorityQueue<Function<ProcessorHandle<Unit>, T>> pQueue, ProcessorHandle<T> pProcessor) private <T> void
release
(ProcessorHandle<T> pProcessor, long pChunkPos, Runnable pTask, boolean pClearQueue) private <T> void
submit
(ProcessorHandle<T> pProcessor, Function<ProcessorHandle<Unit>, T> pTask, long pChunkPos, IntSupplier pLevel, boolean pFlush)
-
Field Details
-
LOGGER
private static final org.slf4j.Logger LOGGER -
queues
private final Map<ProcessorHandle<?>,ChunkTaskPriorityQueue<? extends Function<ProcessorHandle<Unit>, queues?>>> -
sleeping
-
mailbox
-
-
Constructor Details
-
ChunkTaskPriorityQueueSorter
public ChunkTaskPriorityQueueSorter(List<ProcessorHandle<?>> pQueues, Executor pTask, int pMaxTasks)
-
-
Method Details
-
hasWork
public boolean hasWork() -
message
public static <T> ChunkTaskPriorityQueueSorter.Message<T> message(Function<ProcessorHandle<Unit>, T> pTask, long pPos, IntSupplier pLevel) -
message
public static ChunkTaskPriorityQueueSorter.Message<Runnable> message(Runnable pTask, long pPos, IntSupplier pLevel) -
message
public static ChunkTaskPriorityQueueSorter.Message<Runnable> message(GenerationChunkHolder pChunk, Runnable pTask) -
message
public static <T> ChunkTaskPriorityQueueSorter.Message<T> message(GenerationChunkHolder pChunk, Function<ProcessorHandle<Unit>, T> pTask) -
release
public static ChunkTaskPriorityQueueSorter.Release release(Runnable pTask, long pPos, boolean pClearQueue) -
getProcessor
public <T> ProcessorHandle<ChunkTaskPriorityQueueSorter.Message<T>> getProcessor(ProcessorHandle<T> pProcessor, boolean pFlush) -
getReleaseProcessor
public ProcessorHandle<ChunkTaskPriorityQueueSorter.Release> getReleaseProcessor(ProcessorHandle<Runnable> pProcessor) -
onLevelChange
public void onLevelChange(ChunkPos pChunkPos, IntSupplier pQueueLevelGetter, int pTicketLevel, IntConsumer pQueueLevelSetter) - Specified by:
onLevelChange
in interfaceChunkHolder.LevelChangeListener
-
release
private <T> void release(ProcessorHandle<T> pProcessor, long pChunkPos, Runnable pTask, boolean pClearQueue) -
submit
private <T> void submit(ProcessorHandle<T> pProcessor, Function<ProcessorHandle<Unit>, T> pTask, long pChunkPos, IntSupplier pLevel, boolean pFlush) -
pollTask
private <T> void pollTask(ChunkTaskPriorityQueue<Function<ProcessorHandle<Unit>, T>> pQueue, ProcessorHandle<T> pProcessor) -
getQueue
private <T> ChunkTaskPriorityQueue<Function<ProcessorHandle<Unit>,T>> getQueue(ProcessorHandle<T> pProcessor) -
getDebugStatus
-
close
public void close()- Specified by:
close
in interfaceAutoCloseable
-