|
|
@ -34,10 +34,6 @@ defineHolepunch() |
|
|
|
defineMessage() |
|
|
|
|
|
|
|
function defineHolepunch () { |
|
|
|
var enc = [ |
|
|
|
encodings.bytes |
|
|
|
] |
|
|
|
|
|
|
|
Holepunch.encodingLength = encodingLength |
|
|
|
Holepunch.encode = encode |
|
|
|
Holepunch.decode = decode |
|
|
@ -45,11 +41,11 @@ function defineHolepunch () { |
|
|
|
function encodingLength (obj) { |
|
|
|
var length = 0 |
|
|
|
if (defined(obj.from)) { |
|
|
|
var len = enc[0].encodingLength(obj.from) |
|
|
|
var len = encodings.bytes.encodingLength(obj.from) |
|
|
|
length += 1 + len |
|
|
|
} |
|
|
|
if (defined(obj.to)) { |
|
|
|
var len = enc[0].encodingLength(obj.to) |
|
|
|
var len = encodings.bytes.encodingLength(obj.to) |
|
|
|
length += 1 + len |
|
|
|
} |
|
|
|
return length |
|
|
@ -61,13 +57,13 @@ function defineHolepunch () { |
|
|
|
var oldOffset = offset |
|
|
|
if (defined(obj.from)) { |
|
|
|
buf[offset++] = 18 |
|
|
|
enc[0].encode(obj.from, buf, offset) |
|
|
|
offset += enc[0].encode.bytes |
|
|
|
encodings.bytes.encode(obj.from, buf, offset) |
|
|
|
offset += encodings.bytes.encode.bytes |
|
|
|
} |
|
|
|
if (defined(obj.to)) { |
|
|
|
buf[offset++] = 26 |
|
|
|
enc[0].encode(obj.to, buf, offset) |
|
|
|
offset += enc[0].encode.bytes |
|
|
|
encodings.bytes.encode(obj.to, buf, offset) |
|
|
|
offset += encodings.bytes.encode.bytes |
|
|
|
} |
|
|
|
encode.bytes = offset - oldOffset |
|
|
|
return buf |
|
|
@ -92,12 +88,12 @@ function defineHolepunch () { |
|
|
|
var tag = prefix >> 3 |
|
|
|
switch (tag) { |
|
|
|
case 2: |
|
|
|
obj.from = enc[0].decode(buf, offset) |
|
|
|
offset += enc[0].decode.bytes |
|
|
|
obj.from = encodings.bytes.decode(buf, offset) |
|
|
|
offset += encodings.bytes.decode.bytes |
|
|
|
break |
|
|
|
case 3: |
|
|
|
obj.to = enc[0].decode(buf, offset) |
|
|
|
offset += enc[0].decode.bytes |
|
|
|
obj.to = encodings.bytes.decode(buf, offset) |
|
|
|
offset += encodings.bytes.decode.bytes |
|
|
|
break |
|
|
|
default: |
|
|
|
offset = skip(prefix & 7, buf, offset) |
|
|
@ -107,13 +103,6 @@ function defineHolepunch () { |
|
|
|
} |
|
|
|
|
|
|
|
function defineMessage () { |
|
|
|
var enc = [ |
|
|
|
encodings.enum, |
|
|
|
encodings.varint, |
|
|
|
encodings.bytes, |
|
|
|
encodings.string |
|
|
|
] |
|
|
|
|
|
|
|
Message.encodingLength = encodingLength |
|
|
|
Message.encode = encode |
|
|
|
Message.decode = decode |
|
|
@ -121,37 +110,41 @@ function defineMessage () { |
|
|
|
function encodingLength (obj) { |
|
|
|
var length = 0 |
|
|
|
if (!defined(obj.type)) throw new Error("type is required") |
|
|
|
var len = enc[0].encodingLength(obj.type) |
|
|
|
var len = encodings.enum.encodingLength(obj.type) |
|
|
|
length += 1 + len |
|
|
|
if (!defined(obj.rid)) throw new Error("rid is required") |
|
|
|
var len = enc[1].encodingLength(obj.rid) |
|
|
|
var len = encodings.varint.encodingLength(obj.rid) |
|
|
|
length += 1 + len |
|
|
|
if (defined(obj.to)) { |
|
|
|
var len = encodings.bytes.encodingLength(obj.to) |
|
|
|
length += 1 + len |
|
|
|
} |
|
|
|
if (defined(obj.id)) { |
|
|
|
var len = enc[2].encodingLength(obj.id) |
|
|
|
var len = encodings.bytes.encodingLength(obj.id) |
|
|
|
length += 1 + len |
|
|
|
} |
|
|
|
if (defined(obj.target)) { |
|
|
|
var len = enc[2].encodingLength(obj.target) |
|
|
|
var len = encodings.bytes.encodingLength(obj.target) |
|
|
|
length += 1 + len |
|
|
|
} |
|
|
|
if (defined(obj.closerNodes)) { |
|
|
|
var len = enc[2].encodingLength(obj.closerNodes) |
|
|
|
var len = encodings.bytes.encodingLength(obj.closerNodes) |
|
|
|
length += 1 + len |
|
|
|
} |
|
|
|
if (defined(obj.roundtripToken)) { |
|
|
|
var len = enc[2].encodingLength(obj.roundtripToken) |
|
|
|
var len = encodings.bytes.encodingLength(obj.roundtripToken) |
|
|
|
length += 1 + len |
|
|
|
} |
|
|
|
if (defined(obj.command)) { |
|
|
|
var len = enc[3].encodingLength(obj.command) |
|
|
|
var len = encodings.string.encodingLength(obj.command) |
|
|
|
length += 1 + len |
|
|
|
} |
|
|
|
if (defined(obj.error)) { |
|
|
|
var len = enc[3].encodingLength(obj.error) |
|
|
|
var len = encodings.string.encodingLength(obj.error) |
|
|
|
length += 1 + len |
|
|
|
} |
|
|
|
if (defined(obj.value)) { |
|
|
|
var len = enc[2].encodingLength(obj.value) |
|
|
|
var len = encodings.bytes.encodingLength(obj.value) |
|
|
|
length += 1 + len |
|
|
|
} |
|
|
|
return length |
|
|
@ -163,46 +156,51 @@ function defineMessage () { |
|
|
|
var oldOffset = offset |
|
|
|
if (!defined(obj.type)) throw new Error("type is required") |
|
|
|
buf[offset++] = 8 |
|
|
|
enc[0].encode(obj.type, buf, offset) |
|
|
|
offset += enc[0].encode.bytes |
|
|
|
encodings.enum.encode(obj.type, buf, offset) |
|
|
|
offset += encodings.enum.encode.bytes |
|
|
|
if (!defined(obj.rid)) throw new Error("rid is required") |
|
|
|
buf[offset++] = 16 |
|
|
|
enc[1].encode(obj.rid, buf, offset) |
|
|
|
offset += enc[1].encode.bytes |
|
|
|
encodings.varint.encode(obj.rid, buf, offset) |
|
|
|
offset += encodings.varint.encode.bytes |
|
|
|
if (defined(obj.to)) { |
|
|
|
buf[offset++] = 82 |
|
|
|
encodings.bytes.encode(obj.to, buf, offset) |
|
|
|
offset += encodings.bytes.encode.bytes |
|
|
|
} |
|
|
|
if (defined(obj.id)) { |
|
|
|
buf[offset++] = 26 |
|
|
|
enc[2].encode(obj.id, buf, offset) |
|
|
|
offset += enc[2].encode.bytes |
|
|
|
encodings.bytes.encode(obj.id, buf, offset) |
|
|
|
offset += encodings.bytes.encode.bytes |
|
|
|
} |
|
|
|
if (defined(obj.target)) { |
|
|
|
buf[offset++] = 34 |
|
|
|
enc[2].encode(obj.target, buf, offset) |
|
|
|
offset += enc[2].encode.bytes |
|
|
|
encodings.bytes.encode(obj.target, buf, offset) |
|
|
|
offset += encodings.bytes.encode.bytes |
|
|
|
} |
|
|
|
if (defined(obj.closerNodes)) { |
|
|
|
buf[offset++] = 42 |
|
|
|
enc[2].encode(obj.closerNodes, buf, offset) |
|
|
|
offset += enc[2].encode.bytes |
|
|
|
encodings.bytes.encode(obj.closerNodes, buf, offset) |
|
|
|
offset += encodings.bytes.encode.bytes |
|
|
|
} |
|
|
|
if (defined(obj.roundtripToken)) { |
|
|
|
buf[offset++] = 50 |
|
|
|
enc[2].encode(obj.roundtripToken, buf, offset) |
|
|
|
offset += enc[2].encode.bytes |
|
|
|
encodings.bytes.encode(obj.roundtripToken, buf, offset) |
|
|
|
offset += encodings.bytes.encode.bytes |
|
|
|
} |
|
|
|
if (defined(obj.command)) { |
|
|
|
buf[offset++] = 58 |
|
|
|
enc[3].encode(obj.command, buf, offset) |
|
|
|
offset += enc[3].encode.bytes |
|
|
|
encodings.string.encode(obj.command, buf, offset) |
|
|
|
offset += encodings.string.encode.bytes |
|
|
|
} |
|
|
|
if (defined(obj.error)) { |
|
|
|
buf[offset++] = 66 |
|
|
|
enc[3].encode(obj.error, buf, offset) |
|
|
|
offset += enc[3].encode.bytes |
|
|
|
encodings.string.encode(obj.error, buf, offset) |
|
|
|
offset += encodings.string.encode.bytes |
|
|
|
} |
|
|
|
if (defined(obj.value)) { |
|
|
|
buf[offset++] = 74 |
|
|
|
enc[2].encode(obj.value, buf, offset) |
|
|
|
offset += enc[2].encode.bytes |
|
|
|
encodings.bytes.encode(obj.value, buf, offset) |
|
|
|
offset += encodings.bytes.encode.bytes |
|
|
|
} |
|
|
|
encode.bytes = offset - oldOffset |
|
|
|
return buf |
|
|
@ -216,6 +214,7 @@ function defineMessage () { |
|
|
|
var obj = { |
|
|
|
type: 1, |
|
|
|
rid: 0, |
|
|
|
to: null, |
|
|
|
id: null, |
|
|
|
target: null, |
|
|
|
closerNodes: null, |
|
|
@ -237,42 +236,46 @@ function defineMessage () { |
|
|
|
var tag = prefix >> 3 |
|
|
|
switch (tag) { |
|
|
|
case 1: |
|
|
|
obj.type = enc[0].decode(buf, offset) |
|
|
|
offset += enc[0].decode.bytes |
|
|
|
obj.type = encodings.enum.decode(buf, offset) |
|
|
|
offset += encodings.enum.decode.bytes |
|
|
|
found0 = true |
|
|
|
break |
|
|
|
case 2: |
|
|
|
obj.rid = enc[1].decode(buf, offset) |
|
|
|
offset += enc[1].decode.bytes |
|
|
|
obj.rid = encodings.varint.decode(buf, offset) |
|
|
|
offset += encodings.varint.decode.bytes |
|
|
|
found1 = true |
|
|
|
break |
|
|
|
case 10: |
|
|
|
obj.to = encodings.bytes.decode(buf, offset) |
|
|
|
offset += encodings.bytes.decode.bytes |
|
|
|
break |
|
|
|
case 3: |
|
|
|
obj.id = enc[2].decode(buf, offset) |
|
|
|
offset += enc[2].decode.bytes |
|
|
|
obj.id = encodings.bytes.decode(buf, offset) |
|
|
|
offset += encodings.bytes.decode.bytes |
|
|
|
break |
|
|
|
case 4: |
|
|
|
obj.target = enc[2].decode(buf, offset) |
|
|
|
offset += enc[2].decode.bytes |
|
|
|
obj.target = encodings.bytes.decode(buf, offset) |
|
|
|
offset += encodings.bytes.decode.bytes |
|
|
|
break |
|
|
|
case 5: |
|
|
|
obj.closerNodes = enc[2].decode(buf, offset) |
|
|
|
offset += enc[2].decode.bytes |
|
|
|
obj.closerNodes = encodings.bytes.decode(buf, offset) |
|
|
|
offset += encodings.bytes.decode.bytes |
|
|
|
break |
|
|
|
case 6: |
|
|
|
obj.roundtripToken = enc[2].decode(buf, offset) |
|
|
|
offset += enc[2].decode.bytes |
|
|
|
obj.roundtripToken = encodings.bytes.decode(buf, offset) |
|
|
|
offset += encodings.bytes.decode.bytes |
|
|
|
break |
|
|
|
case 7: |
|
|
|
obj.command = enc[3].decode(buf, offset) |
|
|
|
offset += enc[3].decode.bytes |
|
|
|
obj.command = encodings.string.decode(buf, offset) |
|
|
|
offset += encodings.string.decode.bytes |
|
|
|
break |
|
|
|
case 8: |
|
|
|
obj.error = enc[3].decode(buf, offset) |
|
|
|
offset += enc[3].decode.bytes |
|
|
|
obj.error = encodings.string.decode(buf, offset) |
|
|
|
offset += encodings.string.decode.bytes |
|
|
|
break |
|
|
|
case 9: |
|
|
|
obj.value = enc[2].decode(buf, offset) |
|
|
|
offset += enc[2].decode.bytes |
|
|
|
obj.value = encodings.bytes.decode(buf, offset) |
|
|
|
offset += encodings.bytes.decode.bytes |
|
|
|
break |
|
|
|
default: |
|
|
|
offset = skip(prefix & 7, buf, offset) |
|
|
|