import net.pterodactylus.sonitus.data.ConnectException;
import net.pterodactylus.sonitus.data.Filter;
-import net.pterodactylus.sonitus.data.Format;
import net.pterodactylus.sonitus.data.Metadata;
import net.pterodactylus.sonitus.data.ReusableSink;
import net.pterodactylus.sonitus.data.Source;
}
@Override
- public Format format() {
- synchronized (syncObject) {
- return connection.source.format();
- }
- }
-
- @Override
public Metadata metadata() {
synchronized (syncObject) {
return connection.source.metadata();
public void connect(Source source) throws ConnectException {
checkNotNull(source, "source must not be null");
if ((connection != null) && (connection.source != null)) {
- checkArgument(connection.source.format().equals(source.format()), "source’s format must equal this sink’s format");
+ checkArgument(connection.source.metadata().channels() == source.metadata().channels(), "source’s channel count must equal existing source’s channel count");
+ checkArgument(connection.source.metadata().frequency() == source.metadata().frequency(), "source’s frequency must equal existing source’s frequency");
+ checkArgument(connection.source.metadata().encoding().equalsIgnoreCase(source.metadata().encoding()), "source’s encoding must equal existing source’s encoding");
}
if (connection == null) {
*/
public Connection source(Source source) throws IOException {
synchronized (syncObject) {
- if (this.source != null) {
- eventBus.post(new SourceFinishedEvent(this.source));
- }
+ Source oldSource = this.source;
this.source = source;
+ if (oldSource != null) {
+ eventBus.post(new SourceFinishedEvent(oldSource));
+ }
pipedInputStream = new PipedInputStream();
pipedOutputStream = new PipedOutputStream(pipedInputStream);
syncObject.notifyAll();