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]> Tue, 10 Mar 2015 12:56:09 -0600
Newsgroups gmane.comp.lang.e.general
Message-ID <[email protected]>
--===============6347801384336593352==
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 bgcolor=3D"#FFFFFF" text=3D"#000000">
    <br>
    <br>
    <div class=3D"moz-cite-prefix">On 3/8/2015 7:35 PM, Rob Withers wrote=
:<br>
    </div>
    <blockquote cite=3D"mid:[email protected]" type=3D"cite">
      <meta content=3D"text/html; charset=3Dwindows-1252"
        http-equiv=3D"Content-Type">
      <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, Ro=
b
              Withers <span dir=3D"ltr">&lt;<a moz-do-not-send=3D"true"
                  href=3D"mailto:[email protected]"
                  target=3D"_blank">[email protected]</a>&gt;</s=
pan>
              wrote:<br>
              <blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0=
px
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
                  realized I had posed such a challenging situation.=A0 I=
n
                  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 GalaxyObj=
ect
        {</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>
    </blockquote>
    <br>
    Hi Mark, does this make sense?=A0 redirectForTheAnswer sends
    getTheAnswer to the arg Ref and returns the promise.=A0 In the code
    below, the arg Ref is Bob, a GalazyObject in a third Vat, so the
    return of redirectForTheAnswer is a RemotePromise.=A0 THe follow on
    message below is #hashCode, is sent to this RemotePromise.<br>
    =A0 <br>
    <blockquote cite=3D"mid:[email protected]" type=3D"cite"><fo=
nt
        face=3D"Palatino Linotype" size=3D"-2"> =A0=A0=A0 =A0=A0=A0 =A0=A0=
=A0 Ref answer =3D
        alice.redirectMessage("redirectForTheAnswer",
        bob).redirectMessage("hashCode");<br>
        =A0 </font><br>
    </blockquote>
    <br>
    - Robert<br>
    <br class=3D"">
    <blockquote cite=3D"mid:[email protected]" type=3D"cite">
      <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>
                <blockquote type=3D"cite">
                  <div class=3D"gmail_extra">
                    <div class=3D"gmail_quote">
                      <blockquote class=3D"gmail_quote" style=3D"margin:0=
px
                        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> 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 4=
2,=A0<br>
                            // =A0=A0=A0 2)=A0<b>hashCode, again 42</b>=A0=
and=A0<br>
                            //=A0=A0 =A0 3)=A0<b>whenMoreResolved</b>, to
                            forward 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 0=
px
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 moz-do-not-send=3D"true" class=3D"moz-txt-link-abbreviated" href=3D"ma=
ilto:[email protected]">[email protected]</a>
<a moz-do-not-send=3D"true" 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>
    </blockquote>
    <br>
  </body>
</html>

--===============6347801384336593352==
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

--===============6347801384336593352==--