MCPcopy
hub / github.com/ha/doozerd / activate

Function activate

src/pkg/peer/peer.go:205–246  ·  view source on GitHub ↗
(st *store.Store, self string, c *doozer.Conn)

Source from the content-addressed store, hash-verified

203
204
205func activate(st *store.Store, self string, c *doozer.Conn) int64 {
206 rev, _ := st.Snap()
207
208 for _, base := range store.Getdir(st, calDir) {
209 p := calDir + "/" + base
210 v, rev := st.Get(p)
211 if rev != store.Dir && v[0] == "" {
212 seqn, err := c.Set(p, rev, []byte(self))
213 if err != nil {
214 log.Println(err)
215 continue
216 }
217
218 return seqn
219 }
220 }
221
222 for {
223 ch, err := st.Wait(calGlob, rev+1)
224 if err != nil {
225 panic(err)
226 }
227 ev, ok := <-ch
228 if !ok {
229 panic(os.EOF)
230 }
231 rev = ev.Rev
232 // TODO ev.IsEmpty()
233 if ev.IsSet() && ev.Body == "" {
234 seqn, err := c.Set(ev.Path, ev.Rev, []byte(self))
235 if err != nil {
236 log.Println(err)
237 continue
238 }
239 return seqn
240 } else if ev.IsSet() && ev.Body == self {
241 return ev.Seqn
242 }
243 }
244
245 return 0
246}
247
248func advanceUntil(cl *doozer.Conn, ver <-chan int64, done int64) {
249 for <-ver < done {

Callers 1

MainFunction · 0.85

Calls 5

SnapMethod · 0.80
SetMethod · 0.80
WaitMethod · 0.80
IsSetMethod · 0.80
GetMethod · 0.65

Tested by

no test coverage detected