MCPcopy Index your code
hub / github.com/perkeep/perkeep / GetRecentPermanodes

Method GetRecentPermanodes

pkg/search/handler.go:515–558  ·  view source on GitHub ↗

GetRecentPermanodes returns recently-modified permanodes.

(ctx context.Context, req *RecentRequest)

Source from the content-addressed store, hash-verified

513
514// GetRecentPermanodes returns recently-modified permanodes.
515func (h *Handler) GetRecentPermanodes(ctx context.Context, req *RecentRequest) (*RecentResponse, error) {
516 h.index.RLock()
517 defer h.index.RUnlock()
518
519 ch := make(chan camtypes.RecentPermanode)
520 errch := make(chan error, 1)
521 before := time.Now()
522 if !req.Before.IsZero() {
523 before = req.Before
524 }
525 go func() {
526 // TODO(mpl): change index funcs to take signer keyID. dont care for now, just
527 // fixing the essential search and describe ones.
528 errch <- h.index.GetRecentPermanodes(ctx, ch, h.owner.BlobRef(), req.n(), before)
529 }()
530
531 dr := h.NewDescribeRequest()
532
533 var recent []*RecentItem
534 for res := range ch {
535 dr.StartDescribe(ctx, res.Permanode, 2)
536 recent = append(recent, &RecentItem{
537 BlobRef: res.Permanode,
538 Owner: res.Signer,
539 ModTime: types.Time3339(res.LastModTime),
540 })
541 testHookBug121() // http://perkeep.org/issue/121
542 }
543
544 if err := <-errch; err != nil {
545 return nil, err
546 }
547
548 metaMap, err := dr.metaMap()
549 if err != nil {
550 return nil, err
551 }
552
553 res := &RecentResponse{
554 Recent: recent,
555 Meta: metaMap,
556 }
557 return res, nil
558}
559
560func (h *Handler) serveRecentPermanodes(rw http.ResponseWriter, req *http.Request) {
561 defer httputil.RecoverJSON(rw, req)

Callers 1

serveRecentPermanodesMethod · 0.95

Calls 8

NewDescribeRequestMethod · 0.95
StartDescribeMethod · 0.95
metaMapMethod · 0.95
RLockMethod · 0.65
RUnlockMethod · 0.65
GetRecentPermanodesMethod · 0.65
BlobRefMethod · 0.65
nMethod · 0.45

Tested by

no test coverage detected