Пример #1
0
func (n *needle) parse(buf []byte) {
	n.Key = parser.Int64(buf)
	n.AlterKey = parser.Int64(buf[keySize:])
	n.Flags = buf[keySize+alterKeySize]
	n.Offset = parser.Int64(buf[keySize+alterKeySize+flatsSize:])
	n.Size = parser.Int64(buf[keySize+alterKeySize+flatsSize+offsetSize:])
}
Пример #2
0
func (n *Needle) ParseHeader(buf []byte) (err int) {
	var bn int
	n.Header = buf[:magicSize]
	if !bytes.Equal(n.Header, headerMagic) {
		err = 1
		return
	}
	bn += magicSize
	// cookie
	n.Cookie = parser.Int64(buf[bn:])
	bn += cookieSize
	// key
	n.Key = parser.Int64(buf[bn:])
	bn += keySize
	// alter key
	n.AlternateKey = parser.Int32(buf[bn:])
	bn += alternateKeySize
	n.Flags = buf[bn]
	if n.Flags != FlagOk && n.Flags != FlagDel {
		err = 2
		return
	}
	bn += flagsSize
	// size
	n.Size = parser.Int64(buf[bn:])
	return
}