test[rust]: rust protocol test

This commit is contained in:
godotg
2024-07-21 21:49:48 +08:00
parent 3194bb6107
commit de9cafc6ac
5 changed files with 657 additions and 190 deletions
+1 -1
View File
@@ -33,7 +33,7 @@ fn main() {
println!("new_byte_buffer length:[{}]", new_byte_buffer.getWriteOffset());
let new_message = read(&mut new_byte_buffer);
let new_packet = new_message.downcast_ref::<NormalObject>().unwrap();
println!("hello {}", new_packet.g);
println!("new packet g:{}", new_packet.g);
}
fn byte_buffer_test() {
+536 -1
View File
@@ -3,6 +3,8 @@
#![allow(non_snake_case)]
#![allow(non_camel_case_types)]
use std::any::Any;
use std::collections::HashMap;
use std::collections::HashSet;
use crate::zfoorust::i_byte_buffer::IByteBuffer;
use crate::zfoorust::protocol_manager::writeNoProtocolId;
use crate::zfoorust::protocol_manager::readNoProtocolId;
@@ -51,7 +53,7 @@ impl IByteBuffer for ByteBuffer {
}
}
fn compatibleRead(&mut self, beforeReadIndex: i32, length: i32) -> bool{
fn compatibleRead(&mut self, beforeReadIndex: i32, length: i32) -> bool {
return length != -1 && self.getReadOffset() < length + beforeReadIndex;
}
@@ -449,4 +451,537 @@ impl IByteBuffer for ByteBuffer {
fn readPacket(&mut self, protocolId: i16) -> Box<dyn Any> {
return readNoProtocolId(self, protocolId);
}
fn writeBoolArray(&mut self, array: &Vec<bool>) {
if array.is_empty() {
self.writeInt(0);
} else {
self.writeInt(array.len() as i32);
for ele in array {
self.writeBool(*ele);
}
}
}
fn readBoolArray(&mut self) -> Vec<bool> {
let mut array: Vec<bool> = Vec::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
array.push(self.readBool());
}
}
return array;
}
fn writeByteArray(&mut self, array: &Vec<i8>) {
if array.is_empty() {
self.writeInt(0);
} else {
self.writeInt(array.len() as i32);
for ele in array {
self.writeByte(*ele);
}
}
}
fn readByteArray(&mut self) -> Vec<i8> {
let mut array: Vec<i8> = Vec::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
array.push(self.readByte());
}
}
return array;
}
fn writeShortArray(&mut self, array: &Vec<i16>) {
if array.is_empty() {
self.writeInt(0);
} else {
self.writeInt(array.len() as i32);
for ele in array {
self.writeShort(*ele);
}
}
}
fn readShortArray(&mut self) -> Vec<i16> {
let mut array: Vec<i16> = Vec::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
array.push(self.readShort());
}
}
return array;
}
fn writeIntArray(&mut self, array: &Vec<i32>) {
if array.is_empty() {
self.writeInt(0);
} else {
self.writeInt(array.len() as i32);
for ele in array {
self.writeInt(*ele);
}
}
}
fn readIntArray(&mut self) -> Vec<i32> {
let mut array: Vec<i32> = Vec::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
array.push(self.readInt());
}
}
return array;
}
fn writeLongArray(&mut self, array: &Vec<i64>) {
if array.is_empty() {
self.writeInt(0);
} else {
self.writeInt(array.len() as i32);
for ele in array {
self.writeLong(*ele);
}
}
}
fn readLongArray(&mut self) -> Vec<i64> {
let mut array: Vec<i64> = Vec::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
array.push(self.readLong());
}
}
return array;
}
fn writeFloatArray(&mut self, array: &Vec<f32>) {
if array.is_empty() {
self.writeInt(0);
} else {
self.writeInt(array.len() as i32);
for ele in array {
self.writeFloat(*ele);
}
}
}
fn readFloatArray(&mut self) -> Vec<f32> {
let mut array: Vec<f32> = Vec::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
array.push(self.readFloat());
}
}
return array;
}
fn writeDoubleArray(&mut self, array: &Vec<f64>) {
if array.is_empty() {
self.writeInt(0);
} else {
self.writeInt(array.len() as i32);
for ele in array {
self.writeDouble(*ele);
}
}
}
fn readDoubleArray(&mut self) -> Vec<f64> {
let mut array: Vec<f64> = Vec::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
array.push(self.readDouble());
}
}
return array;
}
fn writeStringArray(&mut self, array: &Vec<String>) {
if array.is_empty() {
self.writeInt(0);
} else {
self.writeInt(array.len() as i32);
for ele in array {
self.writeString(String::from(ele));
}
}
}
fn readStringArray(&mut self) -> Vec<String> {
let mut array: Vec<String> = Vec::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
array.push(self.readString());
}
}
return array;
}
fn writeBoolSet(&mut self, set: &HashSet<bool>) {
if set.is_empty() {
self.writeInt(0);
} else {
self.writeInt(set.len() as i32);
for ele in set {
self.writeBool(*ele);
}
}
}
fn readBoolSet(&mut self) -> HashSet<bool> {
let mut set: HashSet<bool> = HashSet::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
set.insert(self.readBool());
}
}
return set;
}
fn writeByteSet(&mut self, set: &HashSet<i8>) {
if set.is_empty() {
self.writeInt(0);
} else {
self.writeInt(set.len() as i32);
for ele in set {
self.writeByte(*ele);
}
}
}
fn readByteSet(&mut self) -> HashSet<i8> {
let mut set: HashSet<i8> = HashSet::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
set.insert(self.readByte());
}
}
return set;
}
fn writeShortSet(&mut self, set: &HashSet<i16>) {
if set.is_empty() {
self.writeInt(0);
} else {
self.writeInt(set.len() as i32);
for ele in set {
self.writeShort(*ele);
}
}
}
fn readShortSet(&mut self) -> HashSet<i16> {
let mut set: HashSet<i16> = HashSet::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
set.insert(self.readShort());
}
}
return set;
}
fn writeIntSet(&mut self, set: &HashSet<i32>) {
if set.is_empty() {
self.writeInt(0);
} else {
self.writeInt(set.len() as i32);
for ele in set {
self.writeInt(*ele);
}
}
}
fn readIntSet(&mut self) -> HashSet<i32> {
let mut set: HashSet<i32> = HashSet::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
set.insert(self.readInt());
}
}
return set;
}
fn writeLongSet(&mut self, set: &HashSet<i64>) {
if set.is_empty() {
self.writeInt(0);
} else {
self.writeInt(set.len() as i32);
for ele in set {
self.writeLong(*ele);
}
}
}
fn readLongSet(&mut self) -> HashSet<i64> {
let mut set: HashSet<i64> = HashSet::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
set.insert(self.readLong());
}
}
return set;
}
fn writeStringSet(&mut self, set: &HashSet<String>) {
if set.is_empty() {
self.writeInt(0);
} else {
self.writeInt(set.len() as i32);
for ele in set {
self.writeString(String::from(ele));
}
}
}
fn readStringSet(&mut self) -> HashSet<String> {
let mut set: HashSet<String> = HashSet::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
set.insert(self.readString());
}
}
return set;
}
fn writeIntIntMap(&mut self, map: &HashMap<i32, i32>) {
if map.is_empty() {
self.writeInt(0);
} else {
self.writeInt(map.len() as i32);
for (key, value) in map.clone() {
self.writeInt(key);
self.writeInt(value)
}
}
}
fn readIntIntMap(&mut self) -> HashMap<i32, i32> {
let mut map: HashMap<i32, i32> = HashMap::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
let key = self.readInt();
let value = self.readInt();
map.insert(key, value);
}
}
return map;
}
fn writeIntLongMap(&mut self, map: &HashMap<i32, i64>) {
if map.is_empty() {
self.writeInt(0);
} else {
self.writeInt(map.len() as i32);
for (key, value) in map.clone() {
self.writeInt(key);
self.writeLong(value)
}
}
}
fn readIntLongMap(&mut self) -> HashMap<i32, i64> {
let mut map: HashMap<i32, i64> = HashMap::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
let key = self.readInt();
let value = self.readLong();
map.insert(key, value);
}
}
return map;
}
fn writeIntStringMap(&mut self, map: &HashMap<i32, String>) {
if map.is_empty() {
self.writeInt(0);
} else {
self.writeInt(map.len() as i32);
for (key, value) in map.clone() {
self.writeInt(key);
self.writeString(value)
}
}
}
fn readIntStringMap(&mut self) -> HashMap<i32, String> {
let mut map: HashMap<i32, String> = HashMap::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
let key = self.readInt();
let value = self.readString();
map.insert(key, value);
}
}
return map;
}
fn writeLongIntMap(&mut self, map: &HashMap<i64, i32>) {
if map.is_empty() {
self.writeInt(0);
} else {
self.writeInt(map.len() as i32);
for (key, value) in map.clone() {
self.writeLong(key);
self.writeInt(value)
}
}
}
fn readLongIntMap(&mut self) -> HashMap<i64, i32> {
let mut map: HashMap<i64, i32> = HashMap::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
let key = self.readLong();
let value = self.readInt();
map.insert(key, value);
}
}
return map;
}
fn writeLongLongMap(&mut self, map: &HashMap<i64, i64>) {
if map.is_empty() {
self.writeInt(0);
} else {
self.writeInt(map.len() as i32);
for (key, value) in map.clone() {
self.writeLong(key);
self.writeLong(value)
}
}
}
fn readLongLongMap(&mut self) -> HashMap<i64, i64> {
let mut map: HashMap<i64, i64> = HashMap::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
let key = self.readLong();
let value = self.readLong();
map.insert(key, value);
}
}
return map;
}
fn writeLongStringMap(&mut self, map: &HashMap<i64, String>) {
if map.is_empty() {
self.writeInt(0);
} else {
self.writeInt(map.len() as i32);
for (key, value) in map.clone() {
self.writeLong(key);
self.writeString(value)
}
}
}
fn readLongStringMap(&mut self) -> HashMap<i64, String> {
let mut map: HashMap<i64, String> = HashMap::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
let key = self.readLong();
let value = self.readString();
map.insert(key, value);
}
}
return map;
}
fn writeStringIntMap(&mut self, map: &HashMap<String, i32>) {
if map.is_empty() {
self.writeInt(0);
} else {
self.writeInt(map.len() as i32);
for (key, value) in map.clone() {
self.writeString(key);
self.writeInt(value)
}
}
}
fn readStringIntMap(&mut self) -> HashMap<String, i32> {
let mut map: HashMap<String, i32> = HashMap::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
let key = self.readString();
let value = self.readInt();
map.insert(key, value);
}
}
return map;
}
fn writeStringLongMap(&mut self, map: &HashMap<String, i64>) {
if map.is_empty() {
self.writeInt(0);
} else {
self.writeInt(map.len() as i32);
for (key, value) in map.clone() {
self.writeString(key);
self.writeLong(value)
}
}
}
fn readStringLongMap(&mut self) -> HashMap<String, i64> {
let mut map: HashMap<String, i64> = HashMap::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
let key = self.readString();
let value = self.readLong();
map.insert(key, value);
}
}
return map;
}
fn writeStringStringMap(&mut self, map: &HashMap<String, String>) {
if map.is_empty() {
self.writeInt(0);
} else {
self.writeInt(map.len() as i32);
for (key, value) in map.clone() {
self.writeString(key);
self.writeString(value)
}
}
}
fn readStringStringMap(&mut self) -> HashMap<String, String> {
let mut map: HashMap<String, String> = HashMap::new();
let length = self.readInt();
if length > 0 {
for _index in 0..length {
let key = self.readString();
let value = self.readString();
map.insert(key, value);
}
}
return map;
}
}
@@ -2,6 +2,8 @@
#![allow(dead_code)]
#![allow(non_snake_case)]
#![allow(non_camel_case_types)]
use std::collections::HashMap;
use std::collections::HashSet;
use std::any::Any;
pub trait IPacket {
@@ -52,4 +54,50 @@ pub trait IByteBuffer {
fn readString(&mut self) -> String;
fn writePacket(&mut self, packet: &dyn Any, protocolId: i16);
fn readPacket(&mut self, protocolId: i16) -> Box<dyn Any>;
fn writeBoolArray(&mut self, array: &Vec<bool>);
fn readBoolArray(&mut self) -> Vec<bool>;
fn writeByteArray(&mut self, array: &Vec<i8>);
fn readByteArray(&mut self) -> Vec<i8>;
fn writeShortArray(&mut self, array: &Vec<i16>);
fn readShortArray(&mut self) -> Vec<i16>;
fn writeIntArray(&mut self, array: &Vec<i32>);
fn readIntArray(&mut self) -> Vec<i32>;
fn writeLongArray(&mut self, array: &Vec<i64>);
fn readLongArray(&mut self) -> Vec<i64>;
fn writeFloatArray(&mut self, array: &Vec<f32>);
fn readFloatArray(&mut self) -> Vec<f32>;
fn writeDoubleArray(&mut self, array: &Vec<f64>);
fn readDoubleArray(&mut self) -> Vec<f64>;
fn writeStringArray(&mut self, array: &Vec<String>);
fn readStringArray(&mut self) -> Vec<String>;
fn writeBoolSet(&mut self, set: &HashSet<bool>);
fn readBoolSet(&mut self) -> HashSet<bool>;
fn writeByteSet(&mut self, set: &HashSet<i8>);
fn readByteSet(&mut self) -> HashSet<i8>;
fn writeShortSet(&mut self, set: &HashSet<i16>);
fn readShortSet(&mut self) -> HashSet<i16>;
fn writeIntSet(&mut self, set: &HashSet<i32>);
fn readIntSet(&mut self) -> HashSet<i32>;
fn writeLongSet(&mut self, set: &HashSet<i64>);
fn readLongSet(&mut self) -> HashSet<i64>;
fn writeStringSet(&mut self, set: &HashSet<String>);
fn readStringSet(&mut self) -> HashSet<String>;
fn writeIntIntMap(&mut self, map: &HashMap<i32, i32>);
fn readIntIntMap(&mut self) -> HashMap<i32, i32>;
fn writeIntLongMap(&mut self, map: &HashMap<i32, i64>);
fn readIntLongMap(&mut self) -> HashMap<i32, i64>;
fn writeIntStringMap(&mut self, map: &HashMap<i32, String>);
fn readIntStringMap(&mut self) -> HashMap<i32, String>;
fn writeLongIntMap(&mut self, map: &HashMap<i64, i32>);
fn readLongIntMap(&mut self) -> HashMap<i64, i32>;
fn writeLongLongMap(&mut self, map: &HashMap<i64, i64>);
fn readLongLongMap(&mut self) -> HashMap<i64, i64>;
fn writeLongStringMap(&mut self, map: &HashMap<i64, String>);
fn readLongStringMap(&mut self) -> HashMap<i64, String>;
fn writeStringIntMap(&mut self, map: &HashMap<String, i32>);
fn readStringIntMap(&mut self) -> HashMap<String, i32>;
fn writeStringLongMap(&mut self, map: &HashMap<String, i64>);
fn readStringLongMap(&mut self) -> HashMap<String, i64>;
fn writeStringStringMap(&mut self, map: &HashMap<String, String>);
fn readStringStringMap(&mut self) -> HashMap<String, String>;
}
+64 -164
View File
@@ -75,14 +75,7 @@ pub fn writeNormalObject(buffer: &mut dyn IByteBuffer, packet: &dyn Any) {
let beforeWriteIndex = buffer.getWriteOffset();
buffer.writeInt(857);
buffer.writeByte(message.a);
if message.aaa.is_empty() {
buffer.writeInt(0);
} else {
buffer.writeInt(message.aaa.len() as i32);
for element0 in message.aaa.clone() {
buffer.writeByte(element0);
}
}
buffer.writeByteArray(&message.aaa);
buffer.writeShort(message.b);
buffer.writeInt(message.c);
buffer.writeLong(message.d);
@@ -91,72 +84,29 @@ pub fn writeNormalObject(buffer: &mut dyn IByteBuffer, packet: &dyn Any) {
buffer.writeBool(message.g);
buffer.writeString(message.jj.clone());
buffer.writePacket(&message.kk, 102);
if message.l.is_empty() {
buffer.writeInt(0);
} else {
buffer.writeInt(message.l.len() as i32);
for element1 in message.l.clone() {
buffer.writeInt(element1);
}
}
if message.ll.is_empty() {
buffer.writeInt(0);
} else {
buffer.writeInt(message.ll.len() as i32);
for element2 in message.ll.clone() {
buffer.writeLong(element2);
}
}
buffer.writeIntArray(&message.l);
buffer.writeLongArray(&message.ll);
if message.lll.is_empty() {
buffer.writeInt(0);
} else {
buffer.writeInt(message.lll.len() as i32);
for element3 in message.lll.clone() {
buffer.writePacket(&element3, 102);
}
}
if message.llll.is_empty() {
buffer.writeInt(0);
} else {
buffer.writeInt(message.llll.len() as i32);
for element4 in message.llll.clone() {
buffer.writeString(element4.clone());
}
}
if message.m.is_empty() {
buffer.writeInt(0);
} else {
buffer.writeInt(message.m.len() as i32);
for (key5, value6) in message.m.clone() {
buffer.writeInt(key5);
buffer.writeString(value6.clone());
for element0 in message.lll.clone() {
buffer.writePacket(&element0, 102);
}
}
buffer.writeStringArray(&message.llll);
buffer.writeIntStringMap(&message.m);
if message.mm.is_empty() {
buffer.writeInt(0);
} else {
buffer.writeInt(message.mm.len() as i32);
for (key7, value8) in message.mm.clone() {
buffer.writeInt(key7);
buffer.writePacket(&value8, 102);
}
}
if message.s.is_empty() {
buffer.writeInt(0);
} else {
buffer.writeInt(message.s.len() as i32);
for element9 in message.s.clone() {
buffer.writeInt(element9);
}
}
if message.ssss.is_empty() {
buffer.writeInt(0);
} else {
buffer.writeInt(message.ssss.len() as i32);
for element10 in message.ssss.clone() {
buffer.writeString(element10.clone());
for (key1, value2) in message.mm.clone() {
buffer.writeInt(key1);
buffer.writePacket(&value2, 102);
}
}
buffer.writeIntSet(&message.s);
buffer.writeStringSet(&message.ssss);
buffer.writeInt(message.outCompatibleValue);
buffer.writeInt(message.outCompatibleValue2);
buffer.adjustPadding(857, beforeWriteIndex);
@@ -171,115 +121,65 @@ pub fn readNormalObject(buffer: &mut dyn IByteBuffer) -> Box<dyn Any> {
let beforeReadIndex = buffer.getReadOffset();
let result0 = buffer.readByte();
packet.a = result0;
let mut result1: Vec<i8> = Vec::new();
let size3 = buffer.readInt();
if size3 > 0 {
for index2 in 0 .. size3 {
let result4 = buffer.readByte();
result1.push(result4);
let array1 = buffer.readByteArray();
packet.aaa = array1;
let result2 = buffer.readShort();
packet.b = result2;
let result3 = buffer.readInt();
packet.c = result3;
let result4 = buffer.readLong();
packet.d = result4;
let result5 = buffer.readFloat();
packet.e = result5;
let result6 = buffer.readDouble();
packet.f = result6;
let result7 = buffer.readBool();
packet.g = result7;
let result8 = buffer.readString();
packet.jj = result8;
let result9 = buffer.readPacket(102);
let result10 = result9.downcast_ref::<ObjectA>().unwrap().clone();
packet.kk = result10;
let list11 = buffer.readIntArray();
packet.l = list11;
let list12 = buffer.readLongArray();
packet.ll = list12;
let mut result13: Vec<ObjectA> = Vec::new();
let size14 = buffer.readInt();
if size14 > 0 {
for index15 in 0..size14 {
let result16 = buffer.readPacket(102);
let result17 = result16.downcast_ref::<ObjectA>().unwrap().clone();
result13.push(result17);
}
}
packet.aaa = result1;
let result5 = buffer.readShort();
packet.b = result5;
let result6 = buffer.readInt();
packet.c = result6;
let result7 = buffer.readLong();
packet.d = result7;
let result8 = buffer.readFloat();
packet.e = result8;
let result9 = buffer.readDouble();
packet.f = result9;
let result10 = buffer.readBool();
packet.g = result10;
let result11 = buffer.readString();
packet.jj = result11;
let result12 = buffer.readPacket(102);
let result13 = result12.downcast_ref::<ObjectA>().unwrap().clone();
packet.kk = result13;
let mut result14: Vec<i32> = Vec::new();
let size15 = buffer.readInt();
if size15 > 0 {
for index16 in 0 .. size15 {
let result17 = buffer.readInt();
result14.push(result17);
packet.lll = result13;
let list18 = buffer.readStringArray();
packet.llll = list18;
let map19 = buffer.readIntStringMap();
packet.m = map19;
let mut result20: HashMap<i32, ObjectA> = HashMap::new();
let size21 = buffer.readInt();
if size21 > 0 {
for index22 in 0..size21 {
let result23 = buffer.readInt();
let result24 = buffer.readPacket(102);
let result25 = result24.downcast_ref::<ObjectA>().unwrap().clone();
result20.insert(result23, result25);
}
}
packet.l = result14;
let mut result18: Vec<i64> = Vec::new();
let size19 = buffer.readInt();
if size19 > 0 {
for index20 in 0 .. size19 {
let result21 = buffer.readLong();
result18.push(result21);
}
}
packet.ll = result18;
let mut result22: Vec<ObjectA> = Vec::new();
let size23 = buffer.readInt();
if size23 > 0 {
for index24 in 0 .. size23 {
let result25 = buffer.readPacket(102);
let result26 = result25.downcast_ref::<ObjectA>().unwrap().clone();
result22.push(result26);
}
}
packet.lll = result22;
let mut result27: Vec<String> = Vec::new();
let size28 = buffer.readInt();
if size28 > 0 {
for index29 in 0 .. size28 {
let result30 = buffer.readString();
result27.push(result30);
}
}
packet.llll = result27;
let mut result31: HashMap<i32, String> = HashMap::new();
let size32 = buffer.readInt();
if size32 > 0 {
for index33 in 0 .. size32 {
let result34 = buffer.readInt();
let result35 = buffer.readString();
result31.insert(result34, result35);
}
}
packet.m = result31;
let mut result36: HashMap<i32, ObjectA> = HashMap::new();
let size37 = buffer.readInt();
if size37 > 0 {
for index38 in 0 .. size37 {
let result39 = buffer.readInt();
let result40 = buffer.readPacket(102);
let result41 = result40.downcast_ref::<ObjectA>().unwrap().clone();
result36.insert(result39, result41);
}
}
packet.mm = result36;
let mut result42: HashSet<i32> = HashSet::new();
let size43 = buffer.readInt();
if size43 > 0 {
for index44 in 0 .. size43 {
let result45 = buffer.readInt();
result42.insert(result45);
}
}
packet.s = result42;
let mut result46: HashSet<String> = HashSet::new();
let size47 = buffer.readInt();
if size47 > 0 {
for index48 in 0 .. size47 {
let result49 = buffer.readString();
result46.insert(result49);
}
}
packet.ssss = result46;
packet.mm = result20;
let set26 = buffer.readIntSet();
packet.s = set26;
let set27 = buffer.readStringSet();
packet.ssss = set27;
if buffer.compatibleRead(beforeReadIndex, length) {
let result50 = buffer.readInt();
packet.outCompatibleValue = result50;
let result28 = buffer.readInt();
packet.outCompatibleValue = result28;
}
if buffer.compatibleRead(beforeReadIndex, length) {
let result51 = buffer.readInt();
packet.outCompatibleValue2 = result51;
let result29 = buffer.readInt();
packet.outCompatibleValue2 = result29;
}
if length > 0 {
buffer.setReadOffset(beforeReadIndex + length);
+8 -24
View File
@@ -41,15 +41,7 @@ pub fn writeObjectA(buffer: &mut dyn IByteBuffer, packet: &dyn Any) {
let beforeWriteIndex = buffer.getWriteOffset();
buffer.writeInt(201);
buffer.writeInt(message.a);
if message.m.is_empty() {
buffer.writeInt(0);
} else {
buffer.writeInt(message.m.len() as i32);
for (key0, value1) in message.m.clone() {
buffer.writeInt(key0);
buffer.writeString(value1.clone());
}
}
buffer.writeIntStringMap(&message.m);
buffer.writePacket(&message.objectB, 103);
buffer.writeInt(message.innerCompatibleValue);
buffer.adjustPadding(201, beforeWriteIndex);
@@ -64,22 +56,14 @@ pub fn readObjectA(buffer: &mut dyn IByteBuffer) -> Box<dyn Any> {
let beforeReadIndex = buffer.getReadOffset();
let result0 = buffer.readInt();
packet.a = result0;
let mut result1: HashMap<i32, String> = HashMap::new();
let size2 = buffer.readInt();
if size2 > 0 {
for index3 in 0 .. size2 {
let result4 = buffer.readInt();
let result5 = buffer.readString();
result1.insert(result4, result5);
}
}
packet.m = result1;
let result6 = buffer.readPacket(103);
let result7 = result6.downcast_ref::<ObjectB>().unwrap().clone();
packet.objectB = result7;
let map1 = buffer.readIntStringMap();
packet.m = map1;
let result2 = buffer.readPacket(103);
let result3 = result2.downcast_ref::<ObjectB>().unwrap().clone();
packet.objectB = result3;
if buffer.compatibleRead(beforeReadIndex, length) {
let result8 = buffer.readInt();
packet.innerCompatibleValue = result8;
let result4 = buffer.readInt();
packet.innerCompatibleValue = result4;
}
if length > 0 {
buffer.setReadOffset(beforeReadIndex + length);