/*
* Copyright (C) 2014 Alfons Wirtz
* website www.freerouting.net
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License at <http://www.gnu.org/licenses/>
* for more details.
*
* TimeLimit.java
*
* Created on 15. Maerz 2006, 09:27
*
*/
package datastructures;
/**
* Class used to cancel a performance critical algorithm after a time limit is exceeded.
* @author Alfons Wirtz
*/
public class TimeLimit
{
/**
* Creates a new instance with a time limit of p_milli_seconds milli seconds
*/
public TimeLimit(int p_milli_seconds)
{
this.time_limit = p_milli_seconds;
this.time_stamp = (new java.util.Date()).getTime();
}
/**
* Returns true, if the time limit provided in the constructor of this class is exceeded.
*/
public boolean limit_exceeded()
{
long curr_time = (new java.util.Date()).getTime();
return (curr_time - this.time_stamp > this.time_limit);
}
/**
* Multiplies this TimeLimit by p_factor.
*/
public void muultiply(double p_factor)
{
if (p_factor <= 0)
{
return;
}
double new_limit = (p_factor * this.time_limit);
new_limit = Math.min(new_limit, Integer.MAX_VALUE);
this.time_limit = (int) new_limit;
}
private final long time_stamp;
private int time_limit;
}