Expose metadata from every controlled component.
[sonitus.git] / src / main / java / net / pterodactylus / sonitus / data / sink / Icecast2Sink.java
index 638e15b..5487cc4 100644 (file)
@@ -24,9 +24,12 @@ 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.Controller;
 import net.pterodactylus.sonitus.data.Metadata;
 import net.pterodactylus.sonitus.data.Sink;
 import net.pterodactylus.sonitus.io.InputStreamDrainer;
@@ -75,6 +78,9 @@ public class Icecast2Sink implements Sink {
 
        private OutputStream socketOutputStream;
 
+       /** The current metadata. */
+       private Metadata metadata;
+
        /**
         * Creates a new Icecast2 sink.
         *
@@ -108,6 +114,25 @@ public class Icecast2Sink implements Sink {
        }
 
        //
+       // CONTROLLED METHODS
+       //
+
+       @Override
+       public String name() {
+               return String.format("icecast://%s:%d/%s", server, port, mountPoint);
+       }
+
+       @Override
+       public Metadata metadata() {
+               return metadata;
+       }
+
+       @Override
+       public List<Controller<?>> controllers() {
+               return Collections.emptyList();
+       }
+
+       //
        // SINK METHODS
        //
 
@@ -145,6 +170,7 @@ public class Icecast2Sink implements Sink {
 
        @Override
        public void metadataUpdated(final Metadata metadata) {
+               this.metadata = metadata;
                new Thread(new Runnable() {
 
                        @Override