diff --git a/src/main/java/component/CanBePrefix.java b/src/main/java/component/CanBePrefix.java index 296784e..0bd6f5e 100644 --- a/src/main/java/component/CanBePrefix.java +++ b/src/main/java/component/CanBePrefix.java @@ -13,6 +13,13 @@ public class CanBePrefix implements TlvComponentBase,InitialAble, IEncodingAble // 成员变量 private boolean canBePrefix; + public CanBePrefix(){ + } + + public CanBePrefix(boolean canBePrefix){ + this.setCanBePrefix(canBePrefix); + } + // 函数 public void setCanBePrefix(boolean canBePrefix){ this.canBePrefix=canBePrefix; diff --git a/src/main/java/component/CongestionMark.java b/src/main/java/component/CongestionMark.java index e541547..d548ecd 100644 --- a/src/main/java/component/CongestionMark.java +++ b/src/main/java/component/CongestionMark.java @@ -13,6 +13,13 @@ public class CongestionMark implements TlvComponentBase, InitialAble, IEncodingA // 成员变量 todo: 越界问题 private long congestionMark; + public CongestionMark(){ + } + + public CongestionMark(long congestionMark){ + this.setCongestionLevel(congestionMark); + } + // 函数 public long getCongestionLevel() { return this.congestionMark; diff --git a/src/main/java/component/FreshnessPeriod.java b/src/main/java/component/FreshnessPeriod.java index 812131e..a7992a8 100644 --- a/src/main/java/component/FreshnessPeriod.java +++ b/src/main/java/component/FreshnessPeriod.java @@ -13,6 +13,13 @@ public class FreshnessPeriod implements TlvComponentBase, InitialAble, IEncoding // 成员变量 private long freshnessPeriod; + public FreshnessPeriod(){ + } + + public FreshnessPeriod(long freshnessPeriod){ + this.setFreshnessPeriod(freshnessPeriod); + } + // 函数 public long getFreshnessPeriod() { return this.freshnessPeriod; diff --git a/src/main/java/component/HopLimit.java b/src/main/java/component/HopLimit.java index 3b04fda..f77e34c 100644 --- a/src/main/java/component/HopLimit.java +++ b/src/main/java/component/HopLimit.java @@ -13,6 +13,13 @@ public class HopLimit implements TlvComponentBase,InitialAble, IEncodingAble { // 成员变量 private long hopLimit; + public HopLimit(){ + } + + public HopLimit(long hopLimit){ + this.setHopLimit(hopLimit); + } + // 成员函数 public long getHopLimit() { return hopLimit; diff --git a/src/main/java/component/InterestLifeTime.java b/src/main/java/component/InterestLifeTime.java index 637eba9..3d535f5 100644 --- a/src/main/java/component/InterestLifeTime.java +++ b/src/main/java/component/InterestLifeTime.java @@ -1,6 +1,7 @@ package component; import encoding.*; +import packet.Interest; /* * @Author: Wang Feng @@ -13,6 +14,13 @@ public class InterestLifeTime implements TlvComponentBase,InitialAble, IEncoding // 变量 private long interestLifeTime; + public InterestLifeTime(){ + } + + public InterestLifeTime(long interestLifeTime){ + this.setInterestLifeTime(interestLifeTime); + } + // 方法 public long getInterestLifeTime() { return interestLifeTime; diff --git a/src/main/java/component/LpPacketFragmentId.java b/src/main/java/component/LpPacketFragmentId.java index cdbe683..f0218dd 100644 --- a/src/main/java/component/LpPacketFragmentId.java +++ b/src/main/java/component/LpPacketFragmentId.java @@ -13,6 +13,13 @@ public class LpPacketFragmentId implements TlvComponentBase,InitialAble,IEncodin // 成员变量 private long id; + public LpPacketFragmentId(){ + } + + public LpPacketFragmentId(long id){ + this.setId(id); + } + // 函数 public long getId() { return id; diff --git a/src/main/java/component/LpPacketFragmentNum.java b/src/main/java/component/LpPacketFragmentNum.java index 66ae11f..973dd4c 100644 --- a/src/main/java/component/LpPacketFragmentNum.java +++ b/src/main/java/component/LpPacketFragmentNum.java @@ -13,6 +13,13 @@ public class LpPacketFragmentNum implements TlvComponentBase,InitialAble, IEncod // 成员变量 private long fragmentNum; + public LpPacketFragmentNum(){ + } + + public LpPacketFragmentNum(long fragmentNum){ + this.setFragmentNum(fragmentNum); + } + // 函数 public long getFragmentNum() { return fragmentNum; diff --git a/src/main/java/component/LpPacketFragmentSeq.java b/src/main/java/component/LpPacketFragmentSeq.java index ddd03cb..c08c401 100644 --- a/src/main/java/component/LpPacketFragmentSeq.java +++ b/src/main/java/component/LpPacketFragmentSeq.java @@ -1,6 +1,7 @@ package component; import encoding.*; +import packet.LpPacket; /* * @Author: Wang Feng @@ -13,6 +14,13 @@ public class LpPacketFragmentSeq implements TlvComponentBase,InitialAble, IEncod // 成员变量 private long fragmentSeq; + public LpPacketFragmentSeq(){ + } + + public LpPacketFragmentSeq(long fragmentSeq){ + this.setFragmentSeq(fragmentSeq); + } + // 函数 public long getFragmentSeq() { return fragmentSeq; diff --git a/src/main/java/component/MustBeRefresh.java b/src/main/java/component/MustBeRefresh.java index c1087ae..6aeb6ad 100644 --- a/src/main/java/component/MustBeRefresh.java +++ b/src/main/java/component/MustBeRefresh.java @@ -13,6 +13,13 @@ public class MustBeRefresh implements TlvComponentBase, InitialAble, IEncodingAb // 成员变量 private boolean mustBeRefresh; + public MustBeRefresh(){ + } + + public MustBeRefresh(boolean mustBeRefresh){ + this.setMustBeRefresh(mustBeRefresh); + } + // 函数 public boolean getMustBeRefresh() { return mustBeRefresh; diff --git a/src/main/java/component/MutableDangerousField.java b/src/main/java/component/MutableDangerousField.java index bea99ec..6fdf1a5 100644 --- a/src/main/java/component/MutableDangerousField.java +++ b/src/main/java/component/MutableDangerousField.java @@ -10,10 +10,9 @@ import encoding.*; * @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室 */ public class MutableDangerousField implements TlvComponentBase, IEncodingAble { - private ElementContainer blocks; + private ElementContainer blocks= new ElementContainer(); - public MutableDangerousField() { - blocks = new ElementContainer(); + public MutableDangerousField(){ } /** diff --git a/src/main/java/component/MutableField.java b/src/main/java/component/MutableField.java index 0f5302d..3e6ed46 100644 --- a/src/main/java/component/MutableField.java +++ b/src/main/java/component/MutableField.java @@ -10,12 +10,10 @@ import encoding.*; * @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室 */ public class MutableField implements TlvComponentBase, IEncodingAble { - public MutableProtectField mutableProtectField; - public MutableDangerousField mutableDangerousField; + public MutableProtectField mutableProtectField=new MutableProtectField(); + public MutableDangerousField mutableDangerousField=new MutableDangerousField(); public MutableField() { - mutableProtectField = new MutableProtectField(); - mutableDangerousField = new MutableDangerousField(); } /** diff --git a/src/main/java/component/MutableProtectField.java b/src/main/java/component/MutableProtectField.java index ff991c2..7648f98 100644 --- a/src/main/java/component/MutableProtectField.java +++ b/src/main/java/component/MutableProtectField.java @@ -10,10 +10,9 @@ import encoding.*; * @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室 */ public class MutableProtectField implements TlvComponentBase, IEncodingAble { - private ElementContainer blocks; + private ElementContainer blocks=new ElementContainer(); public MutableProtectField() { - blocks = new ElementContainer(); } /** diff --git a/src/main/java/component/NackHeader.java b/src/main/java/component/NackHeader.java index 9ab60f7..3aeebb7 100644 --- a/src/main/java/component/NackHeader.java +++ b/src/main/java/component/NackHeader.java @@ -17,6 +17,13 @@ public class NackHeader implements TlvComponentBase,InitialAble, IEncodingAble { public static final long NackReasonDuplicate= 1; public static final long NackReasonNoRoute = 2; + public NackHeader(){ + } + + public NackHeader(long nackReason){ + this.setNackReason(nackReason); + } + // 函数 public long getNackReason() { return nackReason; diff --git a/src/main/java/component/Nonce.java b/src/main/java/component/Nonce.java index 68c40ee..42c0aae 100644 --- a/src/main/java/component/Nonce.java +++ b/src/main/java/component/Nonce.java @@ -15,6 +15,13 @@ public class Nonce implements TlvComponentBase, InitialAble, IEncodingAble { // 成员变量 private long nonce; + public Nonce(){ + } + + public Nonce(long nonce){ + this.setNonce(nonce); + } + // 成员函数 public long getNonce() { return this.nonce; diff --git a/src/main/java/component/Payload.java b/src/main/java/component/Payload.java index 955cc6f..2a1aff4 100644 --- a/src/main/java/component/Payload.java +++ b/src/main/java/component/Payload.java @@ -19,6 +19,10 @@ public class Payload implements TlvComponentBase,InitialAble, IEncodingAble { public Payload(){ } + public Payload(byte[] value){ + this.setValue(value); + } + /** * 构造函数 * @param block diff --git a/src/main/java/component/ReadOnlyField.java b/src/main/java/component/ReadOnlyField.java index f13c333..6fbf043 100644 --- a/src/main/java/component/ReadOnlyField.java +++ b/src/main/java/component/ReadOnlyField.java @@ -10,10 +10,9 @@ import encoding.*; * @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室 */ public class ReadOnlyField implements TlvComponentBase, IEncodingAble { - private ElementContainer blocks; + private ElementContainer blocks=new ElementContainer(); public ReadOnlyField() { - blocks = new ElementContainer(); } /** diff --git a/src/main/java/component/SignatureType.java b/src/main/java/component/SignatureType.java index 0d4e83b..26687c6 100644 --- a/src/main/java/component/SignatureType.java +++ b/src/main/java/component/SignatureType.java @@ -45,10 +45,9 @@ class SignatureAlgorithm{ } } public class SignatureType implements TlvComponentBase, IEncodingAble { - private SignatureAlgorithm value; // SignatureAlgorithm + private SignatureAlgorithm value=new SignatureAlgorithm(); // SignatureAlgorithm public SignatureType(){ - value=new SignatureAlgorithm(); } /** diff --git a/src/main/java/packet/CPacket.java b/src/main/java/packet/CPacket.java index dbd991e..f282787 100644 --- a/src/main/java/packet/CPacket.java +++ b/src/main/java/packet/CPacket.java @@ -34,12 +34,22 @@ import encoding.*; // } // public class CPacket implements InteractWithField, IEncodingAble { - public MINPacket minPacket=new MINPacket(); + private MINPacket minPacket=new MINPacket(); public TTL ttl=new TTL(); public Payload payload=new Payload(); public Identifier srcIdentifier=new Identifier(); public Identifier dstIdentifier=new Identifier(); + public CPacket(){ + } + + public CPacket(Identifier srcIdentifier,Identifier dstIdentifier, + Payload payload,TTL ttl){ + this.srcIdentifier=srcIdentifier; + this.dstIdentifier=dstIdentifier; + this.payload=payload; + this.ttl=ttl; + } /** * 获取源标识 diff --git a/src/main/java/packet/Data.java b/src/main/java/packet/Data.java index db83b7d..e22281a 100644 --- a/src/main/java/packet/Data.java +++ b/src/main/java/packet/Data.java @@ -33,13 +33,25 @@ import encoding.*; // } // public class Data implements IEncodingAble, InteractWithField { - public MINPacket minPacket=new MINPacket(); + private MINPacket minPacket=new MINPacket(); public FreshnessPeriod freshnessPeriod=new FreshnessPeriod(); public Payload payload=new Payload(); public CongestionMark congestionMark=new CongestionMark(); public NackHeader nackHeader=new NackHeader(); public Identifier name=new Identifier(); + public Data(){ + } + + public Data(Identifier name,Payload payload,FreshnessPeriod freshnessPeriod, + CongestionMark congestionMark,NackHeader nackHeader){ + this.name=name; + this.payload=payload; + this.freshnessPeriod=freshnessPeriod; + this.congestionMark=congestionMark; + this.nackHeader=nackHeader; + } + /** * 展示数据包的 URI * diff --git a/src/main/java/packet/Interest.java b/src/main/java/packet/Interest.java index 98bb348..970daca 100644 --- a/src/main/java/packet/Interest.java +++ b/src/main/java/packet/Interest.java @@ -37,7 +37,7 @@ import encoding.*; // } // public class Interest implements InteractWithField, IEncodingAble { - public MINPacket minPacket=new MINPacket(); + private MINPacket minPacket=new MINPacket(); public CanBePrefix canBePrefix=new CanBePrefix(); public MustBeRefresh mustBeRefresh=new MustBeRefresh(); public InterestLifeTime interestLifeTime=new InterestLifeTime(); @@ -50,6 +50,24 @@ public class Interest implements InteractWithField, IEncodingAble { public Identifier name=new Identifier(); + public Interest(){ + } + + public Interest(Identifier name,Payload payload,InterestLifeTime interestLifeTime, + CanBePrefix canBePrefix,MustBeRefresh mustBeRefresh,Nonce nonce, + HopLimit hopLimit,NackHeader nackHeader,CongestionMark congestionMark,TTL ttl){ + this.name=name; + this.payload=payload; + this.interestLifeTime=interestLifeTime; + this.canBePrefix=canBePrefix; + this.mustBeRefresh=mustBeRefresh; + this.nonce=nonce; + this.hopLimit=hopLimit; + this.nackHeader=nackHeader; + this.congestionMark=congestionMark; + this.ttl=ttl; + } + /** * 获取内容兴趣包的名字 * diff --git a/src/main/java/packet/LpPacket.java b/src/main/java/packet/LpPacket.java index 7100c4f..206d330 100644 --- a/src/main/java/packet/LpPacket.java +++ b/src/main/java/packet/LpPacket.java @@ -16,6 +16,14 @@ public class LpPacket implements IEncodingAble { public LpPacketHeader lpPacketHeader=new LpPacketHeader(); public Payload payload=new Payload(); + public LpPacket(){ + } + + public LpPacket(LpPacketHeader lpPacketHeader,Payload payload){ + this.lpPacketHeader=lpPacketHeader; + this.payload=payload; + } + /** * 将 LpPacket 线速编码为一个 TLV * @param encoder diff --git a/src/main/java/packet/Nack.java b/src/main/java/packet/Nack.java index a33a150..eee505a 100644 --- a/src/main/java/packet/Nack.java +++ b/src/main/java/packet/Nack.java @@ -32,6 +32,14 @@ import encoding.IEncodingAble; public class Nack implements IEncodingAble { public Interest interest=new Interest(); + public Nack(){ + } + + public Nack(Interest interest,long reason){ + this.interest=interest; + this.setNackReason(reason); + } + /** * 设置 Nack 的原因 */ diff --git a/src/test/java/packet/LpPacketTest.java b/src/test/java/packet/LpPacketTest.java new file mode 100644 index 0000000..4555ba4 --- /dev/null +++ b/src/test/java/packet/LpPacketTest.java @@ -0,0 +1,59 @@ +package packet; + +import component.*; +import encoding.*; +import org.junit.Test; + +import java.util.Arrays; + +/* + * @Author: Wang Feng + * @Description: + * @Version: 1.0.0 + * @Date: 10:42 2021/4/8 + * @Copyright: MIN-Group;国家重大科技基础设施——未来网络北大实验室;深圳市信息论与未来网络重点实验室 + */ +public class LpPacketTest { + /** + * LpPacket wireEncode: + * [-15, 0, -6, 34, + * -52, 4, 1, 2, 3, 4, + * -15, 0, -5, 15, + * -15, 0, -4, 1, 1, + * -15, 0, -3, 1, 2, + * -15, 0,-2, 1, 3] + * @throws EncoderException + * @throws PacketException + * @throws BlockException + */ + @Test + public void TestLpPacket_wireEncode() throws EncoderException, PacketException, BlockException { + LpPacketHeader header=new LpPacketHeader(new LpPacketFragmentId(1), + new LpPacketFragmentNum(2),new LpPacketFragmentSeq(3)); + byte[] value={(byte)1,(byte)2,(byte)3,(byte)4}; + LpPacket lpPacket=new LpPacket(header,new Payload(value)); + System.out.println(lpPacket.lpPacketHeader.getLpPacketFragmentId().getId()+", " + +lpPacket.lpPacketHeader.getLpPacketFragmentNum().getFragmentNum() + +", "+lpPacket.lpPacketHeader.getLpPacketFragmentSeq().getFragmentSeq() + +", "+ Arrays.toString(lpPacket.payload.getValue())); + + Encoder encoder=new Encoder(); + encoder.encoderReset(new SizeT(Encoder.MaxPacketSize),new SizeT(0)); + System.out.println("encode res: "+lpPacket.wireEncode(encoder)); + byte[] buf=encoder.getBuffer(); + System.out.println("buf: "+ Arrays.toString(buf)); + + Block block=new Block(buf,false); + System.out.println("block buf: "+Arrays.toString(block.getValue())); + LpPacket newLpPacket=new LpPacket(); + System.out.println("decode res: "+newLpPacket.wireDecode(block)); + encoder.encoderReset(new SizeT(Encoder.MaxPacketSize),new SizeT(0)); + System.out.println("encode res: "+newLpPacket.wireEncode(encoder)); + byte[] newbuf=encoder.getBuffer(); + System.out.println("newbuf: "+ Arrays.toString(newbuf)); + System.out.println(newLpPacket.lpPacketHeader.getLpPacketFragmentId().getId()+". " + +newLpPacket.lpPacketHeader.getLpPacketFragmentNum().getFragmentNum() + +", "+newLpPacket.lpPacketHeader.getLpPacketFragmentSeq().getFragmentSeq() + +", "+ Arrays.toString(newLpPacket.payload.getValue())); + } +}