|
|
|
|
@ -1244,9 +1244,17 @@
|
|
|
|
|
;; If we're pointing at another near promise then we recurse |
|
|
|
|
;; to _handle-messages with the next promise... |
|
|
|
|
[(? local-promise-refr?) |
|
|
|
|
;; (We don't use call-with-resolution because the next one will!) |
|
|
|
|
(_handle-message (message point-to resolve-me kws kw-vals args) |
|
|
|
|
display-or-log-error)] |
|
|
|
|
;; Now we need to see if it's in the same vat... |
|
|
|
|
(cond |
|
|
|
|
[(near-refr? point-to) |
|
|
|
|
;; (We don't use call-with-resolution because the next one will!) |
|
|
|
|
(_handle-message (message point-to resolve-me kws kw-vals args) |
|
|
|
|
display-or-log-error)] |
|
|
|
|
[else |
|
|
|
|
;; Otherwise, we need to forward this message to the appropriate |
|
|
|
|
;; vat |
|
|
|
|
(_send-message kws kw-vals point-to resolve-me args) |
|
|
|
|
`#(success ,(void))])] |
|
|
|
|
;; But if it's a remote promise then we queue it in the waiting |
|
|
|
|
;; messages because we prefer to have messages "swim as close |
|
|
|
|
;; as possible to the machine barrier where possible", with |
|
|
|
|
@ -1262,7 +1270,7 @@
|
|
|
|
|
point-to history |
|
|
|
|
(cons msg waiting-messages))) |
|
|
|
|
;; But we should return that this was deferred |
|
|
|
|
'#(deferred #f)])] |
|
|
|
|
'#(deferred ,(void))])] |
|
|
|
|
;; Similar to the above w/ remote promises, except that we really |
|
|
|
|
;; just don't know where things go *at all* yet, so no swimming |
|
|
|
|
;; occurs. |
|
|
|
|
@ -1272,7 +1280,7 @@
|
|
|
|
|
(mactor:naive resolver-unsealer resolver-tm? |
|
|
|
|
listeners |
|
|
|
|
(cons msg waiting-messages))) |
|
|
|
|
'#(deferred #f)] |
|
|
|
|
`#(deferred ,(void))] |
|
|
|
|
;; Questions should forward their messages to the captp thread |
|
|
|
|
;; to deal with using the relevant question-finder. |
|
|
|
|
[(? mactor:question?) |
|
|
|
|
|