package com.its.common.cluster.vo; import io.netty.channel.Channel; import lombok.Data; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; @Data public class ClusterNetState { private int state; private Channel channel; private long connectCount; private long lastRecvTime; private long lastSendTime; private int retryCount; private Date connectTime; private Date disconnectTime; public ClusterNetState() { init(); } public void init() { this.state = ClusterNET.CLOSED; this.channel = null; this.connectCount = 0; this.lastRecvTime = 0; this.lastSendTime = 0; this.retryCount = 0; this.connectTime = null; this.disconnectTime = null; } public void setLastRecvTime() { this.lastRecvTime = System.currentTimeMillis(); } public void setLastSendTime() { this.lastSendTime = System.currentTimeMillis(); } public void retry() { this.retryCount++; } public void request() { this.retryCount = 0; } public void connect(Channel channel) { this.state = ClusterNET.LOGIN_WAIT; this.channel = channel; this.connectCount++; this.connectTime = new Date(); this.retryCount = 0; setLastRecvTime(); } public void loginOk() { this.state = ClusterNET.DATA_TRANS; } public void disConnect() { if (this.state != ClusterNET.CLOSED) { this.disconnectTime = new Date(); } this.state = ClusterNET.CLOSED; this.channel = null; this.retryCount = 0; } public void terminate() { this.state = ClusterNET.TERMINATE; } public boolean isActive() { return this.channel != null && this.channel.isActive(); } public String getConnectTimeString() { if (this.connectTime == null) { return "----/--/-- --:--:--"; } Calendar cal = Calendar.getInstance(); cal.setTime(this.connectTime); return (new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")).format(cal.getTime()); } public String getDisconnectTimeString() { if (this.disconnectTime == null) { return "----/--/-- --:--:--"; } Calendar cal = Calendar.getInstance(); cal.setTime(this.disconnectTime); return (new SimpleDateFormat("yyyy/MM/dd HH:mm:ss")).format(cal.getTime()); } }