/* * @(#)RateRange.java 1.4 02/08/21 * * Copyright (c) 1996-2002 Sun Microsystems, Inc. All rights reserved. */ package javax.media.protocol; /** * Describes the speed at which data flows. * * @version 1.4, 02/08/21. * */ public class RateRange implements java.io.Serializable { // $jdr: Java needs number range objects. float minimum; float maximum; float current; boolean exact; RateRange() { super(); } /** * Copy constructor. * */ public RateRange(RateRange r) { minimum = r.minimum; maximum = r.maximum; current = r.current; exact = r.exact; } /** * Constructor using required values. * * @param init The initial value for this rate. * @param min The minimum value that this rate can take. * @param max The maximum value that this rate can take. * @param isExact Set to <CODE>true</CODE> if the source rate does not vary when using this * rate range. */ public RateRange(float init, float min, float max, boolean isExact) { minimum = min; maximum = max; current = init; exact = isExact; } /** * Set the current rate. Returns the rate that was actually set. * This implementation just returns the specified rate, * subclasses should return the rate that was actually * set. * @param rate The new rate. */ public float setCurrentRate(float rate) { current = rate; return current; } /** * Get the current rate. * * @return The current rate. * */ public float getCurrentRate() { return current; } /** * Get the minimum rate supported by this range. * * @return The minimum rate. */ public float getMinimumRate() { return minimum; } /** * Get the maximum rate supported by this range. * * @return The maximum rate. */ public float getMaximumRate() { return maximum; } /** * Determine whether or not a particular value is within the range of * supported rates. * * @param The rate to test. * @return Returns <CODE>true</CODE> if the specified rate is supported. */ public boolean inRange(float rate) { return (minimum < rate) && (rate < maximum); } /** * Determine whether or not the source will maintain a constant * speed when using this rate. If the * rate varies, synchronization is usually impractical. * * @return Returns <CODE>true</CODE> if the source will maintain a constant speed at this rate. */ public boolean isExact() { return exact; } }