All Downloads are FREE. Search and download functionalities are using the official Maven repository.

javax.slee.facilities.TimerOptions Maven / Gradle / Ivy

The newest version!
package javax.slee.facilities;

import java.io.Serializable;

/**
 * The TimerOptions class specifies the behavior of a timer when it is set.
 * 

* Timeout - * Under normal conditions and expected workload, a SLEE and its Timer Facility should be * able to fire timer events on time. However, under overload conditions, or when the SLEE * is not running, the Timer Facility may not be able to do so. The timeout value allows * some flexibility in deciding when a scheduled timer becomes late. A timer is considered * late if the Timer Facility cannot fire a scheduled timer event by its scheduled expiry * time + timer timeout. For a periodic timer, the timeout must be less than the timer's * period. *

* Preserving Missed Timer Events - * The default timer options cause the Timer Facility to only generate the last event * in a sequence of late timer events for a timer that fires late. This guarantees at * least one timer event (the last, for a periodic timer) will be generated for a timer. * However an SBB can still choose to receive all or none of the late timer events if desired. *

* Persistent Timers - * Deprecated in SLEE 1.1 - This option has been deprecated. The semantics of * persistent timers were unclear as the definition of persistent implied by this option * was inconsistent with the general use of the term "persistent" in the rest of the * specification. */ public class TimerOptions implements Serializable { /** * Create a TimerOptions object that describes the default timer behavior. * The default timer behavior is: *

    *
  • the timeout is the SLEE's default timeout period. *
  • only the last in a sequence of late timer events is preserved. *
* The deprecated persistent option is set to false by this constructor. */ public TimerOptions() { this(0, TimerPreserveMissed.LAST); } /** * Create a TimerOptions object that has the same behavioral properties as * another TimerOptions. * @param options the TimerOptions object to copy. */ public TimerOptions(TimerOptions options) { this(options.persistent, options.timeout, options.preserveMissed); } /** * Create a TimerOptions object for the specified timer behavior. * @param persistent boolean value indicating whether the timer should be persistent or not. * @param timeout the timeout period for the timer (specified in milliseconds). * @param preserveMissed the behavior of late timers. * @throws NullPointerException if preserveMissed is null. * @throws IllegalArgumentException if timeout is less than zero. * @deprecated This constructor specifies the value of the persistent option, which * has been deprecated. It has been replaced with {@link #TimerOptions(long, TimerPreserveMissed)}. */ public TimerOptions(boolean persistent, long timeout, TimerPreserveMissed preserveMissed) throws NullPointerException, IllegalArgumentException { setPersistent(persistent); setTimeout(timeout); setPreserveMissed(preserveMissed); } /** * Create a TimerOptions object for the specified timer behavior. * The deprecated persistent option is set to false by this constructor. * @param timeout the timeout period for the timer (specified in milliseconds). * @param preserveMissed the behavior of late timers. * @throws NullPointerException if preserveMissed is null. * @throws IllegalArgumentException if timeout is less than zero. * @since SLEE 1.1 */ public TimerOptions(long timeout, TimerPreserveMissed preserveMissed) throws NullPointerException, IllegalArgumentException { setPersistent(false); setTimeout(timeout); setPreserveMissed(preserveMissed); } /** * Test if the persistent timer flag is set. * @return true if the timer should be persistent, false otherwise. * @deprecated the persistent option has been deprecated. */ public final boolean isPersistent() { return persistent; } /** * Set the persistent timer flag. * @param persistent boolean value indicating whether the timer should be persistent or not. * @deprecated the persistent option has been deprecated. */ public final void setPersistent(boolean persistent) { this.persistent = persistent; } /** * Get the timeout period. * @return the timeout period. */ public final long getTimeout() { return timeout; } /** * Set the timeout period. * @param timeout the timeout period (specified in milliseconds). * @throws IllegalArgumentException if timeout less than zero. */ public final void setTimeout(long timeout) throws IllegalArgumentException { if (timeout < 0) throw new IllegalArgumentException("timeout cannot be less than zero"); this.timeout = timeout; } /** * Get the value of the preserve-missed option. * @return the value of the preserve-missed option. */ public final TimerPreserveMissed getPreserveMissed() { return preserveMissed; } /** * Set the value of the preserve missed option. * @param preserveMissed the behavior of late timers. * @throws NullPointerException if preserveMissed is null. */ public final void setPreserveMissed(TimerPreserveMissed preserveMissed) throws NullPointerException { if (preserveMissed == null) throw new NullPointerException("preserveMissed is null"); this.preserveMissed = preserveMissed; } /** * Compare this timer options object for equality with another. * @param obj the object to compare this with. * @return true if obj is an instance of this class * representing the same timer options as this, false otherwise. */ public boolean equals(Object obj) { if (obj == this) return true; if (!(obj instanceof TimerOptions)) return false; TimerOptions that = (TimerOptions)obj; return (this.persistent == that.persistent) && (this.timeout == that.timeout) && (this.preserveMissed.equals(that.preserveMissed)); } /** * Get a hash code value for this timer options object. * @return a hash code value. */ public int hashCode() { return (int)timeout | (persistent ? 0x1000 : 0) | (preserveMissed.hashCode() << 20); } /** * Get the textual representation of the timer options object. * @return the textual representation of the timer options object. */ public String toString() { return "TimerOptions[persistent=" + persistent + ",timeout=" + timeout + ",preserve missed=" + preserveMissed + "]"; } private boolean persistent; private long timeout; private TimerPreserveMissed preserveMissed; }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy