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:]) }
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 }