package net.dubboclub.circuitbreaker;
import java.util.Date;
/**
* 某个接口一次错误异常的标记
*/
class ExceptionMarker {
private long breakTime;
private long expireTime;
private Date breakDate;
private Throwable breakBy;
private String caseByMessage;
public String getCaseByMessage() {
return caseByMessage;
}
ExceptionMarker(long breakTime, long expireTime,Throwable breakBy){
this.breakTime = breakTime;
this.expireTime = expireTime;
this.breakDate = new Date(breakTime);
this.breakBy=breakBy;
this.caseByMessage = breakBy.getMessage();
}
@Override
public String toString() {
StringBuffer toString = new StringBuffer("breakTime=");
toString.append(breakDate).append(",expireTime="+expireTime+"ms,remain "+getRemain()+"ms, break by "+breakBy.getMessage());
return toString.toString();
}
public long getRemain(){
return getExpireTime()-(System.currentTimeMillis()-breakTime);
}
public long getBreakTime() {
return breakTime;
}
public long getExpireTime() {
return expireTime;
}
public boolean isExpire(){
return (System.currentTimeMillis()-getBreakTime())>=getExpireTime();
}
}