package com.taover.heartbeat.bean; public class ClientInstance extends ClientRequest implements Instance{ public int DEFAULT_REFORM_MIN_ERROR_COUNT = 1; public int DEFAULT_REFORM_MAX_ERROR_COUNT = 3; private long lastestServerUnixtime = System.currentTimeMillis()/1000; private int lostClientRequestCount = 0; private ClientRequest lastestClientRequest; public ClientInstance(ClientRequest clientRequest) { super(clientRequest); this.lastestClientRequest = clientRequest; } @Override public void flush() { //还未收到请求,则无需刷新失败次数 if(lastestClientRequest == null) { return; } //通过服务器时间,判断是否超时未收到客户端请求 if(isLatestRequestGreateEqualFixRateSec()) { ++this.lostClientRequestCount; } } private boolean isLatestRequestGreateEqualFixRateSec() { return (System.currentTimeMillis()/1000 - this.lastestServerUnixtime) > this.getFixRateSec(); } @Override public boolean needReform() { return isLatestRequestGreateEqualFixRateSec() && this.lostClientRequestCount>=DEFAULT_REFORM_MIN_ERROR_COUNT && this.lostClientRequestCount<=DEFAULT_REFORM_MAX_ERROR_COUNT; } public long getLastestServerUnixtime() { return lastestServerUnixtime; } public void setLastestServerUnixtime(long lastestServerUnixtime) { this.lastestServerUnixtime = lastestServerUnixtime; } public int getLostClientRequestCount() { return lostClientRequestCount; } public void setLostClientRequestCount(int lostClientRequestCount) { this.lostClientRequestCount = lostClientRequestCount; } public ClientRequest getLastestClientRequest() { return lastestClientRequest; } public void setLastestClientRequest(ClientRequest lastestClientRequest) { this.lastestClientRequest = lastestClientRequest; } public void dealClientRequest(ClientRequest clientRequest) { if(this.getFixRateSec() != clientRequest.getFixRateSec()) { this.setFixRateSec(clientRequest.getFixRateSec()); } if(this.getMaxWaitSec() != clientRequest.getMaxWaitSec()) { this.setMaxWaitSec(clientRequest.getMaxWaitSec()); } this.setLastestClientRequest(clientRequest); this.lastestServerUnixtime = System.currentTimeMillis()/1000; this.lostClientRequestCount = 0; } }