http://wiki.erights.org/mediawiki/index.php?title=Object_Ref&feed=atom&action=history
Object Ref - Revision history
2024-03-29T15:18:42Z
Revision history for this page on the wiki
MediaWiki 1.15.5-7
http://wiki.erights.org/mediawiki/index.php?title=Object_Ref&diff=1749&oldid=prev
Kevin Reid: add when* methods from javadoc
2010-08-28T16:58:04Z
<p>add when* methods from javadoc</p>
<p><b>New page</b></p><div>[[Ref]] is an object available in the [[universal environment]] which provides the basic operations on [[ref]]s other than call and send.<br />
<br />
? Ref<br />
# value: Ref<br />
<br />
== Protocol ==<br />
{{XXX|completely specify and test behavior}}<br />
<br />
{{instance msgdoc|resolution|1|<var>ref</var> :[[any]]|[[any]]}}<br />
<br />
Observably, this operation returns <var>ref</var> or something indistinguishable from it. If applicable in the implementation, if <var>ref</var> is a forwarder such as a resolved promise, it will return the referent, and any other such applicable optimizations.<br />
<br />
{{instance msgdoc|fulfillment|1|<var>ref</var> :[[any]]|[[any]]}}<br />
<br />
Requires that <var>ref</var> is [[fulfilled]].<br />
<br />
If <var>ref</var> is<br />
* [[fulfilled]] (resolved and not broken), then <code>Ref.fulfillment(<var>ref</var>)</code> returns <code>[[#resolution/1|Ref.resolution]](<var>ref</var>)</code>.<br />
* a [[promise]] (unresolved), then <code>Ref.fulfillment(<var>ref</var>)</code> throws indicating this. {{XXX|Specify exception type?}}<br />
* [[broken]], then <code>Ref.fulfillment(<var>ref</var>)</code> throws its problem.<br />
<br />
{{instance msgdoc|promise|0||[[Tuple]]<nowiki>[</nowiki>[[Promise]], [[LocalResolver]]]}}<br />
<br />
{{unspecified message}}<br />
<br />
{{instance msgdoc|broken|1|<var>problem</var> :[[Exception]]|[[broken]]}}<br />
<br />
{{unspecified message}}<br />
<br />
# Regression test<br />
? Ref.broken(null)<br />
# problem: <NullPointerException: Missing problem><br />
<br />
{{instance msgdoc|whenResolved|2|<var>ref</var> :[[any]], <var>reactor</var> :[[OneArgFunc]]|{{sub|[[vow]]|[[any]]}} }}<br />
<br />
Used for the when-catch construct {{XXX|add link}}.<br />
<br />
If <var>ref</var> never becomes resolved, the reactor is not invoked. Should <var>ref</var> become resolved, <var>reactor</var> will be invoked exactly once. For example, if <var>ref</var> becomes fulfilled and then broken, <var>reactor</var> will hear of exactly one of these events.<br />
<br />
Once <var>ref</var> becomes resolved <var>reactor</var> will be invoked with the resolution. Should <var>reactor</var> be invoked with a non-broken value (and therefore a fulfilled value), all earlier messages sent on <var>ref</var> before the whenResolved are guaranteed to have been successfully delivered.<br />
<br />
{{instance msgdoc|whenResolvedOnly|2|<var>ref</var> :[[any]], <var>reactor</var> :[[OneArgFunc]]|[[void]]}}<br />
<br />
Like whenResolved/2 but without a conventional return result. Use this when you don't care about the return value of <var>reactor</var>.<br />
<br />
<br />
{{instance msgdoc|whenBroken|2|<var>ref</var> :[[any]], <var>reactor</var> :[[OneArgFunc]]|{{sub|[[vow]]|[[any]]}} }}<br />
<br />
Should a breakable reference ever become broken, even if it became fulfilled in the meantime, then the reactor is invoked once with a broken reference.<br />
<br />
A vat-crossing reference that gets garbage collected before a partition is not broken by that partition, and therefore doesn't need to inform the reactor. Once a reference is logically garbage (unreachable), it may or may not have been collected yet, and so may or may not inform the reactor of partitions that happen after it is garbage.<br />
<br />
Returns a promise that will resolve to the outcome of calling the reactor, as explained [http://www.eros-os.org/pipermail/e-lang/2001-August/005638.html here]. Note that, if ref becomes near, it'll never break, so the returned promise will never be resolved!<br />
<br />
{{instance msgdoc|whenBrokenOnly|2|<var>ref</var> :[[any]], <var>reactor</var> :[[OneArgFunc]]|[[void]]}}<br />
<br />
Like whenBroken/2 but without a conventional return result. Use this when you don't care about the return value of <var>reactor</var>.<br />
<br />
[[Category:Incomplete specifications]]<br />
{{stub}}<br />
[[Category:ELib specification]]</div>
Kevin Reid
http://wiki.erights.org/mediawiki/index.php?title=Object_Ref&diff=3817&oldid=prev
Kevin Reid: /* Protocol */ add resolution/1, fulfillment/1
2009-07-02T14:56:36Z
<p><span class="autocomment">Protocol: </span> add resolution/1, fulfillment/1</p>
<table style="background-color: white; color:black;">
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">←Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 14:56, 2 July 2009</td>
</tr>
<tr><td colspan="2" class="diff-lineno">Line 6:</td>
<td colspan="2" class="diff-lineno">Line 6:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>== Protocol ==</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>== Protocol ==</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>{{XXX|completely specify and test behavior}}</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>{{XXX|completely specify and test behavior}}</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">{{instance msgdoc|resolution|1|<var>ref</var> :[[any]]|[[any]]}}</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Observably, this operation returns <var>ref</var> or something indistinguishable from it. If applicable in the implementation, if <var>ref</var> is a forwarder such as a resolved promise, it will return the referent, and any other such applicable optimizations.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">{{instance msgdoc|fulfillment|1|<var>ref</var> :[[any]]|[[any]]}}</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">Requires that <var>ref</var> is [[fulfilled]].</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">If <var>ref</var> is</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">* [[fulfilled]] (resolved and not broken), then <code>Ref.fulfillment(<var>ref</var>)</code> returns <code>[[#resolution/1|Ref.resolution]](<var>ref</var>)</code>.</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">* a [[promise]] (unresolved), then <code>Ref.fulfillment(<var>ref</var>)</code> throws indicating this. {{XXX|Specify exception type?}}</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">* [[broken]], then <code>Ref.fulfillment(<var>ref</var>)</code> throws its problem.</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>{{instance msgdoc|promise|0||[[Tuple]]<nowiki>[</nowiki>[[Promise]], [[LocalResolver]]]}}</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>{{instance msgdoc|promise|0||[[Tuple]]<nowiki>[</nowiki>[[Promise]], [[LocalResolver]]]}}</div></td></tr>
<!-- diff generator: internal 2024-03-29 15:18:42 -->
</table>
Kevin Reid
http://wiki.erights.org/mediawiki/index.php?title=Object_Ref&diff=3816&oldid=prev
Kevin Reid: bad colon
2009-05-14T22:00:52Z
<p>bad colon</p>
<table style="background-color: white; color:black;">
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">←Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 22:00, 14 May 2009</td>
</tr>
<tr><td colspan="2" class="diff-lineno">Line 11:</td>
<td colspan="2" class="diff-lineno">Line 11:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>{{unspecified message}}</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>{{unspecified message}}</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div>{{instance msgdoc|broken|1|<var>problem</var> :[[Exception]]| <del class="diffchange diffchange-inline">:</del>[[broken]]}}</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>{{instance msgdoc|broken|1|<var>problem</var> :[[Exception]]|[[broken]]}}</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>{{unspecified message}}</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>{{unspecified message}}</div></td></tr>
<!-- diff generator: internal 2024-03-29 15:18:42 -->
</table>
Kevin Reid
http://wiki.erights.org/mediawiki/index.php?title=Object_Ref&diff=3815&oldid=prev
Kevin Reid: add some msgdoc
2009-05-14T22:00:26Z
<p>add some msgdoc</p>
<table style="background-color: white; color:black;">
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">←Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 22:00, 14 May 2009</td>
</tr>
<tr><td colspan="2" class="diff-lineno">Line 5:</td>
<td colspan="2" class="diff-lineno">Line 5:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>== Protocol ==</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>== Protocol ==</div></td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div>{{XXX<del class="diffchange diffchange-inline">}} </del>specify and test behavior</div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>{{XXX<ins class="diffchange diffchange-inline">|completely </ins>specify and test behavior<ins class="diffchange diffchange-inline">}}</ins></div></td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del class="diffchange diffchange-inline">[[Category:Incomplete specifications]]</del></div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">{{instance msgdoc|promise|0||[[Tuple]]<nowiki>[</nowiki>[[Promise]], [[LocalResolver]]]}}</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">{{unspecified message}}</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">{{instance msgdoc|broken|1|<var>problem</var> :[[Exception]]| :[[broken]]}}</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">{{unspecified message}}</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> # Regression test</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> ? Ref.broken(null)</ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"> # problem: <NullPointerException: Missing problem></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins style="color: red; font-weight: bold; text-decoration: none;">[[Category:Incomplete specifications]]</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>{{stub}}</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>{{stub}}</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>[[Category:ELib specification]]</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>[[Category:ELib specification]]</div></td></tr>
<!-- diff generator: internal 2024-03-29 15:18:42 -->
</table>
Kevin Reid
http://wiki.erights.org/mediawiki/index.php?title=Object_Ref&diff=3814&oldid=prev
Kevin Reid: stub, note missing tests
2009-01-14T00:25:30Z
<p>stub, note missing tests</p>
<table style="background-color: white; color:black;">
<col class='diff-marker' />
<col class='diff-content' />
<col class='diff-marker' />
<col class='diff-content' />
<tr valign='top'>
<td colspan='2' style="background-color: white; color:black;">←Older revision</td>
<td colspan='2' style="background-color: white; color:black;">Revision as of 00:25, 14 January 2009</td>
</tr>
<tr><td colspan="2" class="diff-lineno">Line 5:</td>
<td colspan="2" class="diff-lineno">Line 5:</td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>== Protocol ==</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>== Protocol ==</div></td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div>{{XXX<del class="diffchange diffchange-inline">|completely </del>specify and test behavior<del class="diffchange diffchange-inline">}}</del></div></td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div>{{XXX<ins class="diffchange diffchange-inline">}} </ins>specify and test behavior</div></td></tr>
<tr><td colspan="2"> </td><td class='diff-marker'>+</td><td style="background: #cfc; color:black; font-size: smaller;"><div><ins class="diffchange diffchange-inline">[[Category:Incomplete specifications]]</ins></div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"></td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">{{instance msgdoc|resolution|1|<var>ref</var> :[[any]]|[[any]]}}</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">Observably, this operation returns <var>ref</var> or something indistinguishable from it. If applicable in the implementation, if <var>ref</var> is a forwarder such as a resolved promise, it will return the referent, and any other such applicable optimizations.</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">{{instance msgdoc|fulfillment|1|<var>ref</var> :[[any]]|[[any]]}}</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">Requires that <var>ref</var> is [[fulfilled]].</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">If <var>ref</var> is</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">* [[fulfilled]] (resolved and not broken), then <code>Ref.fulfillment(<var>ref</var>)</code> returns <code>[[#resolution/1|Ref.resolution]](<var>ref</var>)</code>.</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">* a [[promise]] (unresolved), then <code>Ref.fulfillment(<var>ref</var>)</code> throws indicating this. {{XXX|Specify exception type?}}</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">* [[broken]], then <code>Ref.fulfillment(<var>ref</var>)</code> throws its problem.</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">{{instance msgdoc|promise|0||[[Tuple]]<nowiki>[</nowiki>[[Promise]], [[LocalResolver]]]}}</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">{{unspecified message}}</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">{{instance msgdoc|broken|1|<var>problem</var> :[[Exception]]|[[broken]]}}</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">{{unspecified message}}</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"> # Regression test</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"> ? Ref.broken(null)</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"> # problem: <NullPointerException: Missing problem></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">{{instance msgdoc|whenResolved|2|<var>ref</var> :[[any]], <var>reactor</var> :[[OneArgFunc]]|{{sub|[[vow]]|[[any]]}} }}</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">Used for the when-catch construct {{XXX|add link}}.</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">If <var>ref</var> never becomes resolved, the reactor is not invoked. Should <var>ref</var> become resolved, <var>reactor</var> will be invoked exactly once. For example, if <var>ref</var> becomes fulfilled and then broken, <var>reactor</var> will hear of exactly one of these events.</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">Once <var>ref</var> becomes resolved <var>reactor</var> will be invoked with the resolution. Should <var>reactor</var> be invoked with a non-broken value (and therefore a fulfilled value), all earlier messages sent on <var>ref</var> before the whenResolved are guaranteed to have been successfully delivered.</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">{{instance msgdoc|whenResolvedOnly|2|<var>ref</var> :[[any]], <var>reactor</var> :[[OneArgFunc]]|[[void]]}}</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">Like whenResolved/2 but without a conventional return result. Use this when you don't care about the return value of <var>reactor</var>.</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">{{instance msgdoc|whenBroken|2|<var>ref</var> :[[any]], <var>reactor</var> :[[OneArgFunc]]|{{sub|[[vow]]|[[any]]}} }}</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">Should a breakable reference ever become broken, even if it became fulfilled in the meantime, then the reactor is invoked once with a broken reference.</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">A vat-crossing reference that gets garbage collected before a partition is not broken by that partition, and therefore doesn't need to inform the reactor. Once a reference is logically garbage (unreachable), it may or may not have been collected yet, and so may or may not inform the reactor of partitions that happen after it is garbage.</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">Returns a promise that will resolve to the outcome of calling the reactor, as explained [http://www.eros-os.org/pipermail/e-lang/2001-August/005638.html here]. Note that, if ref becomes near, it'll never break, so the returned promise will never be resolved!</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">{{instance msgdoc|whenBrokenOnly|2|<var>ref</var> :[[any]], <var>reactor</var> :[[OneArgFunc]]|[[void]]}}</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">Like whenBroken/2 but without a conventional return result. Use this when you don't care about the return value of <var>reactor</var>.</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'>-</td><td style="background: #ffa; color:black; font-size: smaller;"><div><del style="color: red; font-weight: bold; text-decoration: none;">[[Category:Incomplete specifications]]</del></div></td><td colspan="2"> </td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>{{stub}}</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>{{stub}}</div></td></tr>
<tr><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>[[Category:ELib specification]]</div></td><td class='diff-marker'> </td><td style="background: #eee; color:black; font-size: smaller;"><div>[[Category:ELib specification]]</div></td></tr>
<!-- diff generator: internal 2024-03-29 15:18:42 -->
</table>
Kevin Reid