From 374657cfe1539a4e5d7b87594a768b6f8278b842 Mon Sep 17 00:00:00 2001 From: ghy Date: Wed, 21 Apr 2021 16:18:21 +0800 Subject: [PATCH] code review: LinkService --- src/main/java/logicface/LinkService.java | 113 ++++++++++++++--------- 1 file changed, 67 insertions(+), 46 deletions(-) diff --git a/src/main/java/logicface/LinkService.java b/src/main/java/logicface/LinkService.java index aeb138e..f46a692 100644 --- a/src/main/java/logicface/LinkService.java +++ b/src/main/java/logicface/LinkService.java @@ -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); } }