X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fdata%2FSink.java;h=937a4e5f9e9d2c9fb3e9ac4348f2d064ad5b095f;hb=f3d55e97b4d097b415a3577191e2d9030ba28258;hp=7f6ce6bf80c9ae27437363d15cd2fcec052b86c6;hpb=7c0955003c1eb215da5f763e986e99e68206a086;p=sonitus.git
diff --git a/src/main/java/net/pterodactylus/sonitus/data/Sink.java b/src/main/java/net/pterodactylus/sonitus/data/Sink.java
index 7f6ce6b..937a4e5 100644
--- a/src/main/java/net/pterodactylus/sonitus/data/Sink.java
+++ b/src/main/java/net/pterodactylus/sonitus/data/Sink.java
@@ -1,42 +1,36 @@
-/*
- * Sonitus - Sink.java - Copyright © 2013 David Roden
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-
package net.pterodactylus.sonitus.data;
+import java.io.IOException;
+
/**
- * A sink is an endpoint for an audio stream. It might be a file on disk, it can
- * be an audio output in the current system, or it can be sent to a remote
- * streaming server for broadcasting.
+ * A sink is a destination for audio data. It can be played on speakers, it can
+ * be written to a file, or it can be sent to a remote streaming server.
*
* @author David âBombeâ Roden
*/
-public interface Sink {
+public interface Sink extends ControlledComponent {
/**
- * Connects this sink to the given source.
+ * Opens this sink using the format parameters of the given metadata.
*
- * @param source
- * The source to connect to
- * @throws ConnectException
- * if the source can not be connected, e.g. due to a {@link Format} mismatch
+ * @param metadata
+ * The metadata of the stream
+ * @throws IOException
+ * if an I/O error occurs
*/
- void connect(Source source) throws ConnectException;
+ void open(Metadata metadata) throws IOException;
+
+ /** Closes this sink. */
+ void close();
- /** Notifies the sink that a source has updated its metadata. */
- void metadataUpdated();
+ /**
+ * Processes the given buffer of data.
+ *
+ * @param buffer
+ * The data to process
+ * @throws IOException
+ * if an I/O error occurs
+ */
+ void process(byte[] buffer) throws IOException;
}