From c597436b70b309b39433c93f000c2da981e1bd8f Mon Sep 17 00:00:00 2001 From: Xabier de Zuazo Date: Thu, 11 Jul 2013 12:08:46 +0200 Subject: [PATCH] packet 0x2c: properties updated to support 1.6.2 version (elementList added) --- lib/protocol.js | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/lib/protocol.js b/lib/protocol.js index 7b8a014..d212f37 100644 --- a/lib/protocol.js +++ b/lib/protocol.js @@ -731,6 +731,9 @@ function sizeOfPropertyArray(value) { var size = 4; for (var i = 0; i < value.length; ++i) { size += sizeOfString(value[i].key) + types['double'][2]; + for (var j = 0; j < value[i].elementList.length; j++) { + size += types['long'][2] + types['long'][2] + types['double'][2] + types['byte'][2]; + } } return size; } @@ -741,6 +744,13 @@ function writePropertyArray(value, buffer, offset) { for (var i = 0; i < value.length; ++i) { offset = writeString(value[i].key, buffer, offset); offset = writeDouble(value[i].value, buffer, offset); + offset = writeShort(value[i].elementList.length, buffer, offset); + for (var j = 0; j < value[i].elementList.length; j++) { + offset = writeLong(value[i].elementList[j].uuid_msb, buffer, offset); + offset = writeLong(value[i].elementList[j].uuid_lsb, buffer, offset); + offset = writeDouble(value[i].elementList[j].amount, buffer, offset); + offset = writeByte(value[i].elementList[j].operation, buffer, offset); + } } return offset; } @@ -1057,6 +1067,7 @@ function readPropertyArray (buffer, offset) { var propertyArray = []; for (var i = 0; i < count; ++i) { var property = {}; + var elementListLength; results = readString(buffer, cursor); if (! results) return null; @@ -1068,6 +1079,37 @@ function readPropertyArray (buffer, offset) { property.value = results.value; cursor += results.size; + results = readShort(buffer, cursor); + if (! results) return null; + elementListLength = results.value; + cursor += results.size; + + property.elementList = []; + for (var j = 0; j < elementListLength ; j++) { + property.elementList[j] = {} + + results = readLong(buffer, cursor); + if (! results) return null; + property.elementList[j].uuid_msb = results.value; + cursor += results.size; + + results = readLong(buffer, cursor); + if (! results) return null; + property.elementList[j].uuid_lsb = results.value; + cursor += results.size; + + results = readDouble(buffer, cursor); + if (! results) return null; + property.elementList[j].amount = results.value; + cursor += results.size; + + results = readByte(buffer, cursor); + if (! results) return null; + property.elementList[j].operation = results.value; + cursor += results.size; + + } + propertyArray.push(property); }