Update javadocs.
[sonitus.git] / src / main / java / net / pterodactylus / sonitus / data / source / StreamSource.java
index a55654f..8b0c518 100644 (file)
@@ -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.
  * <p/>
  * Currently only “audio/mpeg” (aka MP3) streams are supported.
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
-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<ContentMetadata> 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);
        }
 
        //