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:
parent
5241059fd2
commit
76f00f3f82
4 changed files with 42 additions and 1 deletions
5
package-lock.json
generated
5
package-lock.json
generated
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
};
|
||||
|
|
|
|||
29
src/tests/unit/Parser/Message/ConsoleCmdTest.ts
Normal file
29
src/tests/unit/Parser/Message/ConsoleCmdTest.ts
Normal 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);
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue