/*******************************************************************************
 * Copyright (c) 2004, 2007 Boeing.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Boeing - initial API and implementation
 *******************************************************************************/
package org.eclipse.osee.ote.messaging.dds;

/**
 * <code>Duration</code> is used to specify a difference in time with nano-second resolution.
 * 
 * @author Robert A. Fisher
 * @author David Diepenbrock
 */
public class Duration extends Time {
   public final static Duration ZERO_DURATION = new Duration(0, 0);
   private Time startTime;

   /**
    * Construct a new <code>Duration</code> with specific values.
    * 
    * @param seconds - The number of seconds for the duration.
    * @param nanoSeconds - The number of nano-seconds for the duration.
    */
   public Duration(long seconds, long nanoSeconds) {
      super(seconds, nanoSeconds);
   }

   /**
    * Mark an instant in time as a "start" point. This is used in conjunction with the <code>expired()</code> method.
    */
   public void markStart() {
      startTime = new Time();
   }

   /**
    * Check if the time specified by this <code>Duration</code> is less than the amount of time since
    * <code>markStart()</code> was called.
    * 
    * @return <b>true</b> iff the time since <code>markStart()</code> is greater than this duration.
    */
   public boolean expired() {
      return new Time().millisSince(startTime) > this.getMilliseconds();
   }
}
