KLALB 3.6.0开发一半的状态

This commit is contained in:
2026-07-06 17:03:27 +08:00
parent 620afef715
commit c8b183da71
90 changed files with 1963 additions and 3757 deletions
@@ -16,26 +16,19 @@ import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.LockSupport;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Supplier;
import org.kne.cloud.network.ByteBufferAllocator;
import org.kne.cloud.network.NetworkPacket;
import org.kne.cloud.network.RawSocketImpl;
import org.kne.cloud.network.ThreadTool;
import org.kne.cloud.network.VirtualRawSocketImpl;
import org.kne.cloud.network.ipv6.IPv6Packet;
import org.kne.cloud.network.ipv6.IPv6Packet.IPv6Payload;
import org.kne.cloud.network.ipv6.IPv6Packet.IPv6DefaultPayload;
import org.kne.cloud.network.ipv6.IPv6ProtocolRegister;
import org.kne.cloud.network.ipv6.IPv6Address;
import org.kne.cloud.network.ipv6.IPv6AddressGroup;
import org.kne.cloud.network.ipv6.IPv6NetworkLink;
import org.kne.cloud.network.ipv6.LoopbackIPv6NetworkLink;
import org.kne.cloud.network.srv6.PacketConsumer;
import org.kne.cloud.network.srv6.SRv6Router;
import org.kne.concurrent.HighPerformanceExecutor;
import org.kne.io.KNEChannels;
public class KLALBVirtualRawSocketImpl extends VirtualRawSocketImpl implements PacketConsumer{
public class KLALBVirtualRawSocketImpl extends VirtualRawSocketImpl implements IPv6ProtocolRegister{
private boolean ipHeaderInclude=false;
@@ -123,7 +116,7 @@ public class KLALBVirtualRawSocketImpl extends VirtualRawSocketImpl implements P
@Override
protected void close() {
link.getProtocolNumberRegister().remove(bindProtocolNumber);
link.getProtocolNumberRegister()[bindProtocolNumber]=null;
}
@Override
@@ -156,8 +149,10 @@ public class KLALBVirtualRawSocketImpl extends VirtualRawSocketImpl implements P
localaddr=(Inet6Address) address;
this.bindProtocolNumber=protocolNumber;
if(link.getProtocolNumberRegister().putIfAbsent(protocolNumber, this)!=null) {
if(link.getProtocolNumberRegister()[protocolNumber]!=null) {
throw new BindException("protocol number already bind");
}else {
link.getProtocolNumberRegister()[protocolNumber]=this;
}
}
@@ -191,7 +186,7 @@ public class KLALBVirtualRawSocketImpl extends VirtualRawSocketImpl implements P
if(ipHeaderInclude) {
}else {
IPv6Payload pl=new IPv6Payload(bindProtocolNumber);
IPv6DefaultPayload pl=new IPv6DefaultPayload(bindProtocolNumber);
pl.getData().put(buf);
pl.getData().flip();
BiConsumer<IPv6NetworkLink, Supplier<IPv6Packet>>cons=link.getReceiveConsumer();
@@ -281,7 +276,7 @@ public class KLALBVirtualRawSocketImpl extends VirtualRawSocketImpl implements P
private AtomicInteger recvQueueUsed=new AtomicInteger(0);
@Override
public boolean accept(IPv6Packet packx) throws IOException {
public boolean onaccept(IPv6Packet packx) throws IOException {
if(recvQueueUsed.get()<=inputchachesize) {
if(recvQueue.offer(packx)) {
recvQueueUsed.addAndGet((int) packx.getPayload().getTotalLength());