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

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);
});
});