2025-04-24 17:03:28 +08:00

42 lines
1.0 KiB
TypeScript

import * as ByteBuffer from "../3rd/bytebuffer";
import SKSocket from "./SKSocket";
export default class SKPacket{
prefix:string;
constructor(){
}
static create(prefix:string):SKPacket{
let packet=new SKPacket();
packet.prefix=prefix;
return packet;
}
encode(properties:any):any{
let msg=SKSocket.pbroot.lookupType(`${SKSocket.pbname}.${this.prefix}`);
if(!msg){
return;
}
let packet=msg.create(properties);
let body:Uint8Array=msg.encode(packet).finish();
if(!body){
return;
}
let buffer=new ByteBuffer();
buffer.writeShort(this.prefix.length);
buffer.writeString(this.prefix);
buffer.writeString("MH");
buffer.append(body);
buffer.flip();
let result=buffer.toBuffer();
return result;
}
decode(buffer:Uint8Array):any{
let msg=SKSocket.pbroot.lookupType(`${SKSocket.pbname}.${this.prefix}`);
let result=msg.decode(buffer);
return result;
}
}