tbotd/vendor/src/github.com/Sereal/Sereal/Go/sereal/const.go

69 lines
2.0 KiB
Go

package sereal
// ProtocolVersion is a maximum version supported by the sereal package.
const ProtocolVersion = 3
// magicHeadrBytes is a magic string for header. Every packet in protocol
// version 1 and 2 starts with this.
const magicHeaderBytes = uint32(0x6c72733d) // "=srl"
// magicHeaderBytesHighBit is a new magic string for header used in protocol
// version 3 and up, with high bit set for UTF8 sanity check. It is an error to
// use a new magic header on a v1 or v2 packet, and it is an error to use the
// old magic header in v3 or later.
const magicHeaderBytesHighBit = uint32(0x6c72f33d) // "=\xF3rl"
// magicHeaderBytesHighBitUTF8 is a magic string for header v3, corrupted by
// accidental UTF8 encoding. It makes it easy to detect when a Sereal document
// has been accidentally UTF-8 encoded because the \xF3 is translated to
// \xC3\xB3.
const magicHeaderBytesHighBitUTF8 = uint32(0x72b3c33d) // "=\xC3\xB3r"
const headerSize = 5 // 4 magic + 1 version-type
type documentType int
const (
serealRaw documentType = iota
serealSnappy
serealSnappyIncremental
serealZlib
)
type typeTag byte
const trackFlag = byte(0x80)
const (
typeVARINT = 0x20
typeZIGZAG = 0x21
typeFLOAT = 0x22
typeDOUBLE = 0x23
typeLONG_DOUBLE = 0x24
typeUNDEF = 0x25
typeBINARY = 0x26
typeSTR_UTF8 = 0x27
typeREFN = 0x28
typeREFP = 0x29
typeHASH = 0x2a
typeARRAY = 0x2b
typeOBJECT = 0x2c
typeOBJECTV = 0x2d
typeALIAS = 0x2e
typeCOPY = 0x2f
typeWEAKEN = 0x30
typeREGEXP = 0x31
typeOBJECT_FREEZE = 0x32
typeOBJECTV_FREEZE = 0x33
typeCANONICAL_UNDEF = 0x39
typeFALSE = 0x3a
typeTRUE = 0x3b
typeMANY = 0x3c
typePACKET_START = 0x3d
typeEXTEND = 0x3e
typePAD = 0x3f
typeARRAYREF_0 = 0x40
typeHASHREF_0 = 0x50
typeSHORT_BINARY_0 = 0x60
)