X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fdata%2FAbstractFilter.java;h=539022c52370ab708fd15e541491a11618b1f03f;hb=65c650c5a4c69ec39317904f35361d9d6a070395;hp=6fa6511cf8addc1b3d609528cc7b7b7d9c347806;hpb=1b5da82617f1ba7e569c63daf4fb981d0fd7f406;p=sonitus.git diff --git a/src/main/java/net/pterodactylus/sonitus/data/AbstractFilter.java b/src/main/java/net/pterodactylus/sonitus/data/AbstractFilter.java index 6fa6511..539022c 100644 --- a/src/main/java/net/pterodactylus/sonitus/data/AbstractFilter.java +++ b/src/main/java/net/pterodactylus/sonitus/data/AbstractFilter.java @@ -27,6 +27,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.concurrent.atomic.AtomicReference; +import java.util.logging.Logger; import com.google.common.collect.Lists; import com.google.common.io.Closeables; @@ -39,6 +40,9 @@ import com.google.common.io.Closeables; */ public abstract class AbstractFilter implements Filter { + /** The logger. */ + private static final Logger logger = Logger.getLogger(AbstractFilter.class.getName()); + /** The name of this filter. */ private final String name; @@ -124,19 +128,23 @@ public abstract class AbstractFilter implements Filter { } @Override - public void process(byte[] buffer) throws IOException { - outputStream.write(buffer); + public void process(DataPacket dataPacket) throws IOException { + if (dataPacket.metadata().isPresent() && !dataPacket.metadata().get().equalsIgnoreComment(this.metadata.get())) { + metadataUpdated(dataPacket.metadata().get()); + } + logger.finest(String.format("Writing %d bytes to %s...", dataPacket.buffer().length, name())); + outputStream.write(dataPacket.buffer()); outputStream.flush(); } @Override - public byte[] get(int bufferSize) throws IOException { + public DataPacket get(int bufferSize) throws IOException { byte[] buffer = new byte[bufferSize]; int read = inputStream.read(buffer); if (read == -1) { throw new EOFException(); } - return Arrays.copyOf(buffer, read); + return new DataPacket(metadata(), Arrays.copyOf(buffer, read)); } //