package com.walker.tcp.connect;
|
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.walker.infrastructure.utils.NumberGenerator;
|
import com.walker.infrastructure.utils.StringUtils;
|
import com.walker.tcp.Connection;
|
import com.walker.tcp.ProtocolResolver;
|
import com.walker.tcp.Request;
|
import com.walker.tcp.Response;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
|
public class AbstractConnection implements Connection {
|
|
protected final transient Logger logger = LoggerFactory.getLogger(getClass());
|
|
private String id;
|
private String name;
|
private long createTimeMills = 0;
|
private boolean longConnection = true;
|
private boolean idle = false;
|
|
private boolean authenticated = false;
|
private int engineId = 0;
|
private long lastTime = 0;
|
|
private String connectionHost;
|
|
public AbstractConnection(String id){
|
this.id = id;
|
// this.name = name;
|
if(this.supportLongConnection()){
|
this.createTimeMills = NumberGenerator.getSequenceNumber();
|
}
|
}
|
|
public AbstractConnection(){}
|
|
@Override
|
public String getId() {
|
return id;
|
}
|
|
@Override
|
public String getName() {
|
return name;
|
}
|
|
@Override
|
public long getCreateTimeMills() {
|
return createTimeMills;
|
}
|
|
@Override
|
public boolean supportLongConnection() {
|
return longConnection;
|
}
|
|
@Override
|
public boolean isIdle() {
|
return idle;
|
}
|
|
@JsonIgnore
|
@Override
|
public Request<?> read() {
|
return null;
|
}
|
|
@JsonIgnore
|
@Override
|
public void write(Response<?> response) {
|
if(response == null){
|
logger.warn("响应对象为null,不能发送出去");
|
}
|
}
|
|
@JsonIgnore
|
@Override
|
public void disconnect() {
|
|
}
|
|
@Override
|
public String toString(){
|
return new StringBuilder().append("[ id=").append(id)
|
.append(", name=").append(name)
|
.append(", createTIme=").append(createTimeMills)
|
.append(", authenticated=").append(this.authenticated)
|
.append(", alreadyLogin=").append(this.alreadyLogin)
|
.append(", connectionHost=").append(this.connectionHost)
|
.append(", longConnection=").append(this.longConnection)
|
.append("]").toString();
|
}
|
|
@Override
|
public boolean equals(Object obj){
|
if(obj == null){
|
return false;
|
}
|
if(obj instanceof AbstractConnection){
|
AbstractConnection c = (AbstractConnection)obj;
|
if(c.getName() != null && c.getName().equals(this.name)){
|
return true;
|
}
|
if(c.getId().equals(this.id)){
|
return true;
|
}
|
}
|
return false;
|
}
|
|
@Override
|
public int hashCode(){
|
if(StringUtils.isNotEmpty(this.name)){
|
return 31 + this.name.hashCode() * 13;
|
}
|
return 31 + this.id.hashCode() * 13;
|
}
|
|
@Override
|
public void setName(String name) {
|
this.name = name;
|
}
|
|
@Override
|
public boolean isAuthenticated() {
|
return authenticated;
|
}
|
|
protected void setAuthenticated(boolean result){
|
this.authenticated = result;
|
}
|
|
public boolean getAuthenticated(){
|
return this.authenticated;
|
}
|
|
@Override
|
public int getEngineId() {
|
return engineId;
|
}
|
|
public void setEngineId(int id){
|
this.engineId = id;
|
}
|
|
@Override
|
public long getLastTime() {
|
return lastTime;
|
}
|
|
public void setLastTime(long mills){
|
this.lastTime = mills;
|
}
|
|
@JsonIgnore
|
@Override
|
public void bindName(String name) {
|
if(StringUtils.isNotEmpty(this.name)){
|
throw new IllegalStateException("连接已经绑定了名称,不能重复绑定");
|
}
|
this.name = name;
|
this.setAuthenticated(true);
|
// 是否已登录,json转换添加新字段,authenticated一直不生效。2023-09-27
|
this.setAlreadyLogin(1);
|
}
|
|
@Override
|
public boolean isConnected() {
|
return false;
|
}
|
|
@JsonIgnore
|
private ProtocolResolver protocolResolver;
|
|
@Override
|
public ProtocolResolver getProtocolResolver() {
|
return protocolResolver;
|
}
|
|
@Override
|
public void setProtocolResolver(ProtocolResolver protocolResolver) {
|
this.protocolResolver = protocolResolver;
|
}
|
|
@Override
|
public String getConnectionHost() {
|
return this.connectionHost;
|
}
|
@Override
|
public void setConnectionHost(String connectionHost) {
|
this.connectionHost = connectionHost;
|
}
|
|
// 为序列化生成的方法。
|
// 2023-09-27
|
public void setId(String id) {
|
this.id = id;
|
}
|
|
public void setCreateTimeMills(long createTimeMills) {
|
this.createTimeMills = createTimeMills;
|
}
|
|
public boolean getLongConnection() {
|
return longConnection;
|
}
|
|
public void setLongConnection(boolean longConnection) {
|
this.longConnection = longConnection;
|
}
|
|
public void setIdle(boolean idle) {
|
this.idle = idle;
|
}
|
|
@Override
|
public int getAlreadyLogin() {
|
return alreadyLogin;
|
}
|
|
public void setAlreadyLogin(int alreadyLogin) {
|
this.alreadyLogin = alreadyLogin;
|
}
|
|
private int alreadyLogin = 0;
|
}
|