package edu.uw.zookeeper.protocol;
import java.util.concurrent.TimeUnit;
import com.google.common.base.MoreObjects;
/**
* Not thread-safe
*/
public class TimeOutParameters {
public static TimeOutParameters milliseconds(long timeOut) {
return new TimeOutParameters(System.currentTimeMillis(), timeOut);
}
private long timeOut;
private long touch;
protected TimeOutParameters(long touch, long timeOut) {
this.timeOut = timeOut;
this.touch = touch;
}
public TimeUnit getUnit() {
return TimeUnit.MILLISECONDS;
}
public long getNow() {
return System.currentTimeMillis();
}
public long getTimeOut() {
return timeOut;
}
public void setTimeOut(long timeOut) {
this.timeOut = timeOut;
}
public long getTouch() {
return touch;
}
public void setTouch(long touch) {
this.touch = touch;
}
public void setTouch() {
setTouch(getNow());
}
public long getRemaining() {
return touch + timeOut - getNow();
}
@Override
public String toString() {
return MoreObjects.toStringHelper(this).add("timeOut", getTimeOut()).add("remaining", getRemaining()).toString();
}
}