UNPKG

serfer

Version:

A exact copy of the serf client for nodejs.

44 lines (36 loc) 1.13 kB
var _ = require("lodash"), msgpack = require("msgpack-js-v5-ng"); function Transcoder() {} Transcoder.prototype.decode = function(data){ var values = []; var cache = new Buffer(0); var head, trailing, value, decoded; while (data.length > 0) { head = data.slice(0, 1); data = data.slice(1, data.length); cache = Buffer.concat([cache, head]); try { try { decoded = msgpack.decode(cache); } catch (error) { if (error.name == 'RangeError') continue; } if (! decoded) continue; if (decoded.trailing == 0) { values.push(decoded.value); cache = new Buffer(0); } } catch(err) { console.log('Error decoding msgPack object: ', err.message); console.log(err.stack); } } return { seq: (values.length == 1) ? decoded.value.Seq : _.first(values).Seq, values: values }; }; Transcoder.prototype.encode = function(data){ return msgpack.encode(data); }; module.exports = Transcoder;