ClipPlayback class
Пакет: com.hypixel.hytale.server.core.modules.voice
Файл: com/hypixel/hytale/server/core/modules/voice/ClipPlayback.java
Поля (1)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
VoiceSpeaker |
speaker |
Методы (4)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
boolean |
advanceboolean advance() |
public |
void |
cancelvoid cancel() |
|
void |
failvoid fail(@Nonnull Throwable var1) |
public |
boolean |
isDoneboolean isDone() |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.voice;
class="kw">import java.util.Iterator;
class="kw">import java.util.List;
class="kw">import java.util.concurrent.CancellationException;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import java.util.concurrent.CompletionStage;
class="kw">import javax.annotation.Nonnull;
class="kw">public class="kw">final class ClipPlayback {
class="kw">private class="kw">final VoiceSpeaker speaker;
class="kw">private class="kw">final Iterator<byte[]> frames;
class="kw">private class="kw">final CompletableFuture<Void> completion = new CompletableFuture<>();
ClipPlayback(@Nonnull VoiceSpeaker var1, @Nonnull List<byte[]> var2) {
this.speaker = var1;
this.frames = var2.iterator();
}
boolean advance() {
if (this.completion.isDone()) {
class="kw">return false;
}
if (this.speaker.isOpen() && this.frames.hasNext()) {
this.speaker.pushOpus(this.frames.next());
if (this.frames.hasNext()) {
class="kw">return true;
}
}
this.completion.complete(null);
class="kw">return false;
}
void fail(@Nonnull Throwable var1) {
this.completion.completeExceptionally(var1);
}
class="kw">public void cancel() {
this.completion.completeExceptionally(new CancellationException("voice clip cancelled"));
}
class="kw">public boolean isDone() {
class="kw">return this.completion.isDone();
}
@Nonnull
class="kw">public CompletionStage<Void> completion() {
class="kw">return this.completion.minimalCompletionStage();
}
}