예제 #1
0
파일: index.go 프로젝트: huangered/beaver
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
파일: needle.go 프로젝트: huangered/beaver
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
}