X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fdata%2Fsink%2FIcecast2Sink.java;h=1c5a3b13a6a878d0fc11308b10f17013253c1e5b;hb=eacf380129e247dd03f7d054d67e34cb43658959;hp=515aece27b6d4f6a6331f1a64c9cefcf32a5e74e;hpb=87436ac0b103a112722c1df835e11ec928e57d38;p=sonitus.git diff --git a/src/main/java/net/pterodactylus/sonitus/data/sink/Icecast2Sink.java b/src/main/java/net/pterodactylus/sonitus/data/sink/Icecast2Sink.java index 515aece..1c5a3b1 100644 --- a/src/main/java/net/pterodactylus/sonitus/data/sink/Icecast2Sink.java +++ b/src/main/java/net/pterodactylus/sonitus/data/sink/Icecast2Sink.java @@ -28,31 +28,27 @@ import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; -import net.pterodactylus.sonitus.data.AbstractControlledComponent; +import net.pterodactylus.sonitus.data.AbstractFilter; import net.pterodactylus.sonitus.data.Controller; +import net.pterodactylus.sonitus.data.DataPacket; +import net.pterodactylus.sonitus.data.Filter; import net.pterodactylus.sonitus.data.Metadata; -import net.pterodactylus.sonitus.data.Sink; -import net.pterodactylus.sonitus.data.event.MetadataUpdated; import net.pterodactylus.sonitus.io.InputStreamDrainer; -import com.google.common.eventbus.EventBus; import com.google.common.io.BaseEncoding; import com.google.common.io.Closeables; /** - * {@link net.pterodactylus.sonitus.data.Sink} implementation that delivers all - * incoming data to an Icecast2 server. + * {@link Filter} implementation that delivers all incoming data to an Icecast2 + * server. * * @author David ‘Bombe’ Roden */ -public class Icecast2Sink extends AbstractControlledComponent implements Sink { +public class Icecast2Sink extends AbstractFilter { /** The logger. */ private static final Logger logger = Logger.getLogger(Icecast2Sink.class.getName()); - /** The event bus. */ - private final EventBus eventBus; - /** The server name. */ private final String server; @@ -80,14 +76,9 @@ public class Icecast2Sink extends AbstractControlledComponent implements Sink { /** The output stream to the server. */ private OutputStream socketOutputStream; - /** The current metadata. */ - private Metadata metadata; - /** * Creates a new Icecast2 sink. * - * @param eventBus - * The event bus * @param server * The hostname of the server * @param port @@ -106,8 +97,8 @@ public class Icecast2Sink extends AbstractControlledComponent implements Sink { * {@code true} to publish the server in a public directory, {@code false} to * not publish it */ - public Icecast2Sink(EventBus eventBus, String server, int port, String password, String mountPoint, String serverName, String serverDescription, String genre, boolean publishServer) { - this.eventBus = eventBus; + public Icecast2Sink(String server, int port, String password, String mountPoint, String serverName, String serverDescription, String genre, boolean publishServer) { + super(String.format("icecast://%s:%d/%s", server, port, mountPoint)); this.server = server; this.port = port; this.password = password; @@ -119,28 +110,14 @@ public class Icecast2Sink extends AbstractControlledComponent implements Sink { } // - // CONTROLLED METHODS + // FILTER METHODS // @Override - public String name() { - return String.format("icecast://%s:%d/%s", server, port, mountPoint); - } - - @Override - public Metadata metadata() { - return metadata; - } - - @Override public List> controllers() { return Collections.emptyList(); } - // - // SINK METHODS - // - @Override public void open(Metadata metadata) throws IOException { logger.info(String.format("Connecting to %s:%d...", server, port)); @@ -175,7 +152,7 @@ public class Icecast2Sink extends AbstractControlledComponent implements Sink { @Override public void metadataUpdated(final Metadata metadata) { - this.metadata = metadata; + super.metadataUpdated(metadata); new Thread(new Runnable() { @Override @@ -210,13 +187,11 @@ public class Icecast2Sink extends AbstractControlledComponent implements Sink { } } }).start(); - fireMetadataUpdated(metadata); - eventBus.post(new MetadataUpdated(this, metadata)); } @Override - public void process(byte[] buffer) throws IOException { - socketOutputStream.write(buffer); + public void process(DataPacket dataPacket) throws IOException { + socketOutputStream.write(dataPacket.buffer()); socketOutputStream.flush(); }