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