code review: LinkService

This commit is contained in:
ghy
2021-04-21 16:18:21 +08:00
parent 5137c03df0
commit 374657cfe1
+67 -46
View File
@@ -1,9 +1,11 @@
package logicface;
import component.ComponentException;
import component.LpPacketFragmentId;
import component.LpPacketFragmentNum;
import component.LpPacketFragmentSeq;
import encoding.*;
import mgmt.MgmtException;
import packet.*;
import util.ByteHelper;
@@ -32,6 +34,7 @@ public class LinkService {
lpPacket.lpPacketHeader.setLpPacketFragmentNum(new LpPacketFragmentNum(Long.MAX_VALUE));
byte[] buf=new byte[Encoder.MaxPacketSize];
lpPacket.setValue(buf);
Encoder encoder=new Encoder();
if(!encoder.encoderReset(new SizeT(Encoder.MaxPacketSize+1000),new SizeT(0))){
throw new LogicFaceException("LinkService.calculateLpPacketHeadSize: encoderReset error");
@@ -120,8 +123,8 @@ public class LinkService {
try {
int fragmentLen = this.mtu - this.lpPacketHeadSize - 10;
int startIndex = 0;
int fragmentSeq = 0;
int fragmentNum = bufLen / fragmentLen;
long fragmentSeq = 0L;
long fragmentNum = bufLen / fragmentLen;
if (bufLen % fragmentLen != 0) {
fragmentNum++;
}
@@ -143,23 +146,38 @@ public class LinkService {
}
}
private boolean sendPacket(IEncodingAble packet) throws LogicFaceException {
try {
Encoder encoder=new Encoder();
if(!encoder.encoderReset(new SizeT(Encoder.MaxPacketSize),new SizeT(0))){
return false;
}
int bufLen=packet.wireEncode(encoder);
byte[] buf=encoder.getBuffer();
return this.sendByteBuffer(buf,bufLen);
} catch (EncoderException | PacketException | LogicFaceException | MgmtException | ComponentException e) {
throw new LogicFaceException("LinkService.sendPacket: "+e.getMessage());
}
}
/**
* 发送一个兴趣包
* @param interest
* @return
*/
public boolean sendInterest(Interest interest) throws LogicFaceException {
try {
Encoder encoder=new Encoder();
if(!encoder.encoderReset(new SizeT(Encoder.MaxPacketSize),new SizeT(0))){
return false;
}
int bufLen=interest.wireEncode(encoder);
byte[] buf=encoder.getBuffer();
return this.sendByteBuffer(buf,bufLen);
} catch (EncoderException | PacketException e) {
throw new LogicFaceException("LinkService.sendInterest: "+e.getMessage());
}
// try {
// Encoder encoder=new Encoder();
// if(!encoder.encoderReset(new SizeT(Encoder.MaxPacketSize),new SizeT(0))){
// return false;
// }
// int bufLen=interest.wireEncode(encoder);
// byte[] buf=encoder.getBuffer();
// return this.sendByteBuffer(buf,bufLen);
// } catch (EncoderException | PacketException e) {
// throw new LogicFaceException("LinkService.sendInterest: "+e.getMessage());
// }
return sendPacket(interest);
}
/**
@@ -168,17 +186,18 @@ public class LinkService {
* @return
*/
public boolean sendData(Data data) throws LogicFaceException {
try {
Encoder encoder=new Encoder();
if(!encoder.encoderReset(new SizeT(Encoder.MaxPacketSize),new SizeT(0))){
return false;
}
int bufLen=data.wireEncode(encoder);
byte[] buf=encoder.getBuffer();
return this.sendByteBuffer(buf,bufLen);
} catch (EncoderException | PacketException e) {
throw new LogicFaceException("LinkService.sendData: "+e.getMessage());
}
// try {
// Encoder encoder=new Encoder();
// if(!encoder.encoderReset(new SizeT(Encoder.MaxPacketSize),new SizeT(0))){
// return false;
// }
// int bufLen=data.wireEncode(encoder);
// byte[] buf=encoder.getBuffer();
// return this.sendByteBuffer(buf,bufLen);
// } catch (EncoderException | PacketException e) {
// throw new LogicFaceException("LinkService.sendData: "+e.getMessage());
// }
return sendPacket(data);
}
/**
@@ -187,17 +206,18 @@ public class LinkService {
* @return
*/
public boolean sendCPacket(CPacket cPacket) throws LogicFaceException {
try {
Encoder encoder=new Encoder();
if(!encoder.encoderReset(new SizeT(Encoder.MaxPacketSize),new SizeT(0))){
return false;
}
int bufLen=cPacket.wireEncode(encoder);
byte[] buf=encoder.getBuffer();
return this.sendByteBuffer(buf,bufLen);
} catch (EncoderException | PacketException e) {
throw new LogicFaceException("LinkService.sendCPacket: "+e.getMessage());
}
// try {
// Encoder encoder=new Encoder();
// if(!encoder.encoderReset(new SizeT(Encoder.MaxPacketSize),new SizeT(0))){
// return false;
// }
// int bufLen=cPacket.wireEncode(encoder);
// byte[] buf=encoder.getBuffer();
// return this.sendByteBuffer(buf,bufLen);
// } catch (EncoderException | PacketException e) {
// throw new LogicFaceException("LinkService.sendCPacket: "+e.getMessage());
// }
return sendPacket(cPacket);
}
/**
@@ -206,16 +226,17 @@ public class LinkService {
* @return
*/
public boolean sendMINPacket(MINPacket minPacket) throws LogicFaceException {
try {
Encoder encoder=new Encoder();
if(!encoder.encoderReset(new SizeT(Encoder.MaxPacketSize),new SizeT(0))){
return false;
}
int bufLen=minPacket.wireEncode(encoder);
byte[] buf=encoder.getBuffer();
return this.sendByteBuffer(buf,bufLen);
} catch (EncoderException | PacketException e) {
throw new LogicFaceException("LinkService.sendMINPacket: "+e.getMessage());
}
// try {
// Encoder encoder=new Encoder();
// if(!encoder.encoderReset(new SizeT(Encoder.MaxPacketSize),new SizeT(0))){
// return false;
// }
// int bufLen=minPacket.wireEncode(encoder);
// byte[] buf=encoder.getBuffer();
// return this.sendByteBuffer(buf,bufLen);
// } catch (EncoderException | PacketException e) {
// throw new LogicFaceException("LinkService.sendMINPacket: "+e.getMessage());
// }
return sendPacket(minPacket);
}
}