missing messages.js

This commit is contained in:
Mathias Buus 2021-11-15 16:12:21 +01:00
parent ce309533f4
commit e8acc3934f
1 changed files with 57 additions and 0 deletions

57
messages.js Normal file
View File

@ -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)
}
}
}