r27201 - trunk/freenet/src/freenet/node

[email protected] Wed, 22 Apr 2009 08:01:08 +0000
Newsgroups gmane.network.freenet.cvs
Message-ID <[email protected]>
Author: j16sdiz
Date: 2009-04-22 08:01:07 +0000 (Wed, 22 Apr 2009)
New Revision: 27201

Removed:
   trunk/freenet/src/freenet/node/BandwidthUsageHistory.java
Log:
Unused class: BandwidthUsageHistory

Deleted: trunk/freenet/src/freenet/node/BandwidthUsageHistory.java
===================================================================
--- trunk/freenet/src/freenet/node/BandwidthUsageHistory.java	2009-04-22 07:46:49 UTC (rev 27200)
+++ trunk/freenet/src/freenet/node/BandwidthUsageHistory.java	2009-04-22 08:01:07 UTC (rev 27201)
@@ -1,234 +0,0 @@
-/* This code is part of Freenet. It is distributed under the GNU General
- * Public License, version 2 (or at your option any later version). See
- * http://www.gnu.org/ for further details of the GPL. */
-package freenet.node;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-/**
- * A fixed-size list of bandwidth usage measurements.
- * 
- * @author xor
- * 
- */
-public class BandwidthUsageHistory implements Iterable<BandwidthUsageHistory.BandwidthUsageSample> {
-
-	public static class BandwidthUsageSample {
-		private float value;
-		private long time;
-
-		public BandwidthUsageSample(float newValue, long newTime) {
-			value = newValue;
-			time = newTime;
-		}
-
-		public float getValue() {
-			return (value);
-		}
-
-		public float setValue(float newValue, long newTime) {
-			time = newTime;
-			return (value = newValue);
-		}
-
-		public long getTime() {
-			return (time);
-		}
-	}
-
-	protected final BandwidthUsageSample[] data;
-	protected int slot;
-
-	public BandwidthUsageHistory(int numberOfSamples) {
-		data = new BandwidthUsageSample[numberOfSamples];
-		slot = 0;
-	}
-
-	/**
-	 * Create a new BandWidthUsageHistory from an existing array of BandwidthUsageSample. 
-	 * @param newData The data for the new object.
-	 * @param bNextSlotIsNotIndex0 If set to false, the new object assumes that slot 0 is the oldest sample. If set to true, the next slot is searched (time expensive!).
-	 */
-	protected BandwidthUsageHistory(BandwidthUsageSample[] newData, boolean bNextSlotIsNotIndex0) {
-		if (newData == null)
-			throw new IllegalArgumentException("newData == null");
-
-		data = newData;
-
-		/* TODO: Remove if it is not needed by any caller. */
-		if(bNextSlotIsNotIndex0)
-			slot = getNextFreeSlot();
-		else {
-			slot = 0;
-			assert(getNextFreeSlot() == slot);	/* Catch wrong use of this constructor. */
-		}
-	}
-	
-	protected BandwidthUsageHistory(BandwidthUsageSample[] newData, int newSlot) {
-		if (newData == null)
-			throw new IllegalArgumentException("newData == null");
-		if (newSlot < 0 || newSlot >= newData.length)
-			throw new IllegalArgumentException("newSlot invalid: " + newSlot);
-
-		data = newData;
-		slot = newSlot;
-		
-		assert (getNextFreeSlot() == slot); /* Catch wrong use of this constructor. */
-	}
-
-	public int getSampleCount() {
-		return(data.length);
-	}
-	
-	/**
-	 * Creates a new BandwidthUsageHistory with the same sample data but different space for samples.
-	 * @param newSampleCount The amount of samples for the new object. If <code>newSampleCount</code> is less than the current sample count, the oldest samples are dropped.
-	 */
-	public synchronized BandwidthUsageHistory clone(int newSampleCount) {
-		if(newSampleCount < 1)
-			throw new IllegalArgumentException("newSampleCount < 1");
-		
-		BandwidthUsageSample[] newData = new BandwidthUsageSample[newSampleCount];
-		int newIdx = 0;
-		
-		for(int idx = newSampleCount >= data.length ? 0 : (data.length - newSampleCount); idx < data.length; idx++) {
-			newData[newIdx++] = getSample(idx);
-		}
-		newIdx %= newData.length;
-		
-		return (new BandwidthUsageHistory(newData, newIdx));
-	}
-
-	public synchronized void putValue(float value, long time) {
-		slot = (slot + 1) % data.length;
-
-		if (data[slot] == null)
-			data[slot] = new BandwidthUsageSample(value, time);
-		else
-			data[slot].setValue(value, time);
-	}
-
-	/**
-	 * Returns the <code>BandwidthUsageSample</code> with index <code>idx</code> from this object. The index is zero based, index 0 being the
-	 * oldest bandwidth sample.
-	 * Do not modify it, the original object is returned instead of a copy to prevent creation of large amounts of BandwidthUsageSample-objects.
-	 * @param idx The index of the sample, index 0 being the oldest bandwidth sample.
-	 * @return The BandwidthUsageSample with the desired index, null if there is no such element yet.
-	 */
-	public synchronized BandwidthUsageSample getSample(int idx) {
-		/* It should not be necessary for clients of this class to use values of idx greater than data.length, it will work however. */
-		assert (idx >= 0 && idx < data.length);
-		return(data[(slot + idx) % data.length]);
-	}
-
-	public synchronized float getAverage() {
-		float sum = 0.0f;
-		int count = 0;
-		for (int idx = 0; idx < data.length; ++idx) {
-			if (data[slot] != null) {
-				sum += data[slot].getValue();
-				++count;
-			}
-		}
-		return(count != 0 ? (sum / count) : 0.0f);
-	}
-
-	/**
-	 * Calculates a new <code>BandwidthUsageHistory</code> with a smaller amount of samples. Each sample in the new
-	 * <code>BandwidthUsageHistory</code> will be calculated as an average value over <code>this.getSampleCount() / numberOfSamples</code>
-	 * samples. If <code>numberOfSamples</code> does not divide <code>this.getSampleCount()</code> then the oldest remaining samples from this
-	 * object will not be included in the calculation.
-	 * 
-	 * @param numberOfSamples
-	 *            The number of samples which the new
-	 *            <code>BandwidthUsageHistory</code> should have.
-	 * @return The new <code>BandwidthUsageHistory</code>.
-	 */
-	public synchronized BandwidthUsageHistory getHistoryWithReducedSampleAmount(int numberOfSamples) {
-		if (numberOfSamples > data.length)
-			throw new IllegalArgumentException("numberOfSamples > this.data.length");
-
-		BandwidthUsageSample[] newData = new BandwidthUsageSample[numberOfSamples];
-		int samplesPerValue = data.length / numberOfSamples;
-		
-		float value = 0.0f;
-		long startTime = -1; 
-		int cnt = 0;
-		int newIdx = 0;
-
-		/* Start at data.length % numberOfSamples to drop the oldest remaining samples, see JavaDoc of this function */ 
-		for (int idx = data.length % numberOfSamples; idx < data.length && data[idx] != null; ++idx) {
-			BandwidthUsageSample s = getSample(idx);
-			value += s.getValue();
-			if(startTime < 0)
-				startTime = s.getTime();
-		
-			if(++cnt == samplesPerValue) {
-				long endTime = s.getTime();
-				assert(newIdx < newData.length); /* If this loop is constructed correctly we do not have to check newIdx. */ 
-				newData[newIdx++] = new BandwidthUsageSample(value/samplesPerValue, startTime + (endTime-startTime) / 2);
-				cnt = 0;
-				startTime = -1;
-			}
-		}
-
-		return(new BandwidthUsageHistory(newData, false));
-	}
-
-	/**
-	 * You HAVE TO use <code>synchronized(){}</code> on the BandwidthUsageHistory object when you use iterator()!
-	 */
-	public Iterator<BandwidthUsageSample> iterator() {
-		return new Iterator<BandwidthUsageSample>() {
-			int idx = 0;
-
-			public boolean hasNext() {
-				return(idx != data.length);
-			}
-
-			/**
-			 * Returns the next BandwidthUsageSample from this object. Do not modify it, the original object is returned instead of a copy to
-			 * prevent creation of large amounts of BandwidthUsageSample-objects.
-			 */
-			public BandwidthUsageSample next() {
-				if (!hasNext())
-					throw new NoSuchElementException();
-
-				BandwidthUsageSample result = getSample(idx);
-				++idx;
-				return(result);
-			}
-
-			/**
-			 * This cannot be used: The BandwidthUsageHistory contains a fixed amount of elements.
-			 */
-			public void remove() {
-				throw new UnsupportedOperationException();
-			}
-
-		};
-	}
-	
-	/**
-	 * Uses O(data.length) time! Should be avoided by passing over calculated values to constructors!
-	 * Should be used in assert() statements.
-	 * @return The index of the oldest sample in the data if the array was full, the next empty slot otherwise.
-	 */
-	protected int getNextFreeSlot() {
-		int oldest = 0;
-		long oldestTime = Long.MAX_VALUE;
-
-		for (int idx = 0; idx < data.length; ++idx) {
-			if (data[idx] == null) {
-				oldest = idx;
-				break;
-			}
-			else if (data[idx] != null && data[idx].getTime() < oldestTime) {
-				oldest = idx;
-			}
-		}
-		
-		return(oldest);
-	}
-}