X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsonitus%2Fdata%2Ffilter%2FRateLimitingFilter.java;h=ff1a2f2b9f72dee8233f32aebd9801a40e5a1600;hb=eacf380129e247dd03f7d054d67e34cb43658959;hp=d67604baa2ed8063b28f9d038b354a819ca7280f;hpb=c548332c486d812bfce23a9121219bf86ecc5588;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 d67604b..ff1a2f2 100644 --- a/src/main/java/net/pterodactylus/sonitus/data/filter/RateLimitingFilter.java +++ b/src/main/java/net/pterodactylus/sonitus/data/filter/RateLimitingFilter.java @@ -20,18 +20,18 @@ 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; -import com.google.common.eventbus.EventBus; - /** * Rate limiting filter that only passes a specified amount of data per second - * from its {@link net.pterodactylus.sonitus.data.Source} to its {@link - * net.pterodactylus.sonitus.data.Sink}. + * from its source to its sinks. * * @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()); @@ -48,32 +48,26 @@ public class RateLimitingFilter extends DummyFilter { /** * Creates a new rate limiting filter. * - * @param eventBus - * The event bus * @param name * The name of the filter * @param rate - * The limiting rate (in bytes/second) */ - public RateLimitingFilter(EventBus eventBus, String name, int rate) { - this(eventBus, name, rate, 0); + public RateLimitingFilter(String name, int rate) { + this(name, rate, 0); } /** * Creates a new rate limiting filter. * - * @param eventBus - * The event bus * @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(EventBus eventBus, String name, int rate, long fastStartTime) { - super(eventBus, name); + public RateLimitingFilter(String name, int rate, long fastStartTime) { + super(name); this.rate = rate; this.counter = (long) (-rate * (fastStartTime / 1000.0)); } @@ -89,10 +83,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 {