mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-05-31 04:24:00 +00:00
test[es]: ECMAScript test
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
import ByteBuffer from './zfooes/buffer/ByteBuffer.mjs';
|
||||
import ProtocolManager from './zfooes/ProtocolManager.mjs';
|
||||
import fs from "fs";
|
||||
|
||||
function assert(flag) {
|
||||
if (!flag) {
|
||||
console.error("exception happen");
|
||||
}
|
||||
}
|
||||
|
||||
const data = fs.readFileSync('D:\\Project\\zfoo\\protocol\\src\\test\\resources\\compatible\\normal-no-compatible.bytes');
|
||||
// const data = fs.readFileSync('D:\\Project\\zfoo\\protocol\\src\\test\\resources\\compatible\\normal-out-compatible.bytes');
|
||||
// const data = fs.readFileSync('D:\\Project\\zfoo\\protocol\\src\\test\\resources\\compatible\\normal-inner-compatible.bytes');
|
||||
// const data = fs.readFileSync('D:\\Project\\zfoo\\protocol\\src\\test\\resources\\compatible\\normal-out-inner-compatible.bytes');
|
||||
// const data = fs.readFileSync('D:\\Project\\zfoo\\protocol\\src\\test\\resources\\compatible\\normal-out-inner-inner-compatible.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);
|
||||
console.log(packet);
|
||||
|
||||
const newByteBuffer = new ByteBuffer();
|
||||
ProtocolManager.write(newByteBuffer, packet);
|
||||
|
||||
const newPacket = ProtocolManager.read(newByteBuffer);
|
||||
console.log(newPacket);
|
||||
console.log("source size " + byteBuffer.getWriteOffset());
|
||||
console.log("target size " + newByteBuffer.getWriteOffset());
|
||||
|
||||
// set和map是无序的,所以有的时候输入和输出的字节流有可能不一致,但是长度一定是一致的
|
||||
// assert(byteBuffer.readOffset == newByteBuffer.writeOffset)
|
||||
byteBufferTest();
|
||||
|
||||
|
||||
function byteBufferTest() {
|
||||
let buffer = new ByteBuffer();
|
||||
assert(buffer.getCapacity() == 128);
|
||||
|
||||
// boolean
|
||||
const testBoolean = [false, true];
|
||||
testBoolean.forEach((value) => {
|
||||
buffer.writeBoolean(value);
|
||||
assert(buffer.readBoolean() == value);
|
||||
});
|
||||
|
||||
assert(buffer.writeOffset == testBoolean.length);
|
||||
assert(buffer.readOffset == testBoolean.length);
|
||||
|
||||
// byte
|
||||
buffer = new ByteBuffer();
|
||||
const testByte = [-128, -99, 0, 99, 127];
|
||||
testByte.forEach((value) => {
|
||||
buffer.writeByte(value);
|
||||
assert(buffer.readByte() == value);
|
||||
});
|
||||
assert(buffer.writeOffset == testByte.length);
|
||||
assert(buffer.readOffset == testByte.length);
|
||||
|
||||
// short
|
||||
buffer = new ByteBuffer();
|
||||
const testShort = [-32768, -99, 0, 99, 32767];
|
||||
testShort.forEach((value) => {
|
||||
buffer.writeShort(value);
|
||||
assert(buffer.readShort() == value);
|
||||
});
|
||||
assert(buffer.writeOffset == testShort.length * 2);
|
||||
assert(buffer.readOffset == testShort.length * 2);
|
||||
|
||||
// int
|
||||
buffer = new ByteBuffer();
|
||||
const testInt = [-2147483648, -99, 0, 99, 2147483647];
|
||||
testInt.forEach((value) => {
|
||||
buffer.writeInt(value);
|
||||
assert(buffer.readInt() == value);
|
||||
});
|
||||
|
||||
// float
|
||||
buffer = new ByteBuffer();
|
||||
const testFloat = [-999.5, -99.5, 0, 99.5, 999.5];
|
||||
testFloat.forEach((value) => {
|
||||
buffer.writeFloat(value);
|
||||
assert(buffer.readFloat() == value);
|
||||
});
|
||||
|
||||
// double
|
||||
buffer = new ByteBuffer();
|
||||
const testDouble = [-999.5, -99.5, 0, 99.5, 999.5];
|
||||
testDouble.forEach((value) => {
|
||||
buffer.writeDouble(value);
|
||||
assert(buffer.readDouble() == value);
|
||||
});
|
||||
|
||||
// string
|
||||
buffer = new ByteBuffer();
|
||||
const testString = 'hello world!';
|
||||
buffer.writeString(testString);
|
||||
assert(buffer.readString() == testString);
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"name": "zfoo-ecmascript",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "main.js",
|
||||
"type": "module",
|
||||
"devDependencies": {
|
||||
"express": "^4.18.2"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
import EmptyObject from './packet/EmptyObject.mjs';
|
||||
import VeryBigObject from './packet/VeryBigObject.mjs';
|
||||
import ComplexObject from './packet/ComplexObject.mjs';
|
||||
import NormalObject from './packet/NormalObject.mjs';
|
||||
import ObjectA from './packet/ObjectA.mjs';
|
||||
import ObjectB from './packet/ObjectB.mjs';
|
||||
import SimpleObject from './packet/SimpleObject.mjs';
|
||||
|
||||
const protocols = new Map();
|
||||
|
||||
// initProtocol
|
||||
protocols.set(0, EmptyObject);
|
||||
protocols.set(1, VeryBigObject);
|
||||
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) {
|
||||
const protocol = protocols.get(protocolId);
|
||||
if (protocol === null) {
|
||||
throw new Error('[protocolId:' + protocolId + ']协议不存在');
|
||||
}
|
||||
return protocol;
|
||||
}
|
||||
|
||||
static write(buffer, packet) {
|
||||
const protocolId = packet.protocolId();
|
||||
buffer.writeShort(protocolId);
|
||||
const protocol = ProtocolManager.getProtocol(protocolId);
|
||||
protocol.write(buffer, packet);
|
||||
}
|
||||
|
||||
static read(buffer) {
|
||||
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,184 @@
|
||||
// from protobuf
|
||||
import Long from './long.mjs';
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
|
||||
|
||||
export function writeInt64(byteBuffer, value) {
|
||||
const bits = from(value).zzEncode();
|
||||
writeVarint64(byteBuffer, bits);
|
||||
}
|
||||
|
||||
export function readInt64(buffer) {
|
||||
return readLongVarint(buffer).zzDecode().toLong(false);
|
||||
}
|
||||
@@ -0,0 +1,468 @@
|
||||
// 复杂的对象,包括了各种复杂的结构,数组,List,Set,Map
|
||||
class ComplexObject {
|
||||
// byte类型,最简单的整形
|
||||
a = 0; // number
|
||||
// byte的包装类型,优先使用基础类型,包装类型会有装箱拆箱
|
||||
aa = 0; // number
|
||||
// 数组类型
|
||||
aaa = []; // Array<number>
|
||||
aaaa = []; // Array<number>
|
||||
b = 0; // number
|
||||
bb = 0; // number
|
||||
bbb = []; // Array<number>
|
||||
bbbb = []; // Array<number>
|
||||
c = 0; // number
|
||||
cc = 0; // number
|
||||
ccc = []; // Array<number>
|
||||
cccc = []; // Array<number>
|
||||
d = 0; // number
|
||||
dd = 0; // number
|
||||
ddd = []; // Array<number>
|
||||
dddd = []; // Array<number>
|
||||
e = 0; // number
|
||||
ee = 0; // number
|
||||
eee = []; // Array<number>
|
||||
eeee = []; // Array<number>
|
||||
f = 0; // number
|
||||
ff = 0; // number
|
||||
fff = []; // Array<number>
|
||||
ffff = []; // Array<number>
|
||||
g = false; // boolean
|
||||
gg = false; // boolean
|
||||
ggg = []; // Array<boolean>
|
||||
gggg = []; // Array<boolean>
|
||||
jj = ""; // string
|
||||
jjj = []; // Array<string>
|
||||
kk = null; // ObjectA | null
|
||||
kkk = []; // Array<ObjectA>
|
||||
l = []; // Array<number>
|
||||
ll = []; // Array<Array<Array<number>>>
|
||||
lll = []; // Array<Array<ObjectA>>
|
||||
llll = []; // Array<string>
|
||||
lllll = []; // Array<Map<number, string>>
|
||||
m = new Map(); // Map<number, string>
|
||||
mm = new Map(); // Map<number, ObjectA>
|
||||
mmm = new Map(); // Map<ObjectA, Array<number>>
|
||||
mmmm = new Map(); // Map<Array<Array<ObjectA>>, Array<Array<Array<number>>>>
|
||||
mmmmm = new Map(); // Map<Array<Map<number, string>>, Set<Map<number, string>>>
|
||||
s = new Set(); // Set<number>
|
||||
ss = new Set(); // Set<Set<Array<number>>>
|
||||
sss = new Set(); // Set<Set<ObjectA>>
|
||||
ssss = new Set(); // Set<string>
|
||||
sssss = new Set(); // Set<Map<number, string>>
|
||||
// 如果要修改协议并且兼容老协议,需要加上Compatible注解,保持Compatible注解的value自增
|
||||
myCompatible = 0; // number
|
||||
myObject = null; // ObjectA | null
|
||||
|
||||
static PROTOCOL_ID = 100;
|
||||
|
||||
protocolId() {
|
||||
return ComplexObject.PROTOCOL_ID;
|
||||
}
|
||||
|
||||
static write(buffer, packet) {
|
||||
if (packet === null) {
|
||||
buffer.writeInt(0);
|
||||
return;
|
||||
}
|
||||
const beforeWriteIndex = buffer.getWriteOffset();
|
||||
buffer.writeInt(36962);
|
||||
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.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);
|
||||
buffer.adjustPadding(36962, beforeWriteIndex);
|
||||
}
|
||||
|
||||
static read(buffer) {
|
||||
const length = buffer.readInt();
|
||||
if (length === 0) {
|
||||
return null;
|
||||
}
|
||||
const beforeReadIndex = buffer.getReadOffset();
|
||||
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.readString();
|
||||
packet.jj = result47;
|
||||
const array48 = buffer.readStringArray();
|
||||
packet.jjj = array48;
|
||||
const result49 = buffer.readPacket(102);
|
||||
packet.kk = result49;
|
||||
const array50 = buffer.readPacketArray(102);
|
||||
packet.kkk = array50;
|
||||
const list51 = buffer.readIntList();
|
||||
packet.l = list51;
|
||||
const result52 = [];
|
||||
const size53 = buffer.readInt();
|
||||
if (size53 > 0) {
|
||||
for (let index54 = 0; index54 < size53; index54++) {
|
||||
const result55 = [];
|
||||
const size56 = buffer.readInt();
|
||||
if (size56 > 0) {
|
||||
for (let index57 = 0; index57 < size56; index57++) {
|
||||
const list58 = buffer.readIntList();
|
||||
result55.push(list58);
|
||||
}
|
||||
}
|
||||
result52.push(result55);
|
||||
}
|
||||
}
|
||||
packet.ll = result52;
|
||||
const result59 = [];
|
||||
const size60 = buffer.readInt();
|
||||
if (size60 > 0) {
|
||||
for (let index61 = 0; index61 < size60; index61++) {
|
||||
const list62 = buffer.readPacketList(102);
|
||||
result59.push(list62);
|
||||
}
|
||||
}
|
||||
packet.lll = result59;
|
||||
const list63 = buffer.readStringList();
|
||||
packet.llll = list63;
|
||||
const result64 = [];
|
||||
const size65 = buffer.readInt();
|
||||
if (size65 > 0) {
|
||||
for (let index66 = 0; index66 < size65; index66++) {
|
||||
const map67 = buffer.readIntStringMap();
|
||||
result64.push(map67);
|
||||
}
|
||||
}
|
||||
packet.lllll = result64;
|
||||
const map68 = buffer.readIntStringMap();
|
||||
packet.m = map68;
|
||||
const map69 = buffer.readIntPacketMap(102);
|
||||
packet.mm = map69;
|
||||
const result70 = new Map();
|
||||
const size71 = buffer.readInt();
|
||||
if (size71 > 0) {
|
||||
for (let index72 = 0; index72 < size71; index72++) {
|
||||
const result73 = buffer.readPacket(102);
|
||||
const list74 = buffer.readIntList();
|
||||
result70.set(result73, list74);
|
||||
}
|
||||
}
|
||||
packet.mmm = result70;
|
||||
const result75 = new Map();
|
||||
const size76 = buffer.readInt();
|
||||
if (size76 > 0) {
|
||||
for (let index77 = 0; index77 < size76; index77++) {
|
||||
const result78 = [];
|
||||
const size79 = buffer.readInt();
|
||||
if (size79 > 0) {
|
||||
for (let index80 = 0; index80 < size79; index80++) {
|
||||
const list81 = buffer.readPacketList(102);
|
||||
result78.push(list81);
|
||||
}
|
||||
}
|
||||
const result82 = [];
|
||||
const size83 = buffer.readInt();
|
||||
if (size83 > 0) {
|
||||
for (let index84 = 0; index84 < size83; index84++) {
|
||||
const result85 = [];
|
||||
const size86 = buffer.readInt();
|
||||
if (size86 > 0) {
|
||||
for (let index87 = 0; index87 < size86; index87++) {
|
||||
const list88 = buffer.readIntList();
|
||||
result85.push(list88);
|
||||
}
|
||||
}
|
||||
result82.push(result85);
|
||||
}
|
||||
}
|
||||
result75.set(result78, result82);
|
||||
}
|
||||
}
|
||||
packet.mmmm = result75;
|
||||
const result89 = new Map();
|
||||
const size90 = buffer.readInt();
|
||||
if (size90 > 0) {
|
||||
for (let index91 = 0; index91 < size90; index91++) {
|
||||
const result92 = [];
|
||||
const size93 = buffer.readInt();
|
||||
if (size93 > 0) {
|
||||
for (let index94 = 0; index94 < size93; index94++) {
|
||||
const map95 = buffer.readIntStringMap();
|
||||
result92.push(map95);
|
||||
}
|
||||
}
|
||||
const result96 = new Set();
|
||||
const size97 = buffer.readInt();
|
||||
if (size97 > 0) {
|
||||
for (let index98 = 0; index98 < size97; index98++) {
|
||||
const map99 = buffer.readIntStringMap();
|
||||
result96.add(map99);
|
||||
}
|
||||
}
|
||||
result89.set(result92, result96);
|
||||
}
|
||||
}
|
||||
packet.mmmmm = result89;
|
||||
const set100 = buffer.readIntSet();
|
||||
packet.s = set100;
|
||||
const result101 = new Set();
|
||||
const size102 = buffer.readInt();
|
||||
if (size102 > 0) {
|
||||
for (let index103 = 0; index103 < size102; index103++) {
|
||||
const result104 = new Set();
|
||||
const size105 = buffer.readInt();
|
||||
if (size105 > 0) {
|
||||
for (let index106 = 0; index106 < size105; index106++) {
|
||||
const list107 = buffer.readIntList();
|
||||
result104.add(list107);
|
||||
}
|
||||
}
|
||||
result101.add(result104);
|
||||
}
|
||||
}
|
||||
packet.ss = result101;
|
||||
const result108 = new Set();
|
||||
const size109 = buffer.readInt();
|
||||
if (size109 > 0) {
|
||||
for (let index110 = 0; index110 < size109; index110++) {
|
||||
const set111 = buffer.readPacketSet(102);
|
||||
result108.add(set111);
|
||||
}
|
||||
}
|
||||
packet.sss = result108;
|
||||
const set112 = buffer.readStringSet();
|
||||
packet.ssss = set112;
|
||||
const result113 = new Set();
|
||||
const size114 = buffer.readInt();
|
||||
if (size114 > 0) {
|
||||
for (let index115 = 0; index115 < size114; index115++) {
|
||||
const map116 = buffer.readIntStringMap();
|
||||
result113.add(map116);
|
||||
}
|
||||
}
|
||||
packet.sssss = result113;
|
||||
if (buffer.compatibleRead(beforeReadIndex, length)) {
|
||||
const result117 = buffer.readInt();
|
||||
packet.myCompatible = result117;
|
||||
}
|
||||
if (buffer.compatibleRead(beforeReadIndex, length)) {
|
||||
const result118 = buffer.readPacket(102);
|
||||
packet.myObject = result118;
|
||||
}
|
||||
if (length > 0) {
|
||||
buffer.setReadOffset(beforeReadIndex + length);
|
||||
}
|
||||
return packet;
|
||||
}
|
||||
|
||||
}
|
||||
export default ComplexObject;
|
||||
@@ -0,0 +1,34 @@
|
||||
|
||||
class EmptyObject {
|
||||
|
||||
|
||||
static PROTOCOL_ID = 0;
|
||||
|
||||
protocolId() {
|
||||
return EmptyObject.PROTOCOL_ID;
|
||||
}
|
||||
|
||||
static write(buffer, packet) {
|
||||
if (packet === null) {
|
||||
buffer.writeInt(0);
|
||||
return;
|
||||
}
|
||||
buffer.writeInt(-1);
|
||||
}
|
||||
|
||||
static read(buffer) {
|
||||
const length = buffer.readInt();
|
||||
if (length === 0) {
|
||||
return null;
|
||||
}
|
||||
const beforeReadIndex = buffer.getReadOffset();
|
||||
const packet = new EmptyObject();
|
||||
|
||||
if (length > 0) {
|
||||
buffer.setReadOffset(beforeReadIndex + length);
|
||||
}
|
||||
return packet;
|
||||
}
|
||||
|
||||
}
|
||||
export default EmptyObject;
|
||||
@@ -0,0 +1,104 @@
|
||||
|
||||
class NormalObject {
|
||||
a = 0; // number
|
||||
aaa = []; // Array<number>
|
||||
b = 0; // number
|
||||
c = 0; // number
|
||||
d = 0; // number
|
||||
e = 0; // number
|
||||
f = 0; // number
|
||||
g = false; // boolean
|
||||
jj = ""; // string
|
||||
kk = null; // ObjectA | null
|
||||
l = []; // Array<number>
|
||||
ll = []; // Array<number>
|
||||
lll = []; // Array<ObjectA>
|
||||
llll = []; // Array<string>
|
||||
m = new Map(); // Map<number, string>
|
||||
mm = new Map(); // Map<number, ObjectA>
|
||||
s = new Set(); // Set<number>
|
||||
ssss = new Set(); // Set<string>
|
||||
|
||||
static PROTOCOL_ID = 101;
|
||||
|
||||
protocolId() {
|
||||
return NormalObject.PROTOCOL_ID;
|
||||
}
|
||||
|
||||
static write(buffer, packet) {
|
||||
if (packet === null) {
|
||||
buffer.writeInt(0);
|
||||
return;
|
||||
}
|
||||
buffer.writeInt(-1);
|
||||
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) {
|
||||
const length = buffer.readInt();
|
||||
if (length === 0) {
|
||||
return null;
|
||||
}
|
||||
const beforeReadIndex = buffer.getReadOffset();
|
||||
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;
|
||||
if (length > 0) {
|
||||
buffer.setReadOffset(beforeReadIndex + length);
|
||||
}
|
||||
return packet;
|
||||
}
|
||||
|
||||
}
|
||||
export default NormalObject;
|
||||
@@ -0,0 +1,44 @@
|
||||
|
||||
class ObjectA {
|
||||
a = 0; // number
|
||||
m = new Map(); // Map<number, string>
|
||||
objectB = null; // ObjectB | null
|
||||
|
||||
static PROTOCOL_ID = 102;
|
||||
|
||||
protocolId() {
|
||||
return ObjectA.PROTOCOL_ID;
|
||||
}
|
||||
|
||||
static write(buffer, packet) {
|
||||
if (packet === null) {
|
||||
buffer.writeInt(0);
|
||||
return;
|
||||
}
|
||||
buffer.writeInt(-1);
|
||||
buffer.writeInt(packet.a);
|
||||
buffer.writeIntStringMap(packet.m);
|
||||
buffer.writePacket(packet.objectB, 103);
|
||||
}
|
||||
|
||||
static read(buffer) {
|
||||
const length = buffer.readInt();
|
||||
if (length === 0) {
|
||||
return null;
|
||||
}
|
||||
const beforeReadIndex = buffer.getReadOffset();
|
||||
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;
|
||||
if (length > 0) {
|
||||
buffer.setReadOffset(beforeReadIndex + length);
|
||||
}
|
||||
return packet;
|
||||
}
|
||||
|
||||
}
|
||||
export default ObjectA;
|
||||
@@ -0,0 +1,36 @@
|
||||
|
||||
class ObjectB {
|
||||
flag = false; // boolean
|
||||
|
||||
static PROTOCOL_ID = 103;
|
||||
|
||||
protocolId() {
|
||||
return ObjectB.PROTOCOL_ID;
|
||||
}
|
||||
|
||||
static write(buffer, packet) {
|
||||
if (packet === null) {
|
||||
buffer.writeInt(0);
|
||||
return;
|
||||
}
|
||||
buffer.writeInt(-1);
|
||||
buffer.writeBoolean(packet.flag);
|
||||
}
|
||||
|
||||
static read(buffer) {
|
||||
const length = buffer.readInt();
|
||||
if (length === 0) {
|
||||
return null;
|
||||
}
|
||||
const beforeReadIndex = buffer.getReadOffset();
|
||||
const packet = new ObjectB();
|
||||
const result0 = buffer.readBoolean();
|
||||
packet.flag = result0;
|
||||
if (length > 0) {
|
||||
buffer.setReadOffset(beforeReadIndex + length);
|
||||
}
|
||||
return packet;
|
||||
}
|
||||
|
||||
}
|
||||
export default ObjectB;
|
||||
@@ -0,0 +1,40 @@
|
||||
|
||||
class SimpleObject {
|
||||
c = 0; // number
|
||||
g = false; // boolean
|
||||
|
||||
static PROTOCOL_ID = 104;
|
||||
|
||||
protocolId() {
|
||||
return SimpleObject.PROTOCOL_ID;
|
||||
}
|
||||
|
||||
static write(buffer, packet) {
|
||||
if (packet === null) {
|
||||
buffer.writeInt(0);
|
||||
return;
|
||||
}
|
||||
buffer.writeInt(-1);
|
||||
buffer.writeInt(packet.c);
|
||||
buffer.writeBoolean(packet.g);
|
||||
}
|
||||
|
||||
static read(buffer) {
|
||||
const length = buffer.readInt();
|
||||
if (length === 0) {
|
||||
return null;
|
||||
}
|
||||
const beforeReadIndex = buffer.getReadOffset();
|
||||
const packet = new SimpleObject();
|
||||
const result0 = buffer.readInt();
|
||||
packet.c = result0;
|
||||
const result1 = buffer.readBoolean();
|
||||
packet.g = result1;
|
||||
if (length > 0) {
|
||||
buffer.setReadOffset(beforeReadIndex + length);
|
||||
}
|
||||
return packet;
|
||||
}
|
||||
|
||||
}
|
||||
export default SimpleObject;
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user