import net.pterodactylus.sonitus.data.ReusableSink;
import net.pterodactylus.sonitus.data.Source;
+import com.google.common.eventbus.EventBus;
+import com.google.inject.Inject;
+
/**
* {@link ReusableSink} implementation that supports changing the source without
* letting the {@link net.pterodactylus.sonitus.data.Sink} know.
/** Object used for synchronization. */
private final Object syncObject = new Object();
+ /** The event bus. */
+ private final EventBus eventBus;
+
/** The connection. */
private Connection connection;
/** The format. */
private Format format;
+ @Inject
+ public MultiSourceFilter(EventBus eventBus) {
+ this.eventBus = eventBus;
+ }
+
@Override
public Format format() {
return format;
while (true) {
/* wait for source to be set. */
OutputStream outputStream;
+ Source source;
logger.finest("Entering synchronized block...");
synchronized (syncObject) {
logger.finest("Entered synchronized block.");
+ source = this.source;
while (source == null) {
try {
logger.finest("Waiting for source to connect...");
} catch (InterruptedException ie1) {
/* ignore, keep waiting. */
}
+ source = this.source;
}
outputStream = pipedOutputStream;
}