From e8acc3934f408fe86aadce38cf7adab0f9777668 Mon Sep 17 00:00:00 2001 From: Mathias Buus Date: Mon, 15 Nov 2021 16:12:21 +0100 Subject: [PATCH] missing messages.js --- messages.js | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 messages.js diff --git a/messages.js b/messages.js new file mode 100644 index 0000000..4768a1a --- /dev/null +++ b/messages.js @@ -0,0 +1,57 @@ +const c = require('compact-encoding') + +const version = { + preencode (state, v) { + c.uint.preencode(state, v.major) + c.uint.preencode(state, v.minor) + }, + encode (state, v) { + c.uint.encode(state, v.major) + c.uint.encode(state, v.minor) + }, + decode (state, v) { + return { + major: c.uint.decode(state), + minor: c.uint.decode(state) + } + } +} + +const protocol = { + preencode (state, p) { + c.string.preencode(state, p.name) + version.preencode(state, p.version) + c.uint.preencode(state, p.messages) + }, + encode (state, p) { + c.string.encode(state, p.name) + version.encode(state, p.version) + c.uint.encode(state, p.messages) + }, + decode (state, p) { + return { + name: c.string.decode(state), + version: version.decode(state), + messages: c.uint.decode(state) + } + } +} + +const protocolArray = c.array(protocol) + +exports.handshake = { + preencode (state, h) { + state.end++ // reversed flags + protocolArray.preencode(state, h.protocols) + }, + encode (state, h) { + state.buffer[state.start++] = 0 // reversed flags + protocolArray.encode(state, h.protocols) + }, + decode (state) { + c.uint.decode(state) // not using any flags for now + return { + protocols: protocolArray.decode(state) + } + } +}