42 lines
1.0 KiB
TypeScript
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;
|
|
}
|
|
} |