X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fdata%2Fsink%2FIcecast2Sink.java;h=8e1c1543dd468d61a699f3c9c78ba0ee52875c8b;hb=cbeadf6d9eea57ab98cacd60e2419dd3c18bef89;hp=ce55669776877996340e6b79233ba469d8dc5290;hpb=e89b413f56de06f24b223bb2cc4ed3973424d5ee;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 ce55669..8e1c154 100644 --- a/src/main/java/net/pterodactylus/sonitus/data/sink/Icecast2Sink.java +++ b/src/main/java/net/pterodactylus/sonitus/data/sink/Icecast2Sink.java @@ -23,23 +23,17 @@ import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.Socket; import java.net.URLEncoder; -import java.util.Arrays; import java.util.Collections; 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.Controller; 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.base.Function; -import com.google.common.base.Joiner; -import com.google.common.base.Optional; -import com.google.common.collect.FluentIterable; -import com.google.common.eventbus.EventBus; import com.google.common.io.BaseEncoding; import com.google.common.io.Closeables; @@ -49,14 +43,11 @@ import com.google.common.io.Closeables; * * @author David ‘Bombe’ Roden */ -public class Icecast2Sink implements Sink { +public class Icecast2Sink extends AbstractControlledComponent implements Sink { /** 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; @@ -84,9 +75,6 @@ public class Icecast2Sink implements Sink { /** The output stream to the server. */ private OutputStream socketOutputStream; - /** The current metadata. */ - private Metadata metadata; - /** * Creates a new Icecast2 sink. * @@ -110,8 +98,8 @@ public class Icecast2Sink 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; @@ -127,16 +115,6 @@ public class Icecast2Sink implements Sink { // @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(); } @@ -179,18 +157,12 @@ public class Icecast2Sink implements Sink { @Override public void metadataUpdated(final Metadata metadata) { - this.metadata = metadata; + super.metadataUpdated(metadata); new Thread(new Runnable() { @Override public void run() { - String metadataString = String.format("%s (%s)", Joiner.on(" - ").skipNulls().join(FluentIterable.from(Arrays.asList(metadata.artist(), metadata.name())).transform(new Function, Object>() { - - @Override - public Object apply(Optional input) { - return input.orNull(); - } - })), "Sonitus"); + String metadataString = String.format("%s (%s)", metadata.title(), "Sonitus"); logger.info(String.format("Updating metadata to %s", metadataString)); Socket socket = null; @@ -220,7 +192,6 @@ public class Icecast2Sink implements Sink { } } }).start(); - eventBus.post(new MetadataUpdated(this, metadata)); } @Override