1
0
Fork 0
mirror of https://github.com/demostf/demo.js synced 2026-06-04 00:54:14 +02:00

add encoder for consolecmd message

This commit is contained in:
Robin Appelman 2017-09-24 17:27:22 +02:00
commit 76f00f3f82
4 changed files with 42 additions and 1 deletions

5
package-lock.json generated
View file

@ -679,6 +679,11 @@
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true
},
"text-encoding-shim": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/text-encoding-shim/-/text-encoding-shim-1.0.0.tgz",
"integrity": "sha1-3C8y0Kb2IeOalsShWo7NzTGHwNY="
},
"through2": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",

View file

@ -12,7 +12,8 @@
"bit-buffer": "^0.2.3",
"clone": "^2.1.0",
"minimist": "1.1.x",
"snappyjs": "^0.5.0"
"snappyjs": "^0.5.0",
"text-encoding-shim": "^1.0.0"
},
"devDependencies": {
"@types/node": "^6.0.52",

View file

@ -2,6 +2,7 @@ import {ConsoleCmdPacket} from '../../Data/Packet';
import {Parser} from './Parser';
import {BitStream} from 'bit-buffer';
import {ConsoleCmdMessage, MessageHandler, MessageType} from '../../Data/Message';
import {TextEncoder} from 'text-encoding-shim';
export class ConsoleCmd extends Parser {
public parse(): ConsoleCmdPacket[] {
@ -27,6 +28,11 @@ export const ConsoleCmdHandler: MessageHandler<ConsoleCmdMessage> = {
};
},
encodeMessage: (message: ConsoleCmdMessage, stream: BitStream) => {
stream.writeUint32(message.tick);
const byteLength = (new TextEncoder('utf-8').encode(message.command)).length + 1; // +1 for null termination
stream.writeUint32(byteLength);
stream.writeUTF8String(message.command);
}
};

View file

@ -0,0 +1,29 @@
import {BitStream} from 'bit-buffer';
import {assertEncoder} from '../Packet/PacketTest';
import {ConsoleCmdHandler} from '../../../../Parser/Message/ConsoleCmd';
import {ParserState} from '../../../../Data/ParserState';
import {MessageType} from '../../../../Data/Message';
function parse(stream) {
const result = ConsoleCmdHandler.parseMessage(stream, new ParserState());
delete result.rawData;
return result;
}
suite('ConsoleCmd', () => {
test('Encode ConsoleCmd message', () => {
assertEncoder(parse, ConsoleCmdHandler.encodeMessage, {
type: MessageType.ConsoleCmd,
tick: 1234,
command: 'foobar'
}, 120);
});
test('Encode ConsoleCmd message unicode', () => {
assertEncoder(parse, ConsoleCmdHandler.encodeMessage, {
type: MessageType.ConsoleCmd,
tick: 1234,
command: 'smile☺'
}, 136);
});
});