X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fdata%2Fsink%2FFileSink.java;h=b3b1ff0ae3f2325f39c6456ad27ff9dab8ab3806;hb=87436ac0b103a112722c1df835e11ec928e57d38;hp=9da8b48b2a90a4cca1c7faf57320d5bd78b3991a;hpb=f761d816f6e2f14bc80efb45e4cb5c130fa9a57f;p=sonitus.git diff --git a/src/main/java/net/pterodactylus/sonitus/data/sink/FileSink.java b/src/main/java/net/pterodactylus/sonitus/data/sink/FileSink.java index 9da8b48..b3b1ff0 100644 --- a/src/main/java/net/pterodactylus/sonitus/data/sink/FileSink.java +++ b/src/main/java/net/pterodactylus/sonitus/data/sink/FileSink.java @@ -23,9 +23,13 @@ import java.util.Collections; import java.util.List; import java.util.logging.Logger; +import net.pterodactylus.sonitus.data.AbstractControlledComponent; import net.pterodactylus.sonitus.data.Controller; import net.pterodactylus.sonitus.data.Metadata; import net.pterodactylus.sonitus.data.Sink; +import net.pterodactylus.sonitus.data.event.MetadataUpdated; + +import com.google.common.eventbus.EventBus; /** * {@link net.pterodactylus.sonitus.data.Sink} that writes all received data @@ -33,23 +37,33 @@ import net.pterodactylus.sonitus.data.Sink; * * @author David ‘Bombe’ Roden */ -public class FileSink implements Sink { +public class FileSink extends AbstractControlledComponent implements Sink { /** The logger. */ private static final Logger logger = Logger.getLogger(FileSink.class.getName()); + /** The event bus. */ + private final EventBus eventBus; + /** The path of the file to write to. */ private final String path; + /** The output stream writing to the file. */ private FileOutputStream fileOutputStream; + /** The current metadata. */ + private Metadata metadata; + /** * Creates a new file sink that will write to the given path. * + * @param eventBus + * The event bus * @param path * The path of the file to write to */ - public FileSink(String path) { + public FileSink(EventBus eventBus, String path) { + this.eventBus = eventBus; this.path = path; } @@ -58,6 +72,16 @@ public class FileSink implements Sink { // @Override + public String name() { + return path; + } + + @Override + public Metadata metadata() { + return metadata; + } + + @Override public List> controllers() { return Collections.emptyList(); } @@ -69,6 +93,7 @@ public class FileSink implements Sink { @Override public void open(Metadata metadata) throws IOException { fileOutputStream = new FileOutputStream(path); + metadataUpdated(metadata); } @Override @@ -82,7 +107,9 @@ public class FileSink implements Sink { @Override public void metadataUpdated(Metadata metadata) { - /* ignore. */ + this.metadata = metadata; + fireMetadataUpdated(metadata); + eventBus.post(new MetadataUpdated(this, metadata)); } @Override