package com.limegroup.gnutella.connection; import com.limegroup.gnutella.messages.Message; /** * Queue that can handle dropping msgs too. */ public class StubQueue extends BasicQueue { int numToDrop; int startDropIn; int dropped; public void setNumToDrop(int i) { numToDrop = i; } public void setStartDropIn(int i) { startDropIn = i; } public void add(Message m) { if(size() > 0 && startDropIn-- <= 0 && numToDrop > 0) { numToDrop--; dropped++; super.removeNext(); } super.add(m); } public Message removeNext() { while(size() > 0) { if(startDropIn-- <= 0 && numToDrop > 0) { numToDrop--; dropped++; super.removeNext(); continue; } else break; } return super.removeNext(); } public int resetDropped() { int d = dropped; dropped = 0; return d; } /** Returns the number of queued messages. */ public int size() { return super.size(); } public void resetCycle() {} /** Determines if this is empty. */ public boolean isEmpty() { return super.isEmpty(); } }