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();
   }
}