Miranda whenMoreResolved
From Erights
(Difference between revisions)
(clean up, incorporate javadoc) |
Kevin Reid (Talk | contribs) |
||
Line 1: | Line 1: | ||
- | + | <code>__whenMoreResolved/1</code> is a Miranda message. | |
{{instance msgdoc|__whenMoreResolved|1|<var>reactor</var> :[[OneArgFunc]]|[[void]]}} | {{instance msgdoc|__whenMoreResolved|1|<var>reactor</var> :[[OneArgFunc]]|[[void]]}} | ||
- | + | The overall effect is to notify the <var>reactor</var> when the reference is resolved, or is ''closer'' to being resolved — in particular, when a resolution has changed its target to another vat. {{XXX|poor terminology}} | |
- | + | If the recipient is a [[near ref]], then the Miranda method should be: | |
to __whenMoreResolved(reactor) { | to __whenMoreResolved(reactor) { | ||
reactor <- run(<var>recipient</var>) | reactor <- run(<var>recipient</var>) | ||
return null | return null | ||
} | } | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
? var r := null | ? var r := null | ||
> def ret := 1 <- __whenMoreResolved(fn x { r := x + 1 }) | > def ret := 1 <- __whenMoreResolved(fn x { r := x + 1 }) | ||
- | |||
- | |||
# value: <Promise> | # value: <Promise> | ||
Line 54: | Line 22: | ||
{{XXX|Above tests do not check for reactor<-run rather than reactor.run}} | {{XXX|Above tests do not check for reactor<-run rather than reactor.run}} | ||
+ | |||
+ | If the recipient is a [[local promise]] then it should buffer and forward the message normally. | ||
+ | |||
+ | If the recipient is a [[remote promise]] then {{XXX|Specify the CapTP-related behavior.}} | ||
[[Category:Miranda messages]] | [[Category:Miranda messages]] | ||
[[Category:Pluribus]] | [[Category:Pluribus]] |
Revision as of 15:51, 10 June 2009
__whenMoreResolved/1
is a Miranda message.
__whenMoreResolved/1
- Signature: __whenMoreResolved(reactor :OneArgFunc) :void
The overall effect is to notify the reactor when the reference is resolved, or is closer to being resolved — in particular, when a resolution has changed its target to another vat. XXX poor terminology
If the recipient is a near ref, then the Miranda method should be:
to __whenMoreResolved(reactor) { reactor <- run(recipient) return null }
? var r := null > def ret := 1 <- __whenMoreResolved(fn x { r := x + 1 }) # value: <Promise> ? r # value: 2 ? [ret] # value: [null]
XXX Above tests do not check for reactor<-run rather than reactor.run
If the recipient is a local promise then it should buffer and forward the message normally.
If the recipient is a remote promise then XXX Specify the CapTP-related behavior.