优化代码,性能暴涨

This commit is contained in:
Administrator
2025-01-29 14:01:11 +08:00
parent e243203535
commit 6de65562be
130 changed files with 9138 additions and 1020 deletions
@@ -0,0 +1,114 @@
package org.kne.cloud.network.srv6;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.io.Serializable;
import java.net.Inet6Address;
import java.nio.ByteBuffer;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.nio.channels.WritableByteChannel;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import org.kne.cloud.network.NetworkPacket;
import org.kne.cloud.network.ipv6.Inet6AddressGroup;
public class RouterInfo implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private Inet6AddressGroup locator;
public Inet6AddressGroup getLocator() {
return locator;
}
public void setLocator(Inet6AddressGroup locator) {
this.locator = locator;
}
@Override
public int hashCode() {
return Objects.hash(locator, neighborAddresses);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
RouterInfo other = (RouterInfo) obj;
return Objects.equals(locator, other.locator) && Objects.equals(neighborAddresses, other.neighborAddresses);
}
private Set<NeighborInfo> neighborAddresses=new HashSet<>();
private long createTime;
public long getCreateTime() {
return createTime;
}
private static final long INFO_UPDATETIME=10000000000L;
private static final long INFO_TIMEOUT=20000000000L;
private long putTime=System.nanoTime();
public boolean checkUpdateTime() {
return System.nanoTime()-putTime>INFO_UPDATETIME;
}
public boolean checkTimeOut() {
return System.nanoTime()-putTime>INFO_TIMEOUT;
}
@Override
public String toString() {
return "RINFO [locator=" + locator + ", neighborAddresses=" + neighborAddresses + ", putTime=" + putTime
+ "]";
}
public Set<NeighborInfo> getNeighborAddresses() {
return neighborAddresses;
}
public RouterInfo( long createTime) {
this.createTime = createTime;
}
public RouterInfo() {
}
public void writeToStream(DataOutputStream out) throws IOException {
locator.writeToStream(out);
out.writeLong(createTime);
out.writeInt(neighborAddresses.size());
for (Iterator iterator = neighborAddresses.iterator(); iterator.hasNext();) {
NeighborInfo neighborInfo = (NeighborInfo) iterator.next();
neighborInfo.writeToStream(out);
}
}
protected void writeToChannel(WritableByteChannel dto) throws IOException {
writeToStream(new DataOutputStream( Channels.newOutputStream(dto)));
}
protected void readFromChannel(ReadableByteChannel din, long length) throws IOException {
readFromStream(new DataInputStream(Channels.newInputStream(din)));
}
public void readFromStream(DataInputStream in) throws IOException {
locator=new Inet6AddressGroup(in);
createTime=in.readLong();
int size=in.readInt();
neighborAddresses=new HashSet<>(size);
for (int i = 0; i < size; i++) {
NeighborInfo nif=new NeighborInfo();
nif.readFromStream(in);
neighborAddresses.add(nif);
}
}
}