X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fdata%2Ffilter%2FRateLimitingFilter.java;h=609eb692b432a0a21d1879befa7370a2694a8e06;hb=3a12209e82233cd79677a0d847321f41b41aa9a5;hp=d513df6b1bad78241414a074bd2a69713b78de48;hpb=7188da95cfb6dc2bf140eb8ac7e4dc99a0761a97;p=sonitus.git diff --git a/src/main/java/net/pterodactylus/sonitus/data/filter/RateLimitingFilter.java b/src/main/java/net/pterodactylus/sonitus/data/filter/RateLimitingFilter.java index d513df6..609eb69 100644 --- a/src/main/java/net/pterodactylus/sonitus/data/filter/RateLimitingFilter.java +++ b/src/main/java/net/pterodactylus/sonitus/data/filter/RateLimitingFilter.java @@ -20,6 +20,9 @@ package net.pterodactylus.sonitus.data.filter; import java.io.IOException; import java.util.logging.Logger; +import net.pterodactylus.sonitus.data.AbstractFilter; +import net.pterodactylus.sonitus.data.DataPacket; +import net.pterodactylus.sonitus.data.Filter; import net.pterodactylus.sonitus.data.Metadata; /** @@ -29,7 +32,7 @@ import net.pterodactylus.sonitus.data.Metadata; * * @author David ‘Bombe’ Roden */ -public class RateLimitingFilter extends DummyFilter { +public class RateLimitingFilter extends AbstractFilter implements Filter { /** The logger. */ private static final Logger logger = Logger.getLogger(RateLimitingFilter.class.getName()); @@ -46,23 +49,26 @@ public class RateLimitingFilter extends DummyFilter { /** * Creates a new rate limiting filter. * + * @param name + * The name of the filter * @param rate - * The limiting rate (in bytes/second) */ - public RateLimitingFilter(int rate) { - this(rate, 0); + public RateLimitingFilter(String name, int rate) { + this(name, rate, 0); } /** * Creates a new rate limiting filter. * + * @param name + * The name of the filter * @param rate * The limiting rate (in bytes/second) * @param fastStartTime * The amount of time at the start of the filtering during which no delay - * will occur (in milliseconds) */ - public RateLimitingFilter(int rate, long fastStartTime) { + public RateLimitingFilter(String name, int rate, long fastStartTime) { + super(name); this.rate = rate; this.counter = (long) (-rate * (fastStartTime / 1000.0)); } @@ -78,10 +84,10 @@ public class RateLimitingFilter extends DummyFilter { } @Override - public void process(byte[] buffer) throws IOException { - super.process(buffer); + public void process(DataPacket dataPacket) throws IOException { + super.process(dataPacket); /* delay. */ - counter += buffer.length; + counter += dataPacket.buffer().length; long waitTime = (long) (counter / (rate / 1000.0)); while ((System.currentTimeMillis() - startTime) < waitTime) { try {