UNPKG

simple-hypercore-protocol

Version:
1,190 lines (1,106 loc) 30.7 kB
// This file is auto generated by the protocol-buffers compiler /* eslint-disable quotes */ /* eslint-disable indent */ /* eslint-disable no-redeclare */ /* eslint-disable camelcase */ // Remember to `npm install --save protocol-buffers-encodings` var encodings = require('protocol-buffers-encodings') var varint = encodings.varint var skip = encodings.skip var NoisePayload = exports.NoisePayload = { buffer: true, encodingLength: null, encode: null, decode: null } var Open = exports.Open = { buffer: true, encodingLength: null, encode: null, decode: null } var Options = exports.Options = { buffer: true, encodingLength: null, encode: null, decode: null } var Status = exports.Status = { buffer: true, encodingLength: null, encode: null, decode: null } var Have = exports.Have = { buffer: true, encodingLength: null, encode: null, decode: null } var Unhave = exports.Unhave = { buffer: true, encodingLength: null, encode: null, decode: null } var Want = exports.Want = { buffer: true, encodingLength: null, encode: null, decode: null } var Unwant = exports.Unwant = { buffer: true, encodingLength: null, encode: null, decode: null } var Request = exports.Request = { buffer: true, encodingLength: null, encode: null, decode: null } var Cancel = exports.Cancel = { buffer: true, encodingLength: null, encode: null, decode: null } var Data = exports.Data = { buffer: true, encodingLength: null, encode: null, decode: null } var Close = exports.Close = { buffer: true, encodingLength: null, encode: null, decode: null } defineNoisePayload() defineOpen() defineOptions() defineStatus() defineHave() defineUnhave() defineWant() defineUnwant() defineRequest() defineCancel() defineData() defineClose() function defineNoisePayload () { var enc = [ encodings.bytes ] NoisePayload.encodingLength = encodingLength NoisePayload.encode = encode NoisePayload.decode = decode function encodingLength (obj) { var length = 0 if (!defined(obj.nonce)) throw new Error("nonce is required") var len = enc[0].encodingLength(obj.nonce) length += 1 + len return length } function encode (obj, buf, offset) { if (!offset) offset = 0 if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) var oldOffset = offset if (!defined(obj.nonce)) throw new Error("nonce is required") buf[offset++] = 10 enc[0].encode(obj.nonce, buf, offset) offset += enc[0].encode.bytes encode.bytes = offset - oldOffset return buf } function decode (buf, offset, end) { if (!offset) offset = 0 if (!end) end = buf.length if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") var oldOffset = offset var obj = { nonce: null } var found0 = false while (true) { if (end <= offset) { if (!found0) throw new Error("Decoded message is not valid") decode.bytes = offset - oldOffset return obj } var prefix = varint.decode(buf, offset) offset += varint.decode.bytes var tag = prefix >> 3 switch (tag) { case 1: obj.nonce = enc[0].decode(buf, offset) offset += enc[0].decode.bytes found0 = true break default: offset = skip(prefix & 7, buf, offset) } } } } function defineOpen () { var enc = [ encodings.bytes ] Open.encodingLength = encodingLength Open.encode = encode Open.decode = decode function encodingLength (obj) { var length = 0 if (!defined(obj.discoveryKey)) throw new Error("discoveryKey is required") var len = enc[0].encodingLength(obj.discoveryKey) length += 1 + len if (defined(obj.capability)) { var len = enc[0].encodingLength(obj.capability) length += 1 + len } return length } function encode (obj, buf, offset) { if (!offset) offset = 0 if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) var oldOffset = offset if (!defined(obj.discoveryKey)) throw new Error("discoveryKey is required") buf[offset++] = 10 enc[0].encode(obj.discoveryKey, buf, offset) offset += enc[0].encode.bytes if (defined(obj.capability)) { buf[offset++] = 18 enc[0].encode(obj.capability, buf, offset) offset += enc[0].encode.bytes } encode.bytes = offset - oldOffset return buf } function decode (buf, offset, end) { if (!offset) offset = 0 if (!end) end = buf.length if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") var oldOffset = offset var obj = { discoveryKey: null, capability: null } var found0 = false while (true) { if (end <= offset) { if (!found0) throw new Error("Decoded message is not valid") decode.bytes = offset - oldOffset return obj } var prefix = varint.decode(buf, offset) offset += varint.decode.bytes var tag = prefix >> 3 switch (tag) { case 1: obj.discoveryKey = enc[0].decode(buf, offset) offset += enc[0].decode.bytes found0 = true break case 2: obj.capability = enc[0].decode(buf, offset) offset += enc[0].decode.bytes break default: offset = skip(prefix & 7, buf, offset) } } } } function defineOptions () { var enc = [ encodings.string, encodings.bool ] Options.encodingLength = encodingLength Options.encode = encode Options.decode = decode function encodingLength (obj) { var length = 0 if (defined(obj.extensions)) { for (var i = 0; i < obj.extensions.length; i++) { if (!defined(obj.extensions[i])) continue var len = enc[0].encodingLength(obj.extensions[i]) length += 1 + len } } if (defined(obj.ack)) { var len = enc[1].encodingLength(obj.ack) length += 1 + len } return length } function encode (obj, buf, offset) { if (!offset) offset = 0 if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) var oldOffset = offset if (defined(obj.extensions)) { for (var i = 0; i < obj.extensions.length; i++) { if (!defined(obj.extensions[i])) continue buf[offset++] = 10 enc[0].encode(obj.extensions[i], buf, offset) offset += enc[0].encode.bytes } } if (defined(obj.ack)) { buf[offset++] = 16 enc[1].encode(obj.ack, buf, offset) offset += enc[1].encode.bytes } encode.bytes = offset - oldOffset return buf } function decode (buf, offset, end) { if (!offset) offset = 0 if (!end) end = buf.length if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") var oldOffset = offset var obj = { extensions: [], ack: false } while (true) { if (end <= offset) { decode.bytes = offset - oldOffset return obj } var prefix = varint.decode(buf, offset) offset += varint.decode.bytes var tag = prefix >> 3 switch (tag) { case 1: obj.extensions.push(enc[0].decode(buf, offset)) offset += enc[0].decode.bytes break case 2: obj.ack = enc[1].decode(buf, offset) offset += enc[1].decode.bytes break default: offset = skip(prefix & 7, buf, offset) } } } } function defineStatus () { var enc = [ encodings.bool ] Status.encodingLength = encodingLength Status.encode = encode Status.decode = decode function encodingLength (obj) { var length = 0 if (defined(obj.uploading)) { var len = enc[0].encodingLength(obj.uploading) length += 1 + len } if (defined(obj.downloading)) { var len = enc[0].encodingLength(obj.downloading) length += 1 + len } return length } function encode (obj, buf, offset) { if (!offset) offset = 0 if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) var oldOffset = offset if (defined(obj.uploading)) { buf[offset++] = 8 enc[0].encode(obj.uploading, buf, offset) offset += enc[0].encode.bytes } if (defined(obj.downloading)) { buf[offset++] = 16 enc[0].encode(obj.downloading, buf, offset) offset += enc[0].encode.bytes } encode.bytes = offset - oldOffset return buf } function decode (buf, offset, end) { if (!offset) offset = 0 if (!end) end = buf.length if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") var oldOffset = offset var obj = { uploading: false, downloading: false } while (true) { if (end <= offset) { decode.bytes = offset - oldOffset return obj } var prefix = varint.decode(buf, offset) offset += varint.decode.bytes var tag = prefix >> 3 switch (tag) { case 1: obj.uploading = enc[0].decode(buf, offset) offset += enc[0].decode.bytes break case 2: obj.downloading = enc[0].decode(buf, offset) offset += enc[0].decode.bytes break default: offset = skip(prefix & 7, buf, offset) } } } } function defineHave () { var enc = [ encodings.varint, encodings.bytes, encodings.bool ] Have.encodingLength = encodingLength Have.encode = encode Have.decode = decode function encodingLength (obj) { var length = 0 if (!defined(obj.start)) throw new Error("start is required") var len = enc[0].encodingLength(obj.start) length += 1 + len if (defined(obj.length)) { var len = enc[0].encodingLength(obj.length) length += 1 + len } if (defined(obj.bitfield)) { var len = enc[1].encodingLength(obj.bitfield) length += 1 + len } if (defined(obj.ack)) { var len = enc[2].encodingLength(obj.ack) length += 1 + len } return length } function encode (obj, buf, offset) { if (!offset) offset = 0 if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) var oldOffset = offset if (!defined(obj.start)) throw new Error("start is required") buf[offset++] = 8 enc[0].encode(obj.start, buf, offset) offset += enc[0].encode.bytes if (defined(obj.length)) { buf[offset++] = 16 enc[0].encode(obj.length, buf, offset) offset += enc[0].encode.bytes } if (defined(obj.bitfield)) { buf[offset++] = 26 enc[1].encode(obj.bitfield, buf, offset) offset += enc[1].encode.bytes } if (defined(obj.ack)) { buf[offset++] = 32 enc[2].encode(obj.ack, buf, offset) offset += enc[2].encode.bytes } encode.bytes = offset - oldOffset return buf } function decode (buf, offset, end) { if (!offset) offset = 0 if (!end) end = buf.length if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") var oldOffset = offset var obj = { start: 0, length: 1, bitfield: null, ack: false } var found0 = false while (true) { if (end <= offset) { if (!found0) throw new Error("Decoded message is not valid") decode.bytes = offset - oldOffset return obj } var prefix = varint.decode(buf, offset) offset += varint.decode.bytes var tag = prefix >> 3 switch (tag) { case 1: obj.start = enc[0].decode(buf, offset) offset += enc[0].decode.bytes found0 = true break case 2: obj.length = enc[0].decode(buf, offset) offset += enc[0].decode.bytes break case 3: obj.bitfield = enc[1].decode(buf, offset) offset += enc[1].decode.bytes break case 4: obj.ack = enc[2].decode(buf, offset) offset += enc[2].decode.bytes break default: offset = skip(prefix & 7, buf, offset) } } } } function defineUnhave () { var enc = [ encodings.varint ] Unhave.encodingLength = encodingLength Unhave.encode = encode Unhave.decode = decode function encodingLength (obj) { var length = 0 if (!defined(obj.start)) throw new Error("start is required") var len = enc[0].encodingLength(obj.start) length += 1 + len if (defined(obj.length)) { var len = enc[0].encodingLength(obj.length) length += 1 + len } return length } function encode (obj, buf, offset) { if (!offset) offset = 0 if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) var oldOffset = offset if (!defined(obj.start)) throw new Error("start is required") buf[offset++] = 8 enc[0].encode(obj.start, buf, offset) offset += enc[0].encode.bytes if (defined(obj.length)) { buf[offset++] = 16 enc[0].encode(obj.length, buf, offset) offset += enc[0].encode.bytes } encode.bytes = offset - oldOffset return buf } function decode (buf, offset, end) { if (!offset) offset = 0 if (!end) end = buf.length if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") var oldOffset = offset var obj = { start: 0, length: 1 } var found0 = false while (true) { if (end <= offset) { if (!found0) throw new Error("Decoded message is not valid") decode.bytes = offset - oldOffset return obj } var prefix = varint.decode(buf, offset) offset += varint.decode.bytes var tag = prefix >> 3 switch (tag) { case 1: obj.start = enc[0].decode(buf, offset) offset += enc[0].decode.bytes found0 = true break case 2: obj.length = enc[0].decode(buf, offset) offset += enc[0].decode.bytes break default: offset = skip(prefix & 7, buf, offset) } } } } function defineWant () { var enc = [ encodings.varint ] Want.encodingLength = encodingLength Want.encode = encode Want.decode = decode function encodingLength (obj) { var length = 0 if (!defined(obj.start)) throw new Error("start is required") var len = enc[0].encodingLength(obj.start) length += 1 + len if (defined(obj.length)) { var len = enc[0].encodingLength(obj.length) length += 1 + len } return length } function encode (obj, buf, offset) { if (!offset) offset = 0 if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) var oldOffset = offset if (!defined(obj.start)) throw new Error("start is required") buf[offset++] = 8 enc[0].encode(obj.start, buf, offset) offset += enc[0].encode.bytes if (defined(obj.length)) { buf[offset++] = 16 enc[0].encode(obj.length, buf, offset) offset += enc[0].encode.bytes } encode.bytes = offset - oldOffset return buf } function decode (buf, offset, end) { if (!offset) offset = 0 if (!end) end = buf.length if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") var oldOffset = offset var obj = { start: 0, length: 0 } var found0 = false while (true) { if (end <= offset) { if (!found0) throw new Error("Decoded message is not valid") decode.bytes = offset - oldOffset return obj } var prefix = varint.decode(buf, offset) offset += varint.decode.bytes var tag = prefix >> 3 switch (tag) { case 1: obj.start = enc[0].decode(buf, offset) offset += enc[0].decode.bytes found0 = true break case 2: obj.length = enc[0].decode(buf, offset) offset += enc[0].decode.bytes break default: offset = skip(prefix & 7, buf, offset) } } } } function defineUnwant () { var enc = [ encodings.varint ] Unwant.encodingLength = encodingLength Unwant.encode = encode Unwant.decode = decode function encodingLength (obj) { var length = 0 if (!defined(obj.start)) throw new Error("start is required") var len = enc[0].encodingLength(obj.start) length += 1 + len if (defined(obj.length)) { var len = enc[0].encodingLength(obj.length) length += 1 + len } return length } function encode (obj, buf, offset) { if (!offset) offset = 0 if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) var oldOffset = offset if (!defined(obj.start)) throw new Error("start is required") buf[offset++] = 8 enc[0].encode(obj.start, buf, offset) offset += enc[0].encode.bytes if (defined(obj.length)) { buf[offset++] = 16 enc[0].encode(obj.length, buf, offset) offset += enc[0].encode.bytes } encode.bytes = offset - oldOffset return buf } function decode (buf, offset, end) { if (!offset) offset = 0 if (!end) end = buf.length if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") var oldOffset = offset var obj = { start: 0, length: 0 } var found0 = false while (true) { if (end <= offset) { if (!found0) throw new Error("Decoded message is not valid") decode.bytes = offset - oldOffset return obj } var prefix = varint.decode(buf, offset) offset += varint.decode.bytes var tag = prefix >> 3 switch (tag) { case 1: obj.start = enc[0].decode(buf, offset) offset += enc[0].decode.bytes found0 = true break case 2: obj.length = enc[0].decode(buf, offset) offset += enc[0].decode.bytes break default: offset = skip(prefix & 7, buf, offset) } } } } function defineRequest () { var enc = [ encodings.varint, encodings.bool ] Request.encodingLength = encodingLength Request.encode = encode Request.decode = decode function encodingLength (obj) { var length = 0 if (!defined(obj.index)) throw new Error("index is required") var len = enc[0].encodingLength(obj.index) length += 1 + len if (defined(obj.bytes)) { var len = enc[0].encodingLength(obj.bytes) length += 1 + len } if (defined(obj.hash)) { var len = enc[1].encodingLength(obj.hash) length += 1 + len } if (defined(obj.nodes)) { var len = enc[0].encodingLength(obj.nodes) length += 1 + len } return length } function encode (obj, buf, offset) { if (!offset) offset = 0 if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) var oldOffset = offset if (!defined(obj.index)) throw new Error("index is required") buf[offset++] = 8 enc[0].encode(obj.index, buf, offset) offset += enc[0].encode.bytes if (defined(obj.bytes)) { buf[offset++] = 16 enc[0].encode(obj.bytes, buf, offset) offset += enc[0].encode.bytes } if (defined(obj.hash)) { buf[offset++] = 24 enc[1].encode(obj.hash, buf, offset) offset += enc[1].encode.bytes } if (defined(obj.nodes)) { buf[offset++] = 32 enc[0].encode(obj.nodes, buf, offset) offset += enc[0].encode.bytes } encode.bytes = offset - oldOffset return buf } function decode (buf, offset, end) { if (!offset) offset = 0 if (!end) end = buf.length if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") var oldOffset = offset var obj = { index: 0, bytes: 0, hash: false, nodes: 0 } var found0 = false while (true) { if (end <= offset) { if (!found0) throw new Error("Decoded message is not valid") decode.bytes = offset - oldOffset return obj } var prefix = varint.decode(buf, offset) offset += varint.decode.bytes var tag = prefix >> 3 switch (tag) { case 1: obj.index = enc[0].decode(buf, offset) offset += enc[0].decode.bytes found0 = true break case 2: obj.bytes = enc[0].decode(buf, offset) offset += enc[0].decode.bytes break case 3: obj.hash = enc[1].decode(buf, offset) offset += enc[1].decode.bytes break case 4: obj.nodes = enc[0].decode(buf, offset) offset += enc[0].decode.bytes break default: offset = skip(prefix & 7, buf, offset) } } } } function defineCancel () { var enc = [ encodings.varint, encodings.bool ] Cancel.encodingLength = encodingLength Cancel.encode = encode Cancel.decode = decode function encodingLength (obj) { var length = 0 if (!defined(obj.index)) throw new Error("index is required") var len = enc[0].encodingLength(obj.index) length += 1 + len if (defined(obj.bytes)) { var len = enc[0].encodingLength(obj.bytes) length += 1 + len } if (defined(obj.hash)) { var len = enc[1].encodingLength(obj.hash) length += 1 + len } return length } function encode (obj, buf, offset) { if (!offset) offset = 0 if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) var oldOffset = offset if (!defined(obj.index)) throw new Error("index is required") buf[offset++] = 8 enc[0].encode(obj.index, buf, offset) offset += enc[0].encode.bytes if (defined(obj.bytes)) { buf[offset++] = 16 enc[0].encode(obj.bytes, buf, offset) offset += enc[0].encode.bytes } if (defined(obj.hash)) { buf[offset++] = 24 enc[1].encode(obj.hash, buf, offset) offset += enc[1].encode.bytes } encode.bytes = offset - oldOffset return buf } function decode (buf, offset, end) { if (!offset) offset = 0 if (!end) end = buf.length if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") var oldOffset = offset var obj = { index: 0, bytes: 0, hash: false } var found0 = false while (true) { if (end <= offset) { if (!found0) throw new Error("Decoded message is not valid") decode.bytes = offset - oldOffset return obj } var prefix = varint.decode(buf, offset) offset += varint.decode.bytes var tag = prefix >> 3 switch (tag) { case 1: obj.index = enc[0].decode(buf, offset) offset += enc[0].decode.bytes found0 = true break case 2: obj.bytes = enc[0].decode(buf, offset) offset += enc[0].decode.bytes break case 3: obj.hash = enc[1].decode(buf, offset) offset += enc[1].decode.bytes break default: offset = skip(prefix & 7, buf, offset) } } } } function defineData () { var Node = Data.Node = { buffer: true, encodingLength: null, encode: null, decode: null } defineNode() function defineNode () { var enc = [ encodings.varint, encodings.bytes ] Node.encodingLength = encodingLength Node.encode = encode Node.decode = decode function encodingLength (obj) { var length = 0 if (!defined(obj.index)) throw new Error("index is required") var len = enc[0].encodingLength(obj.index) length += 1 + len if (!defined(obj.hash)) throw new Error("hash is required") var len = enc[1].encodingLength(obj.hash) length += 1 + len if (!defined(obj.size)) throw new Error("size is required") var len = enc[0].encodingLength(obj.size) length += 1 + len return length } function encode (obj, buf, offset) { if (!offset) offset = 0 if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) var oldOffset = offset if (!defined(obj.index)) throw new Error("index is required") buf[offset++] = 8 enc[0].encode(obj.index, buf, offset) offset += enc[0].encode.bytes if (!defined(obj.hash)) throw new Error("hash is required") buf[offset++] = 18 enc[1].encode(obj.hash, buf, offset) offset += enc[1].encode.bytes if (!defined(obj.size)) throw new Error("size is required") buf[offset++] = 24 enc[0].encode(obj.size, buf, offset) offset += enc[0].encode.bytes encode.bytes = offset - oldOffset return buf } function decode (buf, offset, end) { if (!offset) offset = 0 if (!end) end = buf.length if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") var oldOffset = offset var obj = { index: 0, hash: null, size: 0 } var found0 = false var found1 = false var found2 = false while (true) { if (end <= offset) { if (!found0 || !found1 || !found2) throw new Error("Decoded message is not valid") decode.bytes = offset - oldOffset return obj } var prefix = varint.decode(buf, offset) offset += varint.decode.bytes var tag = prefix >> 3 switch (tag) { case 1: obj.index = enc[0].decode(buf, offset) offset += enc[0].decode.bytes found0 = true break case 2: obj.hash = enc[1].decode(buf, offset) offset += enc[1].decode.bytes found1 = true break case 3: obj.size = enc[0].decode(buf, offset) offset += enc[0].decode.bytes found2 = true break default: offset = skip(prefix & 7, buf, offset) } } } } var enc = [ encodings.varint, encodings.bytes, Node ] Data.encodingLength = encodingLength Data.encode = encode Data.decode = decode function encodingLength (obj) { var length = 0 if (!defined(obj.index)) throw new Error("index is required") var len = enc[0].encodingLength(obj.index) length += 1 + len if (defined(obj.value)) { var len = enc[1].encodingLength(obj.value) length += 1 + len } if (defined(obj.nodes)) { for (var i = 0; i < obj.nodes.length; i++) { if (!defined(obj.nodes[i])) continue var len = enc[2].encodingLength(obj.nodes[i]) length += varint.encodingLength(len) length += 1 + len } } if (defined(obj.signature)) { var len = enc[1].encodingLength(obj.signature) length += 1 + len } return length } function encode (obj, buf, offset) { if (!offset) offset = 0 if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) var oldOffset = offset if (!defined(obj.index)) throw new Error("index is required") buf[offset++] = 8 enc[0].encode(obj.index, buf, offset) offset += enc[0].encode.bytes if (defined(obj.value)) { buf[offset++] = 18 enc[1].encode(obj.value, buf, offset) offset += enc[1].encode.bytes } if (defined(obj.nodes)) { for (var i = 0; i < obj.nodes.length; i++) { if (!defined(obj.nodes[i])) continue buf[offset++] = 26 varint.encode(enc[2].encodingLength(obj.nodes[i]), buf, offset) offset += varint.encode.bytes enc[2].encode(obj.nodes[i], buf, offset) offset += enc[2].encode.bytes } } if (defined(obj.signature)) { buf[offset++] = 34 enc[1].encode(obj.signature, buf, offset) offset += enc[1].encode.bytes } encode.bytes = offset - oldOffset return buf } function decode (buf, offset, end) { if (!offset) offset = 0 if (!end) end = buf.length if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") var oldOffset = offset var obj = { index: 0, value: null, nodes: [], signature: null } var found0 = false while (true) { if (end <= offset) { if (!found0) throw new Error("Decoded message is not valid") decode.bytes = offset - oldOffset return obj } var prefix = varint.decode(buf, offset) offset += varint.decode.bytes var tag = prefix >> 3 switch (tag) { case 1: obj.index = enc[0].decode(buf, offset) offset += enc[0].decode.bytes found0 = true break case 2: obj.value = enc[1].decode(buf, offset) offset += enc[1].decode.bytes break case 3: var len = varint.decode(buf, offset) offset += varint.decode.bytes obj.nodes.push(enc[2].decode(buf, offset, offset + len)) offset += enc[2].decode.bytes break case 4: obj.signature = enc[1].decode(buf, offset) offset += enc[1].decode.bytes break default: offset = skip(prefix & 7, buf, offset) } } } } function defineClose () { var enc = [ encodings.bytes ] Close.encodingLength = encodingLength Close.encode = encode Close.decode = decode function encodingLength (obj) { var length = 0 if (defined(obj.discoveryKey)) { var len = enc[0].encodingLength(obj.discoveryKey) length += 1 + len } return length } function encode (obj, buf, offset) { if (!offset) offset = 0 if (!buf) buf = Buffer.allocUnsafe(encodingLength(obj)) var oldOffset = offset if (defined(obj.discoveryKey)) { buf[offset++] = 10 enc[0].encode(obj.discoveryKey, buf, offset) offset += enc[0].encode.bytes } encode.bytes = offset - oldOffset return buf } function decode (buf, offset, end) { if (!offset) offset = 0 if (!end) end = buf.length if (!(end <= buf.length && offset <= buf.length)) throw new Error("Decoded message is not valid") var oldOffset = offset var obj = { discoveryKey: null } while (true) { if (end <= offset) { decode.bytes = offset - oldOffset return obj } var prefix = varint.decode(buf, offset) offset += varint.decode.bytes var tag = prefix >> 3 switch (tag) { case 1: obj.discoveryKey = enc[0].decode(buf, offset) offset += enc[0].decode.bytes break default: offset = skip(prefix & 7, buf, offset) } } } } function defined (val) { return val !== null && val !== undefined && (typeof val !== 'number' || !isNaN(val)) }