mirror of
https://gitee.com/willfree/min-dev-java.git
synced 2026-10-04 19:42:01 +08:00
finish Packet: CPacket
This commit is contained in:
1 parent
8bd3547a70
commit
7a6ce6e6a5
1 file changed
+88
-3
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user