refactor data types

This commit is contained in:
Andrew Kelley 2013-01-07 22:20:40 -05:00
parent 8a6d4bc725
commit 5df31e4d88

View File

@ -447,43 +447,30 @@ var packets = {
]
};
var writers = {
'int': IntWriter,
'short': ShortWriter,
'ushort': UShortWriter,
'byte': ByteWriter,
'ubyte': UByteWriter,
'string': StringWriter,
'byteArray16': ByteArray16Writer,
'bool': BoolWriter,
'double': DoubleWriter,
'float': FloatWriter,
'slot': SlotWriter,
};
var types = {
'int': [readInt, IntWriter],
'short': [readShort, ShortWriter],
'ushort': [readUShort, UShortWriter],
'byte': [readByte, ByteWriter],
'ubyte': [readUByte, UByteWriter],
'string': [readString, StringWriter],
'byteArray16': [readByteArray16, ByteArray16Writer],
'bool': [readBool, BoolWriter],
'double': [readDouble, DoubleWriter],
'float': [readFloat, FloatWriter],
'slot': [readSlot, SlotWriter],
var readers = {
'string': readString,
'ascii': readAscii,
'byteArray16': readByteArray16,
'byteArray32': readByteArray32,
'short': readShort,
'ushort': readUShort,
'int': readInt,
'byte': readByte,
'ubyte': readUByte,
'long': readLong,
'slot': readSlot,
'bool': readBool,
'double': readDouble,
'float': readFloat,
'slotArray': readSlotArray,
'mapChunkBulk': readMapChunkBulk,
'entityMetadata': readEntityMetadata,
'objectData': readObjectData,
'intArray8': readIntArray8,
'intVector': readIntVector,
'byteVector': readByteVector,
'byteVectorArray': readByteVectorArray,
'ascii': [readAscii],
'byteArray32': [readByteArray32],
'long': [readLong],
'slotArray': [readSlotArray],
'mapChunkBulk': [readMapChunkBulk],
'entityMetadata': [readEntityMetadata],
'objectData': [readObjectData],
'intArray8': [readIntArray8],
'intVector': [readIntVector],
'byteVector': [readByteVector],
'byteVectorArray': [readByteVectorArray],
};
var entityMetadataReaders = {
@ -997,7 +984,7 @@ function createPacketBuffer(packetId, params, isServer) {
var packet = get(packetId, isServer);
packet.forEach(function(fieldInfo) {
var value = params[fieldInfo.name];
var Writer = writers[fieldInfo.type];
var Writer = types[fieldInfo.type][1];
assert.ok(Writer, "missing writer for data type: " + fieldInfo.type);
var field = new Writer(value);
size += field.size;
@ -1022,7 +1009,7 @@ function parsePacket(buffer, isServer) {
var i, fieldInfo, read, readResults;
for (i = 0; i < packetInfo.length; ++i) {
fieldInfo = packetInfo[i];
read = readers[fieldInfo.type];
read = types[fieldInfo.type][0];
assert.ok(read, "missing reader for data type: " + fieldInfo.type);
readResults = read(buffer, size);
if (readResults) {