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">&lt;<a moz-do-not-send=3D"true"
                href=3D"mailto:[email protected]" target=3D"_bla=
nk">[email protected]</a>&gt;</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==--