Skip to content

Commit

Permalink
Merge pull request particle-iot#14 from AntonPuko/messagesBufferFix
Browse files Browse the repository at this point in the history
fix wrong returning value in  fromBinary().
  • Loading branch information
jlkalberer authored Jan 3, 2017
2 parents 7fd7625 + c631a76 commit ecd803d
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 41 deletions.
34 changes: 14 additions & 20 deletions lib/lib/Messages.js
Original file line number Diff line number Diff line change
Expand Up @@ -266,77 +266,71 @@ var Messages = function Messages() {
}
};

this.tryfromBinary = function (buffer, typeName) {
this.tryFromBinary = function (buffer, typeName) {
var result = null;
try {
result = _this.fromBinary(buffer, typeName);
} catch (exception) {
_logger2.default.error('Could not parse type: ${typeName} ${buffer}', exception);
} catch (error) {
_logger2.default.error('Could not parse type: ${typeName} ${buffer}', error);
}
return result;
};

this.fromBinary = function (buffer, typeName) {
//logger.log('converting a ' + name + ' fromBinary input was ' + buf);

if (!Buffer.isBuffer(buffer)) {
buffer = new Buffer(buffer);
}

var newBuffer = new _h2.BufferReader(buffer);
var bufferReader = new _h2.BufferReader(buffer);

switch (typeName) {
case 'bool':
{
return !!newBuffer.shiftByte();
return !!bufferReader.shiftByte();
}

case 'byte':
{
return newBuffer.shiftByte();
return bufferReader.shiftByte();
}

case 'crc':
{
return newBuffer.shiftUInt32();
return bufferReader.shiftUInt32();
}

case 'uint32':
{
return newBuffer.shiftUInt32();
return bufferReader.shiftUInt32();
}

case 'uint16':
{
return newBuffer.shiftUInt16();
return bufferReader.shiftUInt16();
}

case 'int32':
case 'number':
{
return newBuffer.shiftInt32();
return bufferReader.shiftInt32();
}

case 'float':
{
return newBuffer.shiftFloat();
return bufferReader.shiftFloat();
}

case 'double':
{
//doubles on the core are little-endian
return newBuffer.shiftDouble(true);
return bufferReader.shiftDouble(true);
}

case 'buffer':
{
return newBuffer.getPayload();
return bufferReader.buffer;
}

case 'string':
default:
{
return newBuffer.toString();
return bufferReader.buffer.toString();
}
}
};
Expand Down
36 changes: 15 additions & 21 deletions src/lib/Messages.js
Original file line number Diff line number Diff line change
Expand Up @@ -255,67 +255,61 @@ class Messages {
}
};

tryfromBinary = <TType>(buffer: Buffer, typeName: string): ?TType => {
var result = null;
tryFromBinary = <TType>(buffer: Buffer, typeName: string): ?TType => {
let result = null;
try {
result = this.fromBinary(buffer, typeName);
} catch (exception) {
logger.error('Could not parse type: ${typeName} ${buffer}', exception);
} catch (error) {
logger.error('Could not parse type: ${typeName} ${buffer}', error);
}
return result;
};

fromBinary = <TType>(buffer: Buffer, typeName: string): TType => {
//logger.log('converting a ' + name + ' fromBinary input was ' + buf);

if (!Buffer.isBuffer(buffer)) {
buffer = new Buffer(buffer);
}

var newBuffer = new BufferReader(buffer);
const bufferReader = new BufferReader(buffer);

switch (typeName) {
case 'bool': {
return !!newBuffer.shiftByte();
return !!bufferReader.shiftByte();
}

case 'byte': {
return newBuffer.shiftByte();
return bufferReader.shiftByte();
}

case 'crc': {
return newBuffer.shiftUInt32();
return bufferReader.shiftUInt32();
}

case 'uint32': {
return newBuffer.shiftUInt32();
return bufferReader.shiftUInt32();
}

case 'uint16': {
return newBuffer.shiftUInt16();
return bufferReader.shiftUInt16();
}

case 'int32':
case 'number': {
return newBuffer.shiftInt32();
return bufferReader.shiftInt32();
}

case 'float': {
return newBuffer.shiftFloat();
return bufferReader.shiftFloat();
}

case 'double': {
//doubles on the core are little-endian
return newBuffer.shiftDouble(true);
return bufferReader.shiftDouble(true);
}

case 'buffer': {
return newBuffer.getPayload();
return ((bufferReader.buffer: any): TType)
}

case 'string':
default: {
return newBuffer.toString();
return bufferReader.buffer.toString();
}
}
};
Expand Down

0 comments on commit ecd803d

Please sign in to comment.