func clearSlot(p consensus.Proposer, g store.Getter, name string) { store.Walk(g, calGlob, func(path, body string, rev int64) bool { if body == name { consensus.Set(p, path, nil, rev) } return false }) }
func removeInfo(p consensus.Proposer, g store.Getter, name string) { glob, err := store.CompileGlob("/ctl/node/" + name + "/**") if err != nil { log.Println(err) return } store.Walk(g, glob, func(path, _ string, rev int64) bool { consensus.Del(p, path, rev) return false }) }
func (t *txn) walk() { if !t.c.raccess { t.respondOsError(syscall.EACCES) return } if t.req.Path == nil || t.req.Offset == nil { t.respondErrCode(response_MISSING_ARG) return } glob, err := store.CompileGlob(*t.req.Path) if err != nil { t.respondOsError(err) return } offset := *t.req.Offset if offset < 0 { t.respondErrCode(response_RANGE) return } go func() { g, err := t.getter() if err != nil { t.respondOsError(err) return } f := func(path, body string, rev int64) (stop bool) { if offset == 0 { t.resp.Path = &path t.resp.Value = []byte(body) t.resp.Rev = &rev t.resp.Flags = proto.Int32(set) t.respond() return true } offset-- return false } if !store.Walk(g, glob, f) { t.respondErrCode(response_RANGE) } }() }