finish Packet: CPacket

This commit is contained in:
free will committed 2021-03-15 17:18:26 +08:00
1 parent 8bd3547a70
commit 7a6ce6e6a5
1 file changed
+88 -3
+88 -3
View File
@@ -57,7 +57,31 @@ public class CPacket implements InteractWithField, IEncodingAble {
// 填充可变区 => 非受保护区
// 首先清除所有的Block
this.minPacket.mutableField.mutableDangerousField.clearBlocks();
// Block block
Block block=new SelfEncodingBase().selfWireEncode(this.ttl);
if(block==null){
return false;
}
this.minPacket.mutableField.mutableDangerousField.addBlock(block);
// 填充只读区
// 首先清除所有的Block
this.minPacket.readOnlyField.clearBlocks();
block=new SelfEncodingBase().selfWireEncode(this.payload);
if(block==null){
return false;
}
this.minPacket.readOnlyField.addBlock(block);
// 填充标识区
// 首先清除所有的标识
this.minPacket.identifierField.clearIdentifiers();
IdentifierWrapper identifierWrapper=
new IdentifierWrapper().createCommonIdentifierByString(this.flatIdentifier);
if(identifierWrapper==null){
return false;
}
this.minPacket.identifierField.addIdentifier(identifierWrapper);
return true;
}
@@ -98,13 +122,74 @@ public class CPacket implements InteractWithField, IEncodingAble {
return true;
}
/**
* 将 CPacket 编码成 TLV
* @param encoder
* @return
*/
@Override
public int wireEncode(Encoder encoder) {
return 0;
// 首先将属性填充到分区当中
if(!this.fillDataToFields()){
return 0;
}
// 指定包类型
this.minPacket.packetType=new VlInt(TLV.TlvPacketMINCommon);
return this.minPacket.wireEncode(encoder);
}
/**
* 从 TLV Block 中解码出一个 CPacket
* @param block
* @return
*/
@Override
public boolean wireDecode(Block block) {
return false;
if(!this.minPacket.wireDecode(block)){
return false;
}
return this.extraDataFromFields();
}
/**
* 展示平面标识
* @return
*/
public String toUri(){
return this.flatIdentifier;
}
/**
* 设置推式包的平面标识,eg: asdfsvnjweivnjsdcs
* @param identifier
*/
public void setIdentifier(String identifier){
this.flatIdentifier=identifier;
}
/**
* 获取推式包的平面标识
* @return
*/
public String getIdentifier(){
return this.flatIdentifier;
}
/**
* 得到 TTL
* @return
*/
public TTL getTtl() {
return ttl;
}
/**
* 设置 TTL
* @param ttl
*/
public void setTtl(TTL ttl) {
this.ttl = ttl;
}
}