Only compute downward patch when needed

This commit is contained in:
Tony Garnock-Jones 2015-03-21 18:59:20 -04:00
parent 1467912f57
commit d5ce38162b
1 changed files with 3 additions and 5 deletions

View File

@ -53,10 +53,7 @@
;; be minimal with respect to existing interests of its label.
(define old-routing-table (mux-routing-table m))
(define new-routing-table (apply-patch old-routing-table delta))
(define delta-aggregate
(compute-aggregate-patch delta label old-routing-table))
(define delta-aggregate/no-meta
(compute-aggregate-patch delta label old-routing-table #:remove-meta? #t))
(define delta-aggregate (compute-aggregate-patch delta label old-routing-table))
(define affected-pids (let ((pids (compute-affected-pids old-routing-table delta)))
(set-remove (set-add pids label) 'meta))) ;; TODO: removing meta is weird
(values (struct-copy mux m [routing-table new-routing-table])
@ -72,7 +69,8 @@
[else
(cons pid (view-patch delta-aggregate (mux-interests-of m pid)))]))
(and (not (meta-label? label))
(drop-patch delta-aggregate/no-meta)))))
(drop-patch
(compute-aggregate-patch delta label old-routing-table #:remove-meta? #t))))))
(define (compute-affected-pids routing-table delta)
(define cover (matcher-union (patch-added delta) (patch-removed delta)))