X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fdata%2Fsource%2FStreamSource.java;h=8b0c518896440e0e058d559331acab2c51d51e7c;hb=eacf380129e247dd03f7d054d67e34cb43658959;hp=a55654fd3c99a2f78610428382c6be3ea44b1ca3;hpb=cbeadf6d9eea57ab98cacd60e2419dd3c18bef89;p=sonitus.git diff --git a/src/main/java/net/pterodactylus/sonitus/data/source/StreamSource.java b/src/main/java/net/pterodactylus/sonitus/data/source/StreamSource.java index a55654f..8b0c518 100644 --- a/src/main/java/net/pterodactylus/sonitus/data/source/StreamSource.java +++ b/src/main/java/net/pterodactylus/sonitus/data/source/StreamSource.java @@ -25,13 +25,15 @@ import java.net.URLConnection; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.logging.Logger; -import net.pterodactylus.sonitus.data.AbstractControlledComponent; +import net.pterodactylus.sonitus.data.AbstractFilter; import net.pterodactylus.sonitus.data.ContentMetadata; import net.pterodactylus.sonitus.data.Controller; +import net.pterodactylus.sonitus.data.DataPacket; +import net.pterodactylus.sonitus.data.Filter; import net.pterodactylus.sonitus.data.FormatMetadata; import net.pterodactylus.sonitus.data.Metadata; -import net.pterodactylus.sonitus.data.Source; import net.pterodactylus.sonitus.io.MetadataStream; import com.google.common.base.Optional; @@ -39,14 +41,17 @@ import com.google.common.collect.Maps; import com.google.common.primitives.Ints; /** - * {@link Source} implementation that can download an audio stream from a + * {@link Filter} implementation that can download an audio stream from a * streaming server. *

* Currently only “audio/mpeg” (aka MP3) streams are supported. * * @author David ‘Bombe’ Roden */ -public class StreamSource extends AbstractControlledComponent implements Source { +public class StreamSource extends AbstractFilter { + + /** The logger. */ + private static final Logger logger = Logger.getLogger(StreamSource.class.getName()); /** The URL of the stream. */ private final String streamUrl; @@ -62,8 +67,6 @@ public class StreamSource extends AbstractControlledComponent implements Source * the response header for vital information (sampling frequency, number of * channels, etc.). * - * @param eventBus - * The event bus * @param streamUrl * The URL of the stream * @throws IOException @@ -83,6 +86,7 @@ public class StreamSource extends AbstractControlledComponent implements Source httpUrlConnection.setRequestProperty("ICY-Metadata", "1"); /* connect. */ + logger.info(String.format("Connecting to %s...", streamUrl)); httpUrlConnection.connect(); /* check content type. */ @@ -122,7 +126,7 @@ public class StreamSource extends AbstractControlledComponent implements Source } // - // CONTROLLED METHODS + // FILTER METHODS // @Override @@ -135,10 +139,6 @@ public class StreamSource extends AbstractControlledComponent implements Source return Collections.emptyList(); } - // - // SOURCE METHODS - // - @Override public Metadata metadata() { Optional streamMetadata = metadataStream.getContentMetadata(); @@ -150,10 +150,15 @@ public class StreamSource extends AbstractControlledComponent implements Source } @Override - public byte[] get(int bufferSize) throws IOException { + public void open(Metadata metadata) throws IOException { + /* ignore metadata when opening. */ + } + + @Override + public DataPacket get(int bufferSize) throws IOException { byte[] buffer = new byte[bufferSize]; metadataStream.read(buffer); - return buffer; + return new DataPacket(metadata(), buffer); } //