Re: Using Vine in 3-way interactions (was Re: Question on redirectors/whenMoreResolved in the 3-way case, in the middle vat)
Rob Withers <[email protected]> Sun, 08 Mar 2015 19:35:04 -0600
| Newsgroups | gmane.comp.lang.e.general |
|---|---|
| Message-ID | <[email protected]> |
--===============3002505023388540964==
Content-Type: text/html; charset=windows-1252
Content-Transfer-Encoding: quoted-printable
<html>
<head>
<meta content=3D"text/html; charset=3Dwindows-1252"
http-equiv=3D"Content-Type">
</head>
<body alink=3D"#EE0000" bgcolor=3D"#ffffff" link=3D"#0B6CDA" text=3D"#0=
00000"
vlink=3D"#551A8B">
<br>
<div class=3D"moz-cite-prefix">On 3/8/2015 5:58 PM, Mark S. Miller
wrote:<br>
</div>
<blockquote
cite=3D"mid:CABHxS9jDZvUtMr5LtPJ65DWSip9bwxzfx0LpGbd_E2auPPfVgw-JsoAwUIsXov1KXRcyAk9cg@public.gmane.org=
l.com"
type=3D"cite">
<div dir=3D"ltr"><br>
<div class=3D"gmail_extra"><br>
<div class=3D"gmail_quote">On Sun, Mar 8, 2015 at 7:33 AM, Rob
Withers <span dir=3D"ltr"><<a moz-do-not-send=3D"true"
href=3D"mailto:[email protected]" target=3D"_bla=
nk">[email protected]</a>></span>
wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-lef=
t-style:solid;padding-left:1ex">
<div bgcolor=3D"#FFFFFF" text=3D"#000000"> I had not realiz=
ed
I had posed such a challenging situation.=A0 In mulling
over what needs to happen, I think the followOn message
send (#hashCode) needs to be a 3-vat situation, <b>of
the Resolver</b>, to prevent GC.=A0 Here are the steps =
I
think are needed, #6 being the point where my system is
failing, due to its absence? <br>
</div>
</blockquote>
<div><br>
</div>
<div>Hi Rob, I don't think I understand the scenario that's
driving this. I went back to the beginning of the thread
and found</div>
</div>
</div>
</div>
</blockquote>
<br>
Hi Mark, I suppose it is best to just post the pertinent code. First
is the GalaxyObject, the test object:<br>
<br>
<font face=3D"Palatino Linotype" size=3D"-2">public class GalaxyObjec=
t {</font><br>
<font face=3D"Palatino Linotype" size=3D"-2">=A0=A0=A0 public int
getTheAnswer() { return 42; }</font><br>
<font face=3D"Palatino Linotype" size=3D"-2">=A0=A0=A0 public Ref
redirectForTheAnswer(Ref ref) throws NotResolvedException { return
ref.redirectMessage("getTheAnswer"); }</font><br>
<font face=3D"Palatino Linotype" size=3D"-2">}</font><br>
<br>
<br>
Then is the actual test code:<br>
<br>
<font face=3D"Palatino Linotype" size=3D"-2">=A0=A0=A0 =A0=A0 =A0=A0=A0=
=A0 Introducer
pauwau1 =3D new Introducer("first", 10001).onTheAir();<br>
=A0=A0=A0 =A0=A0 =A0=A0=A0=A0 Introducer pauwau2 =3D new Introducer=
("second",
10002).onTheAir();<br>
=A0=A0=A0 =A0=A0 =A0=A0=A0=A0 Introducer pauwau3 =3D new Introducer=
("third",
10003).onTheAir();<br>
<br>
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 PauwauUrl aliceUrl =3D pauwau1.makeOr=
ReturnUrl(new
GalaxyObject(), true);<br>
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 PauwauUrl bobUrl =3D pauwau2.makeOrRe=
turnUrl(new
GalaxyObject(), true);<br>
<br>
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 final Ref alice =3D pauwau3.liveRef(a=
liceUrl);<br>
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 final Ref bob =3D pauwau3.liveRef(bob=
Url);<br>
<br>
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 Ref answer =3D
alice.redirectMessage("redirectForTheAnswer",
bob).redirectMessage("hashCode");<br>
=A0=A0=A0 =A0=A0=A0 =A0=A0=A0 log.info("The value is: " + answer.ge=
tReceiver(5000));<br>
</font><br>
- Robert<br>
<br>
<blockquote
cite=3D"mid:CABHxS9jDZvUtMr5LtPJ65DWSip9bwxzfx0LpGbd_E2auPPfVgw-JsoAwUIsXov1KXRcyAk9cg@public.gmane.org=
l.com"
type=3D"cite">
<div dir=3D"ltr">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<div><br>
</div>
<div>
<blockquote type=3D"cite">
<div class=3D"gmail_extra">
<div class=3D"gmail_quote">
<blockquote class=3D"gmail_quote" style=3D"margin:0px
0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-lef=
t-style:solid;padding-left:1ex">
<div bgcolor=3D"#FFFFFF" text=3D"#000000">
<div><br class=3D"">
On 2/22/2015 6:19 PM, Rob Withers wrote:<br>
</div>
<blockquote type=3D"cite">I am stuck, both
conceptually, as well as understanding code I
wrote a long while ago.=A0 I was hoping to gain
a little insight from the list of the insides
of resolution redirection in the 3-way case.=A0
The recent change I have made results from my
thinking I finally understand the ordering
that MirandaMethods ensure.=A0 I made changes
such that a whenMoreResolved directly follows
the message that generates is by adding to the
front of the msg queue.=A0=A0<br>
<br>
In the 3-way case, Carol is sending a message
to Alice, passing Bob.=A0 Alice receives the
message and executes, which sends a message to
Bob, then returns the result to Carol.=A0 In
Alice's vat, the DelayedRedirector is resolved
to the RemotePromise of the call to Bob, the
return of Alice's computation and I think it
sends whenMoreResolved to the proxy of the new
promise resolver of the send to Bob.=A0 What
little tracing I have I am posting below, as
well as the DelayedRedirector value() and the
ProxyResolver resolve() code, at the bottom.=A0
However, this is my question, what should the
redirector do in Alice's Vat to propagate the
resolution from Bob, back to Carol?<br>
<br>
Thank you,<br>
- Robert<br>
<br>
<br>
// There are 3 messages sent to Bob, from
Alice:<br>
// =A0=A0=A0 1) getTheAnswer, which returns 42,=
=A0<br>
// =A0=A0=A0 2)=A0<b>hashCode, again 42</b>=A0a=
nd=A0<br>
//=A0=A0 =A0 3)=A0<b>whenMoreResolved</b>, to f=
orward
to the redirector back in Alice.<br>
</blockquote>
</div>
</blockquote>
</div>
</div>
</blockquote>
</div>
<div><br>
</div>
<div>which still seems to start in the middle, or I may be
misunderstanding. What does the user code do, in what
initial conditions, that set the rest of this scenario in
motion?</div>
<div><br>
</div>
<div><br>
</div>
<div>=A0</div>
<blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-lef=
t-style:solid;padding-left:1ex">
<div bgcolor=3D"#FFFFFF" text=3D"#000000">
<ol>
<li>Carol sends #redirectForTheAnswer to
Alice::GalaxyObject with a ref to Bob::GalaxyObject,
returning a RemotePromise1</li>
<li>Carol sends #hashCode to the RemotePromise1 from
the first send, which forwards to the Promise in
Alice, where it is queued.<br>
</li>
<li>3-way: Carol sends a ProvideFor to Bob and Alice
sends an AcceptFrom to Bob, so Alice resolves
Bob::GalaxyObject.</li>
<li>Alice::GalaxyObject, under computation of
#redirectForTheAnswer, sends #getTheAnswer to
Bob::GalaxyObject, returning a RemotePromise2, in
Alice, from #redirectForTheAnswer.</li>
<li>The pending #hashCode send is sent to the
RemothePromise2, in Alice, which points to Bob.</li>
<li>3-way: In Alice, the redirected #hashCode ought to
become a 3-way for the Resolver in Carol, for the
intial #hashCode send.=A0 Alice would send a
ProvideFor to Carol, for that Resolver and Bob would
send an AcceptFrom to Carol to gain a FarRef to the
Resolver.</li>
<li>Bob::GalaxyObject, under computation of #hashCode,
returns the value 42.</li>
<li>Bob sends the pending #hashCode to 42, and
resolves the gift Resolver. </li>
</ol>
I believe the tricky thing is that it is the Resolver
which is gifted, so it's a different export
"polarization" of the minigraph for a remote send that
has been forwarded. <br>
<br>
Thank you,<br>
Robert<br>
<br>
</div>
</blockquote>
</div>
<br clear=3D"all">
<div><br>
</div>
-- <br>
<div class=3D"gmail_signature">=A0 =A0 Cheers,<br>
=A0 =A0 --MarkM</div>
</div>
</div>
<br>
<fieldset class=3D"mimeAttachmentHeader"></fieldset>
<br>
<pre wrap=3D"">_______________________________________________
e-lang mailing list
<a class=3D"moz-txt-link-abbreviated" href=3D"mailto:[email protected]=
org">[email protected]</a>
<a class=3D"moz-txt-link-freetext" href=3D"http://www.eros-os.org/mailman=
/listinfo/e-lang">http://www.eros-os.org/mailman/listinfo/e-lang</a>
</pre>
</blockquote>
<br>
</body>
</html>
--===============3002505023388540964==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
e-lang mailing list
[email protected]
http://www.eros-os.org/mailman/listinfo/e-lang
--===============3002505023388540964==--