TCP连接池功能

This commit is contained in:
Administrator
2022-12-11 17:27:03 +08:00
parent 35cccfde4b
commit 5d7324db0e
15 changed files with 948 additions and 619 deletions
+44 -36
View File
@@ -2,50 +2,58 @@ package org.kne.cloud.network.klalb;
import java.util.Arrays;
import java.util.Objects;
import java.util.UUID;
import java.util.concurrent.atomic.AtomicLong;
import org.kne.cloud.network.mport.IPPort;
public class KLALBBlock {
volatile byte[]data;
volatile int size;
volatile long number;
volatile long time=-1;
volatile TCPConnection connect;
public KLALBBlock(byte[] b, int size,long number) {
data=b;
this.size=size;
this.number=number;
}
private static AtomicLong sng=new AtomicLong(0);
public long sn;//每个数据包的唯一编号
public UUID cuid;//用于识别数据包的stream ID号
public long number;//数据包的编号,用于排序
public byte[]data;//数据内容
public int command;//功能标记 0=PING 1=PONG 2=SYN 3=RST
public long pingtime;//PING计时器
public String lservice;
public IPPort lipport;
public KLALBBlock() {
// TODO 自动生成的构造函数存根
}
sn=sng.getAndIncrement();
}
@Override
public String toString() {
StringBuilder sb=new StringBuilder();
sb.append(cuid);
sb.append(' ');
if(number>0) {
return "DATA"+number+":"+size;
}else if(number==0){
return "PING";
}else if(number==Long.MIN_VALUE){
return "PONG";
sb.append("DATA").append(number).append(':').append(data.length);
}else if(number<0) {
sb.append("ACK").append(-number);
}else {
return "ACK"+(-number);
switch(command) {
case 0:
sb.append("PING");
break;
case 1:
sb.append("PONG");
break;
case 2:
sb.append("SYN:").append(lservice).append(" ").append(lipport);
break;
case 3:
sb.append("RST");
break;
}
}
return sb.toString();
}
@Override
public int hashCode() {
return Objects.hash(number);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
KLALBBlock other = (KLALBBlock) obj;
return number == other.number;
}
}