Make sure routing-updates reflect outer gestalt to updating process

This commit is contained in:
Tony Garnock-Jones 2014-05-25 23:22:59 -04:00
parent 52342e9ce5
commit 4c2abd334c
1 changed files with 5 additions and 4 deletions

View File

@ -272,7 +272,7 @@
(log-info "Process ~a terminating; ~a processes remain"
pid
(hash-count (world-process-table w)))
(apply-and-issue-routing-update w (process-gestalt p) (gestalt-empty) (set)))
(apply-and-issue-routing-update w (process-gestalt p) (gestalt-empty) (set pid)))
(transition w '()))]
[(routing-update gestalt)
(define pt (world-process-table w))
@ -300,9 +300,10 @@
(define affected-pids (gestalt-match affected-subgestalt g))
(define pt (world-process-table w))
(for/fold ([w w]) [(pid (in-set (set-union known-targets affected-pids)))]
(define p (hash-ref pt pid))
(define g1 (gestalt-filter g (process-gestalt p)))
(apply-transition pid (deliver-event (routing-update g1) pid p) w))]))
(match (hash-ref pt pid (lambda () #f))
[#f w]
[p (define g1 (gestalt-filter g (process-gestalt p)))
(apply-transition pid (deliver-event (routing-update g1) pid p) w)]))]))
;; This is roughly the "schedule" rule of the calculus.
(define (step-children w)