This repository has been archived on 2024-04-07. You can view files and clone it, but cannot push or open issues or pull requests.
go-monero/pkg/levin/boost.go
Ciro S. Costa 07252dc77e cmd/monero: p2p-handshake --> p2p-peer-list
Signed-off-by: Ciro S. Costa <utxobr@protonmail.com>
2021-04-21 08:36:06 -04:00

75 lines
1.3 KiB
Go

package levin
import (
"encoding/binary"
"fmt"
)
const (
BoostSerializeTypeInt64 byte = 0x1
BoostSerializeTypeInt32 byte = 0x2
BoostSerializeTypeInt16 byte = 0x3
BoostSerializeTypeInt8 byte = 0x4
BoostSerializeTypeUint64 byte = 0x5
BoostSerializeTypeUint32 byte = 0x6
BoostSerializeTypeUint16 byte = 0x7
BoostSerializeTypeUint8 byte = 0x8
BoostSerializeTypeDouble byte = 0x9
BoostSerializeTypeString byte = 0x0a
BoostSerializeTypeBool byte = 0x0b
BoostSerializeTypeObject byte = 0x0c
BoostSerializeTypeArray byte = 0xd
BoostSerializeFlagArray byte = 0x80
)
type BoostByte byte
func (v BoostByte) Bytes() []byte {
return []byte{
BoostSerializeTypeUint8,
byte(v),
}
}
type BoostUint32 uint32
func (v BoostUint32) Bytes() []byte {
b := []byte{
BoostSerializeTypeUint32,
0x00, 0x00, 0x00, 0x00,
}
binary.LittleEndian.PutUint32(b[1:], uint32(v))
return b
}
type BoostUint64 uint64
func (v BoostUint64) Bytes() []byte {
b := []byte{
BoostSerializeTypeUint64,
0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00,
}
binary.LittleEndian.PutUint64(b[1:], uint64(v))
return b
}
type BoostString string
func (v BoostString) Bytes() []byte {
b := []byte{BoostSerializeTypeString}
varInB, err := VarIn(len(v))
if err != nil {
panic(fmt.Errorf("varin '%d': %w", len(v), err))
}
return append(b, append(varInB, []byte(v)...)...)
}