perf[protocol]: 支持TypeScript

This commit is contained in:
jaysunxiao
2022-06-06 17:55:43 +08:00
parent e4ac24a40e
commit 1fa4ff032e
37 changed files with 4386 additions and 112 deletions
+33 -1
View File
@@ -1,4 +1,5 @@
import ByteBuffer from './zfoojs/buffer/ByteBuffer';
import ByteBuffer from './zfoo/buffer/ByteBuffer';
import ProtocolManager from './zfoo/ProtocolManager';
function assert(flag: boolean): void {
if (!flag) {
@@ -10,6 +11,37 @@ function assert(flag: boolean): void {
console.log("Hello world");
const data = fs.readFileSync('C:\\zfoo\\protocol\\src\\test\\resources\\ComplexObject.bytes');
const arrayBytes = new Uint8Array(data.length);
data.copy(arrayBytes, 0, 0, data.length);
const byteBuffer = new ByteBuffer();
byteBuffer.writeBytes(arrayBytes);
const packet = ProtocolManager.read(byteBuffer);
// complexObjec是老的协议,所以序列化回来myCompatible是nil,所以要重新赋值
packet.myCompatible = 0
console.log(packet);
const newByteBuffer = new ByteBuffer();
ProtocolManager.write(newByteBuffer, packet);
const newPacket = ProtocolManager.read(newByteBuffer);
console.log(newPacket);
assert(byteBuffer.readOffset <= newByteBuffer.writeOffset);
// set和map是无序的,所以有的时候输入和输出的字节流有可能不一致,但是长度一定是一致的
const length = newByteBuffer.writeOffset;
byteBuffer.setReadOffset(0);
newByteBuffer.setReadOffset(0);
for (let i = 0; i < length; i++) {
assert(byteBuffer.readByte() == newByteBuffer.readByte());
}
// ByteBuffer test
let buffer = new ByteBuffer();
@@ -0,0 +1,40 @@
import ComplexObject from './packet/ComplexObject';
import NormalObject from './packet/NormalObject';
import ObjectA from './packet/ObjectA';
import ObjectB from './packet/ObjectB';
import SimpleObject from './packet/SimpleObject';
const protocols = new Map<number, any>();
// initProtocol
protocols.set(100, ComplexObject);
protocols.set(101, NormalObject);
protocols.set(102, ObjectA);
protocols.set(103, ObjectB);
protocols.set(104, SimpleObject);
class ProtocolManager {
static getProtocol(protocolId: number): any {
const protocol = protocols.get(protocolId);
if (protocol === null) {
throw new Error('[protocolId:' + protocolId + ']协议不存在');
}
return protocol;
}
static write(buffer: any, packet: any): void {
const protocolId = packet.protocolId();
buffer.writeShort(protocolId);
const protocol = ProtocolManager.getProtocol(protocolId);
protocol.write(buffer, packet);
}
static read(buffer: any): any {
const protocolId = buffer.readShort();
const protocol = ProtocolManager.getProtocol(protocolId);
const packet = protocol.read(buffer);
return packet;
}
}
export default ProtocolManager;
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,189 @@
// from protobuf
const Long = require('./long.js')
module.exports = LongBits;
/**
* Constructs new long bits.
* @classdesc Helper class for working with the low and high bits of a 64 bit value.
* @memberof util
* @constructor
* @param {number} lo Low 32 bits, unsigned
* @param {number} hi High 32 bits, unsigned
*/
function LongBits(lo, hi) {
// note that the casts below are theoretically unnecessary as of today, but older statically
// generated converter code might still call the ctor with signed 32bits. kept for compat.
/**
* Low bits.
* @type {number}
*/
this.lo = lo >>> 0;
/**
* High bits.
* @type {number}
*/
this.hi = hi >>> 0;
}
/**
* Zig-zag encodes this long bits.
* @returns {util.LongBits} `this`
*/
LongBits.prototype.zzEncode = function zzEncode() {
const mask = this.hi >> 31;
this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;
this.lo = (this.lo << 1 ^ mask) >>> 0;
return this;
};
/**
* Zig-zag decodes this long bits.
* @returns {util.LongBits} `this`
*/
LongBits.prototype.zzDecode = function zzDecode() {
const mask = -(this.lo & 1);
this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;
this.hi = (this.hi >>> 1 ^ mask) >>> 0;
return this;
};
/**
* Converts this long bits to a long.
* @param {boolean} [unsigned=false] Whether unsigned or not
* @returns {Long} Long
*/
LongBits.prototype.toLong = function toLong(unsigned) {
return new Long(this.lo | 0, this.hi | 0, Boolean(unsigned));
};
/**
* Zero bits.
* @memberof util.LongBits
* @type {util.LongBits}
*/
const zero = LongBits.zero = new LongBits(0, 0);
function from(value) {
if (typeof value === 'number') {
return fromNumber(value);
}
if (typeof value === 'string' || value instanceof String) {
value = Long.fromString(value);
}
return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;
}
/**
* Constructs new long bits from the specified number.
* @param {number} value Value
* @returns {util.LongBits} Instance
*/
function fromNumber(value) {
if (value === 0) {
return zero;
}
const sign = value < 0;
if (sign) {
value = -value;
}
let lo = value >>> 0;
let hi = (value - lo) / 4294967296 >>> 0;
if (sign) {
hi = ~hi >>> 0;
lo = ~lo >>> 0;
if (++lo > 4294967295) {
lo = 0;
if (++hi > 4294967295) {
hi = 0;
}
}
}
return new LongBits(lo, hi);
}
function writeVarint64(byteBuffer, value) {
let count = 0;
while (value.hi) {
byteBuffer.writeByte(value.lo & 127 | 128);
value.lo = (value.lo >>> 7 | value.hi << 25) >>> 0;
value.hi >>>= 7;
count = count + 7;
}
while (value.lo > 127) {
if (count >= 56) {
byteBuffer.writeByte(value.lo);
return;
}
byteBuffer.writeByte(value.lo & 127 | 128);
value.lo = value.lo >>> 7;
count = count + 7;
}
byteBuffer.writeByte(value.lo);
}
function readLongVarint(buffer) {
// tends to deopt with local vars for octet etc.
const bits = new LongBits(0, 0);
let i = 0;
const len = buffer.length;
let pos = 0;
if (len - pos > 4) { // fast route (lo)
for (; i < 4; ++i) {
// 1st..4th
bits.lo = (bits.lo | (buffer[pos] & 127) << i * 7) >>> 0;
if (buffer[pos++] < 128) {
return bits;
}
}
// 5th
bits.lo = (bits.lo | (buffer[pos] & 127) << 28) >>> 0;
bits.hi = (bits.hi | (buffer[pos] & 127) >> 4) >>> 0;
if (buffer[pos++] < 128) {
return bits;
}
i = 0;
} else {
for (; i < 3; ++i) {
// 1st..3th
bits.lo = (bits.lo | (buffer[pos] & 127) << i * 7) >>> 0;
if (buffer[pos++] < 128) {
return bits;
}
}
// 4th
bits.lo = (bits.lo | (buffer[pos++] & 127) << i * 7) >>> 0;
return bits;
}
// 6th..9th
for (; i < 4; ++i) {
// 最后一位直接写入
if (pos === 8) {
bits.hi = (bits.hi | buffer[pos] << i * 7 + 3) >>> 0;
return bits;
}
bits.hi = (bits.hi | (buffer[pos] & 127) << i * 7 + 3) >>> 0;
if (buffer[pos++] < 128) {
return bits;
}
}
return bits;
}
function writeInt64(byteBuffer, value) {
const bits = from(value).zzEncode();
writeVarint64(byteBuffer, bits);
}
function readInt64(buffer) {
return readLongVarint(buffer).zzDecode().toLong(false);
}
LongBits.writeInt64 = writeInt64;
LongBits.readInt64 = readInt64;
@@ -0,0 +1,488 @@
import ObjectA from './ObjectA';
import ObjectB from './ObjectB';
// 复杂的对象
// 包括了各种复杂的结构,数组,List,Set,Map
//
// @author jaysunxiao
// @version 3.0
class ComplexObject {
// byte类型,最简单的整形
a: number = 0;
// byte的包装类型
// 优先使用基础类型,包装类型会有装箱拆箱
aa: number = 0;
// 数组类型
aaa: Array<number> | null = null;
aaaa: Array<number> | null = null;
b: number = 0;
bb: number = 0;
bbb: Array<number> | null = null;
bbbb: Array<number> | null = null;
c: number = 0;
cc: number = 0;
ccc: Array<number> | null = null;
cccc: Array<number> | null = null;
d: number = 0;
dd: number = 0;
ddd: Array<number> | null = null;
dddd: Array<number> | null = null;
e: number = 0;
ee: number = 0;
eee: Array<number> | null = null;
eeee: Array<number> | null = null;
f: number = 0;
ff: number = 0;
fff: Array<number> | null = null;
ffff: Array<number> | null = null;
g: boolean = false;
gg: boolean = false;
ggg: Array<boolean> | null = null;
gggg: Array<boolean> | null = null;
h: string = '';
hh: string = '';
hhh: Array<string> | null = null;
hhhh: Array<string> | null = null;
jj: string = '';
jjj: Array<string> | null = null;
kk: ObjectA | null = null;
kkk: Array<ObjectA> | null = null;
l: Array<number> | null = null;
ll: Array<Array<Array<number>>> | null = null;
lll: Array<Array<ObjectA>> | null = null;
llll: Array<string> | null = null;
lllll: Array<Map<number, string>> | null = null;
m: Map<number, string> | null = null;
mm: Map<number, ObjectA> | null = null;
mmm: Map<ObjectA, Array<number>> | null = null;
mmmm: Map<Array<Array<ObjectA>>, Array<Array<Array<number>>>> | null = null;
mmmmm: Map<Array<Map<number, string>>, Set<Map<number, string>>> | null = null;
s: Set<number> | null = null;
ss: Set<Set<Array<number>>> | null = null;
sss: Set<Set<ObjectA>> | null = null;
ssss: Set<string> | null = null;
sssss: Set<Map<number, string>> | null = null;
// 如果要修改协议并且兼容老协议,需要加上Compatible注解,按照增加的顺序添加order
myCompatible: number = 0;
myObject: ObjectA | null = null;
protocolId(): number {
return 100;
}
static write(buffer: any, packet: ComplexObject | null) {
if (buffer.writePacketFlag(packet)) {
return;
}
if (packet === null) {
return;
}
buffer.writeByte(packet.a);
buffer.writeByte(packet.aa);
buffer.writeByteArray(packet.aaa);
buffer.writeByteArray(packet.aaaa);
buffer.writeShort(packet.b);
buffer.writeShort(packet.bb);
buffer.writeShortArray(packet.bbb);
buffer.writeShortArray(packet.bbbb);
buffer.writeInt(packet.c);
buffer.writeInt(packet.cc);
buffer.writeIntArray(packet.ccc);
buffer.writeIntArray(packet.cccc);
buffer.writeLong(packet.d);
buffer.writeLong(packet.dd);
buffer.writeLongArray(packet.ddd);
buffer.writeLongArray(packet.dddd);
buffer.writeFloat(packet.e);
buffer.writeFloat(packet.ee);
buffer.writeFloatArray(packet.eee);
buffer.writeFloatArray(packet.eeee);
buffer.writeDouble(packet.f);
buffer.writeDouble(packet.ff);
buffer.writeDoubleArray(packet.fff);
buffer.writeDoubleArray(packet.ffff);
buffer.writeBoolean(packet.g);
buffer.writeBoolean(packet.gg);
buffer.writeBooleanArray(packet.ggg);
buffer.writeBooleanArray(packet.gggg);
buffer.writeChar(packet.h);
buffer.writeChar(packet.hh);
buffer.writeCharArray(packet.hhh);
buffer.writeCharArray(packet.hhhh);
buffer.writeString(packet.jj);
buffer.writeStringArray(packet.jjj);
buffer.writePacket(packet.kk, 102);
buffer.writePacketArray(packet.kkk, 102);
buffer.writeIntList(packet.l);
if (packet.ll === null) {
buffer.writeInt(0);
} else {
buffer.writeInt(packet.ll.length);
packet.ll.forEach(element0 => {
if (element0 === null) {
buffer.writeInt(0);
} else {
buffer.writeInt(element0.length);
element0.forEach(element1 => {
buffer.writeIntList(element1);
});
}
});
}
if (packet.lll === null) {
buffer.writeInt(0);
} else {
buffer.writeInt(packet.lll.length);
packet.lll.forEach(element2 => {
buffer.writePacketList(element2, 102);
});
}
buffer.writeStringList(packet.llll);
if (packet.lllll === null) {
buffer.writeInt(0);
} else {
buffer.writeInt(packet.lllll.length);
packet.lllll.forEach(element3 => {
buffer.writeIntStringMap(element3);
});
}
buffer.writeIntStringMap(packet.m);
buffer.writeIntPacketMap(packet.mm, 102);
if (packet.mmm === null) {
buffer.writeInt(0);
} else {
buffer.writeInt(packet.mmm.size);
packet.mmm.forEach((value5, key4) => {
buffer.writePacket(key4, 102);
buffer.writeIntList(value5);
});
}
if (packet.mmmm === null) {
buffer.writeInt(0);
} else {
buffer.writeInt(packet.mmmm.size);
packet.mmmm.forEach((value7, key6) => {
if (key6 === null) {
buffer.writeInt(0);
} else {
buffer.writeInt(key6.length);
key6.forEach(element8 => {
buffer.writePacketList(element8, 102);
});
}
if (value7 === null) {
buffer.writeInt(0);
} else {
buffer.writeInt(value7.length);
value7.forEach(element9 => {
if (element9 === null) {
buffer.writeInt(0);
} else {
buffer.writeInt(element9.length);
element9.forEach(element10 => {
buffer.writeIntList(element10);
});
}
});
}
});
}
if (packet.mmmmm === null) {
buffer.writeInt(0);
} else {
buffer.writeInt(packet.mmmmm.size);
packet.mmmmm.forEach((value12, key11) => {
if (key11 === null) {
buffer.writeInt(0);
} else {
buffer.writeInt(key11.length);
key11.forEach(element13 => {
buffer.writeIntStringMap(element13);
});
}
if (value12 === null) {
buffer.writeInt(0);
} else {
buffer.writeInt(value12.size);
value12.forEach(element14 => {
buffer.writeIntStringMap(element14);
});
}
});
}
buffer.writeIntSet(packet.s);
if (packet.ss === null) {
buffer.writeInt(0);
} else {
buffer.writeInt(packet.ss.size);
packet.ss.forEach(element15 => {
if (element15 === null) {
buffer.writeInt(0);
} else {
buffer.writeInt(element15.size);
element15.forEach(element16 => {
buffer.writeIntList(element16);
});
}
});
}
if (packet.sss === null) {
buffer.writeInt(0);
} else {
buffer.writeInt(packet.sss.size);
packet.sss.forEach(element17 => {
buffer.writePacketSet(element17, 102);
});
}
buffer.writeStringSet(packet.ssss);
if (packet.sssss === null) {
buffer.writeInt(0);
} else {
buffer.writeInt(packet.sssss.size);
packet.sssss.forEach(element18 => {
buffer.writeIntStringMap(element18);
});
}
buffer.writeInt(packet.myCompatible);
buffer.writePacket(packet.myObject, 102);
}
static read(buffer: any): ComplexObject | null {
if (!buffer.readBoolean()) {
return null;
}
const packet = new ComplexObject();
const result19 = buffer.readByte();
packet.a = result19;
const result20 = buffer.readByte();
packet.aa = result20;
const array21 = buffer.readByteArray();
packet.aaa = array21;
const array22 = buffer.readByteArray();
packet.aaaa = array22;
const result23 = buffer.readShort();
packet.b = result23;
const result24 = buffer.readShort();
packet.bb = result24;
const array25 = buffer.readShortArray();
packet.bbb = array25;
const array26 = buffer.readShortArray();
packet.bbbb = array26;
const result27 = buffer.readInt();
packet.c = result27;
const result28 = buffer.readInt();
packet.cc = result28;
const array29 = buffer.readIntArray();
packet.ccc = array29;
const array30 = buffer.readIntArray();
packet.cccc = array30;
const result31 = buffer.readLong();
packet.d = result31;
const result32 = buffer.readLong();
packet.dd = result32;
const array33 = buffer.readLongArray();
packet.ddd = array33;
const array34 = buffer.readLongArray();
packet.dddd = array34;
const result35 = buffer.readFloat();
packet.e = result35;
const result36 = buffer.readFloat();
packet.ee = result36;
const array37 = buffer.readFloatArray();
packet.eee = array37;
const array38 = buffer.readFloatArray();
packet.eeee = array38;
const result39 = buffer.readDouble();
packet.f = result39;
const result40 = buffer.readDouble();
packet.ff = result40;
const array41 = buffer.readDoubleArray();
packet.fff = array41;
const array42 = buffer.readDoubleArray();
packet.ffff = array42;
const result43 = buffer.readBoolean();
packet.g = result43;
const result44 = buffer.readBoolean();
packet.gg = result44;
const array45 = buffer.readBooleanArray();
packet.ggg = array45;
const array46 = buffer.readBooleanArray();
packet.gggg = array46;
const result47 = buffer.readChar();
packet.h = result47;
const result48 = buffer.readChar();
packet.hh = result48;
const array49 = buffer.readCharArray();
packet.hhh = array49;
const array50 = buffer.readCharArray();
packet.hhhh = array50;
const result51 = buffer.readString();
packet.jj = result51;
const array52 = buffer.readStringArray();
packet.jjj = array52;
const result53 = buffer.readPacket(102);
packet.kk = result53;
const array54 = buffer.readPacketArray(102);
packet.kkk = array54;
const list55 = buffer.readIntList();
packet.l = list55;
const result56 = new Array<Array<Array<number>>>();
const size57 = buffer.readInt();
if (size57 > 0) {
for (let index58 = 0; index58 < size57; index58++) {
const result59 = new Array<Array<number>>();
const size60 = buffer.readInt();
if (size60 > 0) {
for (let index61 = 0; index61 < size60; index61++) {
const list62 = buffer.readIntList();
result59.push(list62);
}
}
result56.push(result59);
}
}
packet.ll = result56;
const result63 = new Array<Array<ObjectA>>();
const size64 = buffer.readInt();
if (size64 > 0) {
for (let index65 = 0; index65 < size64; index65++) {
const list66 = buffer.readPacketList(102);
result63.push(list66);
}
}
packet.lll = result63;
const list67 = buffer.readStringList();
packet.llll = list67;
const result68 = new Array<Map<number, string>>();
const size69 = buffer.readInt();
if (size69 > 0) {
for (let index70 = 0; index70 < size69; index70++) {
const map71 = buffer.readIntStringMap();
result68.push(map71);
}
}
packet.lllll = result68;
const map72 = buffer.readIntStringMap();
packet.m = map72;
const map73 = buffer.readIntPacketMap(102);
packet.mm = map73;
const result74 = new Map<ObjectA, Array<number>>();
const size75 = buffer.readInt();
if (size75 > 0) {
for (let index76 = 0; index76 < size75; index76++) {
const result77 = buffer.readPacket(102);
const list78 = buffer.readIntList();
result74.set(result77, list78);
}
}
packet.mmm = result74;
const result79 = new Map<Array<Array<ObjectA>>, Array<Array<Array<number>>>>();
const size80 = buffer.readInt();
if (size80 > 0) {
for (let index81 = 0; index81 < size80; index81++) {
const result82 = new Array<Array<ObjectA>>();
const size83 = buffer.readInt();
if (size83 > 0) {
for (let index84 = 0; index84 < size83; index84++) {
const list85 = buffer.readPacketList(102);
result82.push(list85);
}
}
const result86 = new Array<Array<Array<number>>>();
const size87 = buffer.readInt();
if (size87 > 0) {
for (let index88 = 0; index88 < size87; index88++) {
const result89 = new Array<Array<number>>();
const size90 = buffer.readInt();
if (size90 > 0) {
for (let index91 = 0; index91 < size90; index91++) {
const list92 = buffer.readIntList();
result89.push(list92);
}
}
result86.push(result89);
}
}
result79.set(result82, result86);
}
}
packet.mmmm = result79;
const result93 = new Map<Array<Map<number, string>>, Set<Map<number, string>>>();
const size94 = buffer.readInt();
if (size94 > 0) {
for (let index95 = 0; index95 < size94; index95++) {
const result96 = new Array<Map<number, string>>();
const size97 = buffer.readInt();
if (size97 > 0) {
for (let index98 = 0; index98 < size97; index98++) {
const map99 = buffer.readIntStringMap();
result96.push(map99);
}
}
const result100 = new Set<Map<number, string>>();
const size101 = buffer.readInt();
if (size101 > 0) {
for (let index102 = 0; index102 < size101; index102++) {
const map103 = buffer.readIntStringMap();
result100.add(map103);
}
}
result93.set(result96, result100);
}
}
packet.mmmmm = result93;
const set104 = buffer.readIntSet();
packet.s = set104;
const result105 = new Set<Set<Array<number>>>();
const size106 = buffer.readInt();
if (size106 > 0) {
for (let index107 = 0; index107 < size106; index107++) {
const result108 = new Set<Array<number>>();
const size109 = buffer.readInt();
if (size109 > 0) {
for (let index110 = 0; index110 < size109; index110++) {
const list111 = buffer.readIntList();
result108.add(list111);
}
}
result105.add(result108);
}
}
packet.ss = result105;
const result112 = new Set<Set<ObjectA>>();
const size113 = buffer.readInt();
if (size113 > 0) {
for (let index114 = 0; index114 < size113; index114++) {
const set115 = buffer.readPacketSet(102);
result112.add(set115);
}
}
packet.sss = result112;
const set116 = buffer.readStringSet();
packet.ssss = set116;
const result117 = new Set<Map<number, string>>();
const size118 = buffer.readInt();
if (size118 > 0) {
for (let index119 = 0; index119 < size118; index119++) {
const map120 = buffer.readIntStringMap();
result117.add(map120);
}
}
packet.sssss = result117;
if (!buffer.isReadable()) {
return packet;
}
const result121 = buffer.readInt();
packet.myCompatible = result121;
if (!buffer.isReadable()) {
return packet;
}
const result122 = buffer.readPacket(102);
packet.myObject = result122;
return packet;
}
}
export default ComplexObject;
@@ -0,0 +1,104 @@
import ObjectA from './ObjectA';
import ObjectB from './ObjectB';
// @author jaysunxiao
// @version 3.0
class NormalObject {
a: number = 0;
aaa: Array<number> | null = null;
b: number = 0;
c: number = 0;
d: number = 0;
e: number = 0;
f: number = 0;
g: boolean = false;
jj: string = '';
kk: ObjectA | null = null;
l: Array<number> | null = null;
ll: Array<number> | null = null;
lll: Array<ObjectA> | null = null;
llll: Array<string> | null = null;
m: Map<number, string> | null = null;
mm: Map<number, ObjectA> | null = null;
s: Set<number> | null = null;
ssss: Set<string> | null = null;
protocolId(): number {
return 101;
}
static write(buffer: any, packet: NormalObject | null) {
if (buffer.writePacketFlag(packet)) {
return;
}
if (packet === null) {
return;
}
buffer.writeByte(packet.a);
buffer.writeByteArray(packet.aaa);
buffer.writeShort(packet.b);
buffer.writeInt(packet.c);
buffer.writeLong(packet.d);
buffer.writeFloat(packet.e);
buffer.writeDouble(packet.f);
buffer.writeBoolean(packet.g);
buffer.writeString(packet.jj);
buffer.writePacket(packet.kk, 102);
buffer.writeIntList(packet.l);
buffer.writeLongList(packet.ll);
buffer.writePacketList(packet.lll, 102);
buffer.writeStringList(packet.llll);
buffer.writeIntStringMap(packet.m);
buffer.writeIntPacketMap(packet.mm, 102);
buffer.writeIntSet(packet.s);
buffer.writeStringSet(packet.ssss);
}
static read(buffer: any): NormalObject | null {
if (!buffer.readBoolean()) {
return null;
}
const packet = new NormalObject();
const result0 = buffer.readByte();
packet.a = result0;
const array1 = buffer.readByteArray();
packet.aaa = array1;
const result2 = buffer.readShort();
packet.b = result2;
const result3 = buffer.readInt();
packet.c = result3;
const result4 = buffer.readLong();
packet.d = result4;
const result5 = buffer.readFloat();
packet.e = result5;
const result6 = buffer.readDouble();
packet.f = result6;
const result7 = buffer.readBoolean();
packet.g = result7;
const result8 = buffer.readString();
packet.jj = result8;
const result9 = buffer.readPacket(102);
packet.kk = result9;
const list10 = buffer.readIntList();
packet.l = list10;
const list11 = buffer.readLongList();
packet.ll = list11;
const list12 = buffer.readPacketList(102);
packet.lll = list12;
const list13 = buffer.readStringList();
packet.llll = list13;
const map14 = buffer.readIntStringMap();
packet.m = map14;
const map15 = buffer.readIntPacketMap(102);
packet.mm = map15;
const set16 = buffer.readIntSet();
packet.s = set16;
const set17 = buffer.readStringSet();
packet.ssss = set17;
return packet;
}
}
export default NormalObject;
@@ -0,0 +1,43 @@
import ObjectB from './ObjectB';
// @author jaysunxiao
// @version 3.0
class ObjectA {
a: number = 0;
m: Map<number, string> | null = null;
objectB: ObjectB | null = null;
protocolId(): number {
return 102;
}
static write(buffer: any, packet: ObjectA | null) {
if (buffer.writePacketFlag(packet)) {
return;
}
if (packet === null) {
return;
}
buffer.writeInt(packet.a);
buffer.writeIntStringMap(packet.m);
buffer.writePacket(packet.objectB, 103);
}
static read(buffer: any): ObjectA | null {
if (!buffer.readBoolean()) {
return null;
}
const packet = new ObjectA();
const result0 = buffer.readInt();
packet.a = result0;
const map1 = buffer.readIntStringMap();
packet.m = map1;
const result2 = buffer.readPacket(103);
packet.objectB = result2;
return packet;
}
}
export default ObjectA;
@@ -0,0 +1,34 @@
// @author jaysunxiao
// @version 3.0
class ObjectB {
flag: boolean = false;
protocolId(): number {
return 103;
}
static write(buffer: any, packet: ObjectB | null) {
if (buffer.writePacketFlag(packet)) {
return;
}
if (packet === null) {
return;
}
buffer.writeBoolean(packet.flag);
}
static read(buffer: any): ObjectB | null {
if (!buffer.readBoolean()) {
return null;
}
const packet = new ObjectB();
const result0 = buffer.readBoolean();
packet.flag = result0;
return packet;
}
}
export default ObjectB;
@@ -0,0 +1,38 @@
// @author jaysunxiao
// @version 3.0
class SimpleObject {
c: number = 0;
g: boolean = false;
protocolId(): number {
return 104;
}
static write(buffer: any, packet: SimpleObject | null) {
if (buffer.writePacketFlag(packet)) {
return;
}
if (packet === null) {
return;
}
buffer.writeInt(packet.c);
buffer.writeBoolean(packet.g);
}
static read(buffer: any): SimpleObject | null {
if (!buffer.readBoolean()) {
return null;
}
const packet = new SimpleObject();
const result0 = buffer.readInt();
packet.c = result0;
const result1 = buffer.readBoolean();
packet.g = result1;
return packet;
}
}
export default SimpleObject;