mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-08-06 02:24:25 +00:00
feat[rust]: compatible protocol
This commit is contained in:
@@ -353,7 +353,7 @@ public class CodeGenerateRust implements ICodeGenerate {
|
||||
var field = fields[i];
|
||||
var fieldRegistration = fieldRegistrations[i];
|
||||
if (field.isAnnotationPresent(Compatible.class)) {
|
||||
rustBuilder.append("if (buffer.compatibleRead(beforeReadIndex, length)) {").append(LS);
|
||||
rustBuilder.append("if buffer.compatibleRead(beforeReadIndex, length) {").append(LS);
|
||||
var compatibleReadObject = rustSerializer(fieldRegistration.serializer()).readObject(rustBuilder, 1, field, fieldRegistration);
|
||||
rustBuilder.append(TAB).append(StringUtils.format("packet.{} = {};", field.getName(), compatibleReadObject)).append(LS);
|
||||
rustBuilder.append("}").append(LS);
|
||||
|
||||
@@ -51,6 +51,10 @@ impl IByteBuffer for ByteBuffer {
|
||||
}
|
||||
}
|
||||
|
||||
fn compatibleRead(&mut self, beforeReadIndex: i32, length: i32) -> bool{
|
||||
return length != -1 && self.getReadOffset() < length + beforeReadIndex;
|
||||
}
|
||||
|
||||
fn getBuffer(&self) -> &Vec<i8> {
|
||||
return &self.buffer;
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ pub trait IPacket {
|
||||
#[allow(unused_parens)]
|
||||
pub trait IByteBuffer {
|
||||
fn adjustPadding(&mut self, predictionLength: i32, beforeWriteIndex: i32);
|
||||
fn compatibleRead(&mut self, beforeReadIndex: i32, length: i32) -> bool;
|
||||
fn getBuffer(&self) -> &Vec<i8>;
|
||||
fn getWriteOffset(&self) -> i32;
|
||||
fn setWriteOffset(&mut self, writeIndex: i32);
|
||||
|
||||
Reference in New Issue
Block a user