Initial Commit
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
package net.locusworks.discord.eighttrack.scheduler;
|
||||
|
||||
import java.util.Queue;
|
||||
import java.util.concurrent.LinkedBlockingQueue;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import com.sedmelluq.discord.lavaplayer.player.AudioLoadResultHandler;
|
||||
import com.sedmelluq.discord.lavaplayer.player.AudioPlayer;
|
||||
import com.sedmelluq.discord.lavaplayer.player.event.AudioEventAdapter;
|
||||
import com.sedmelluq.discord.lavaplayer.player.event.AudioEventListener;
|
||||
import com.sedmelluq.discord.lavaplayer.tools.FriendlyException;
|
||||
import com.sedmelluq.discord.lavaplayer.track.AudioPlaylist;
|
||||
import com.sedmelluq.discord.lavaplayer.track.AudioTrack;
|
||||
import com.sedmelluq.discord.lavaplayer.track.AudioTrackEndReason;
|
||||
|
||||
public class TrackScheduler extends AudioEventAdapter implements AudioEventListener, AudioLoadResultHandler {
|
||||
|
||||
private Queue<AudioTrack> trackQueue;
|
||||
|
||||
private boolean started;
|
||||
|
||||
private Consumer<AudioTrackEndReason> finished;
|
||||
|
||||
public TrackScheduler() {
|
||||
trackQueue = new LinkedBlockingQueue<AudioTrack>();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTrackStart(AudioPlayer player, AudioTrack track) {
|
||||
this.started = true;
|
||||
super.onTrackStart(player, track);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTrackEnd(AudioPlayer player, AudioTrack track, AudioTrackEndReason endReason) {
|
||||
this.started = false;
|
||||
super.onTrackEnd(player, track, endReason);
|
||||
if (finished != null) finished.accept(endReason);
|
||||
}
|
||||
|
||||
public void setFinishedCallback(Consumer<AudioTrackEndReason> callback) {
|
||||
if (this.finished == null) this.finished = callback;
|
||||
}
|
||||
|
||||
public void trackLoaded(AudioTrack track) {
|
||||
trackQueue.add(track);
|
||||
}
|
||||
|
||||
public void playlistLoaded(AudioPlaylist playlist) {
|
||||
for (AudioTrack at : playlist.getTracks()) {
|
||||
trackQueue.add(at);
|
||||
}
|
||||
}
|
||||
|
||||
public void noMatches() {
|
||||
// TODO Auto-generated method stub
|
||||
}
|
||||
|
||||
public void loadFailed(FriendlyException exception) {
|
||||
// TODO Auto-generated method stub
|
||||
}
|
||||
|
||||
public AudioTrack peek() {
|
||||
return trackQueue.peek();
|
||||
}
|
||||
|
||||
public boolean hasTracks() {
|
||||
return !trackQueue.isEmpty();
|
||||
}
|
||||
|
||||
public AudioTrack getNextTrack() {
|
||||
return trackQueue.poll();
|
||||
}
|
||||
|
||||
public boolean playing() {
|
||||
return started;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user