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]> Sat, 07 Mar 2015 16:28:02 -0700
Newsgroups gmane.comp.lang.e.general
Message-ID <[email protected]>
--===============2344462795294067077==
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">
    Thanks for all the reticent help over the years, everyone.=A0 It's
    been fun.=A0 Such a pity that that help seems permanently revoked,
    like an untrusted capability.=A0 I must not have participated well in
    the social context, but that is par for the course for folks with
    Aspergers, I am learning.=A0 I just can't ever seem to say the right
    thing and more often than not, I piss people off.=A0 The issue is I
    truly just don't get it.=A0 <br>
    <br>
    Best regards, <br>
    <div class=3D"moz-forward-container">Robert</div>
    <br>
    <div class=3D"moz-cite-prefix">On 3/4/2015 9:27 AM, 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">
      Might someone be able to comment on this, please?=A0 It would help
      me a great deal.=A0 I do not think it is the unimplemented far3Desc
      situation.<br>
      <br>
      Thanks,<br>
      Robert<br>
      <br>
      <div class=3D"moz-cite-prefix">On 3/1/2015 3:12 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">
        I see.=A0 Could you comment on how a Vine (and
        promise3Desc/far3Desc) get introduced into the machinery when a
        followOn msg gets forwarded to a third vat?=A0 In my example,
        redirectForTheAnswer sends getTheAnswer to Bob and returns a
        RemotePromise, which receives a hashCode followOn msg, forwarded
        to Bob.<br>
        <br>
        - Robert<br>
        <br>
        <div class=3D"moz-cite-prefix">On 3/1/2015 2:56 PM, Mark S. Mille=
r
          wrote:<br>
        </div>
        <blockquote
cite=3D"mid:CABHxS9gPLwxyOXGLciZENBVuWHQs5F7Q+xwJ4TqRAheCpBa44w-JsoAwUIsXov1KXRcyAk9cg@public.gmane.org=
l.com"
          type=3D"cite">
          <div dir=3D"ltr">No, the 2-vat interactions never use, or engag=
e
            in any way with, vines, promise3Desc or far3Desc.
            <div><br>
            </div>
          </div>
          <div class=3D"gmail_extra"><br>
            <div class=3D"gmail_quote">On Sun, Mar 1, 2015 at 9:37 AM,
              Robert 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:0 0 0
                .8ex;border-left:1px #ccc solid;padding-left:1ex">I have
                a question about elib. Do you use promise3Desc and
                far3Desc for 2-vat interactions such that a vine is
                always in play in any interaction?<br>
                <br>
                - Robert
                <div class=3D"HOEnZb">
                  <div class=3D"h5"><br>
                    <br>
                    Rob Withers &lt;<a moz-do-not-send=3D"true"
                      href=3D"mailto:[email protected]"
                      target=3D"_blank">[email protected]</a>&gt=
;
                    wrote:<br>
                    <br>
                    Mark, your instincts were right on, it seems.=A0 I
                    have an issue with my use of the Vine and on
                    reflection it makes perfect sense. I am bending the
                    send from Carol to Alice over to Bob, so as it is a
                    3-way interaction, I need a Vine.=A0 In analyzing ELi=
b
                    code, you have 9 references to the Vine's
                    constructor, while I only have 7 (minus an extra
                    unused constructor I have).=A0 It is going to require
                    some digging to unearth what I am missing, but the
                    direction is clear.=A0 The place it blows up is in my
                    ProxyResolver.resolve() method, as the WeakReference
                    has lost the ref.=A0 However, this is not where the
                    reference is maintained.=A0 I suspect it may be a lac=
k
                    of an IdentityManager.<br>
                    <br>
                    I republished my code to: <a moz-do-not-send=3D"true"
                      href=3D"https://github.com/tooantuh/pauwau"
                      target=3D"_blank">https://github.com/tooantuh/pauwa=
u</a>.=A0


                    The tests pass, though there is an issue with the
                    RefTests and TestPauwau2VatException, as well as
                    this issue affecting TestPauwau3VatFollowOnSend.=A0
                    Additionally, the presentation tests need to be run
                    one at a time as stopping and starting the
                    Introducers can step on each other.<br>
                    <br>
                    thank you,<br>
                    Robert<br>
                    <br>
                    <div>On 2/22/2015 8:02 PM, Mark S. Miller wrote:<br>
                    </div>
                    <blockquote type=3D"cite">
                      <div dir=3D"ltr">Have you looked at the Vine? Searc=
h
                        for "Vine" at=A0<a moz-do-not-send=3D"true"
                          href=3D"http://erights.org/elib/distrib/captp/i=
ndex.html"
                          target=3D"_blank">http://erights.org/elib/distr=
ib/captp/index.html</a>
                        <div>and in the source code of=A0<a
                            moz-do-not-send=3D"true"
                            href=3D"https://code.google.com/p/caja-captp/=
"
                            target=3D"_blank">https://code.google.com/p/c=
aja-captp/</a></div>
                        <div><br>
                        </div>
                        <div>I don't quite understand your question, so
                          I'm not sure if this is even relevant to the
                          answer. Is it?</div>
                        <div><br>
                        </div>
                        <div><br>
                        </div>
                      </div>
                      <div class=3D"gmail_extra"><br>
                        <div class=3D"gmail_quote">On Sun, Feb 22, 2015 a=
t
                          5:51 PM, Rob Withers <span dir=3D"ltr">&lt;<a
                              moz-do-not-send=3D"true"
                              href=3D"mailto:[email protected]"
                              target=3D"_blank">[email protected]=
m</a>&gt;</span>
                          wrote:<br>
                          <blockquote class=3D"gmail_quote"
                            style=3D"margin:0 0 0 .8ex;border-left:1px
                            #ccc solid;padding-left:1ex">
                            <div bgcolor=3D"#FFFFFF" text=3D"#000000"> I
                              found some more info: it looks as if the
                              Ref in Alice's ProxyResolver is being
                              GCed, before resolution from Bob.=A0 This i=
s
                              specific to my machinery, but knowing how
                              Elib maintains a reference to the Ref, in
                              this case, may help make mine better. How
                              does Elib handle this?<br>
                              <br>
                              Thank you,<br>
                              - Robert
                              <div>
                                <div><br>
                                  <br>
                                  <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 <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?<b=
r>
                                    <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, <br>
                                    // =A0=A0=A0 2) <b>hashCode, again 42=
</b>
                                    and <br>
                                    //=A0=A0 =A0 3) <b>whenMoreResolved</=
b>,
                                    to forward to the redirector back in
                                    Alice.<br>
                                    <br>
                                    0 [main] INFO
                                    cc.ganymede.pauwau.presentation.Abstr=
actPauwauTest=A0
                                    - 3 Introducers starting<br>
                                    549 [main] INFO
                                    cc.ganymede.pauwau.presentation.Abstr=
actPauwauTest=A0
                                    - 3 Introducers on the air<br>
                                    4553 [main] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    DeliverMessage(receiverId: 0
                                    answerId: -1 resolverId: -1 action:
                                    lookupSwiss args:
                                    [497273074681788564315291637588644948=
944089734358])<br>
                                    4952 [first-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    DeliverMessage(receiverId: 0
                                    answerId: -1 resolverId: null
                                    action: lookupSwiss args:
                                    [497273074681788564315291637588644948=
944089734358])<br>
                                    4958 [first-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    DeliverOnlyMessage(receiverId: 1
                                    action: value args:
                                    [NearRefImpl(hash: 109537538,
                                    receiver: TestObject)])<br>
                                    4998 [third-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    DeliverOnlyMessage(receiverId: 1
                                    action: value args:
                                    [FarRefImpl(hash: 68783569)])<br>
                                    5353 [main] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    DeliverMessage(receiverId: 0
                                    answerId: -1 resolverId: -1 action:
                                    lookupSwiss args:
                                    [-68625483170285595598032952954058758=
5277617841038])<br>
                                    5593 [second-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    DeliverMessage(receiverId: 0
                                    answerId: -1 resolverId: null
                                    action: lookupSwiss args:
                                    [-68625483170285595598032952954058758=
5277617841038])<br>
                                    5593 [second-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    DeliverOnlyMessage(receiverId: 1
                                    action: value args:
                                    [NearRefImpl(hash: 1530099003,
                                    receiver: TestObject)])<br>
                                    6201 [main] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    DeliverMessage(receiverId: -1
                                    answerId: -2 resolverId: -2 action:
                                    redirectForTheAnswer args:
                                    [RemotePromiseRefImpl(hash:
                                    1034568234)])<br>
                                    6203 [main] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    DeliverMessage(receiverId: 0
                                    answerId: -2 resolverId: -2 action:
                                    provideFor args:
                                    [-56868728519600488495448099048897359=
1228663758441,
                                    RemotePromiseRefImpl(hash:
                                    1034568234),
-676914875674370369045480105305401075435688776666])<br>
                                    6239 [main] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    DeliverMessage(receiverId: -2
                                    answerId: -3 resolverId: -3 action:
                                    hashCode args: [])<br>
                                    6255 [second-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    DeliverMessage(receiverId: 0
                                    answerId: -2 resolverId: null
                                    action: provideFor args:
                                    [-56868728519600488495448099048897359=
1228663758441,
                                    NearRefImpl(hash: 1530099003,
                                    receiver: TestObject),
                                    -676914875674370369045480105305401075=
435688776666])<br>
                                    6259 [second-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    DeliverOnlyMessage(receiverId: 2
                                    action: value args:
                                    [NearRefImpl(hash: 1323165787,
                                    receiver:
                                    cc.ganymede.pauwau.presentation.lib.v=
at.Vine@4842def1)])<br>
                                    6403 [first-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    DeliverMessage(receiverId: 0
                                    answerId: -1 resolverId: -1 action:
                                    acceptFrom args:
                                    [HouseAtreides:10003/-687934017861573=
292334955567350102524989066643525,
-676914875674370369045480105305401075435688776666,
cc.ganymede.pauwau.presentation.lib.vat.Vine@6a8400ff])<br>
                                    6410 [first-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    DeliverMessage(receiverId: -1
                                    answerId: -2 resolverId: null
                                    action: redirectForTheAnswer args:
                                    [RemotePromiseRefImpl(hash:
                                    598908224)])<br>
                                    6411 [first-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    DeliverMessage(receiverId: -2
                                    answerId: -3 resolverId: null
                                    action: hashCode args: [])<br>
                                    6411 [first-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    DeliverMessage(receiverId: -1
                                    answerId: -2 resolverId: -2 action:
                                    getTheAnswer args: [])<br>
                                    6412 [first-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    DeliverMessage(receiverId: -2
                                    answerId: -3 resolverId: -3 action:
                                    hashCode args: [])<br>
                                    6412 [first-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    DeliverOnlyMessage(receiverId: -2
                                    action: whenMoreResolved args:
                                    [RedirectorProxy: FarRefImpl(hash:
                                    177595052)])<br>
                                    6766 [second-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    DeliverMessage(receiverId: 0
                                    answerId: -1 resolverId: null
                                    action: acceptFrom args:
                                    [HouseAtreides:10003/-687934017861573=
292334955567350102524989066643525,
                                    -676914875674370369045480105305401075=
435688776666,



                                    FarRefImpl(hash: 690984748)])<br>
                                    6767 [second-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    DeliverMessage(receiverId: -1
                                    answerId: -2 resolverId: null
                                    action: getTheAnswer args: [])<br>
                                    6767 [second-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    DeliverMessage(receiverId: -2
                                    answerId: -3 resolverId: null
                                    action: hashCode args: [])<br>
                                    6767 [second-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    DeliverOnlyMessage(receiverId: -2
                                    action: whenMoreResolved args:
                                    [NearRefImpl(hash: 363771261,
                                    receiver: RedirectorProxy:
                                    FarRefImpl(hash: 196981675))])<br>
                                    6768 [second-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    DeliverOnlyMessage(receiverId: 2
                                    action: value args:
                                    [NearRefImpl(hash: 1530099003,
                                    receiver: TestObject)])<br>
                                    6769 [second-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    DeliverOnlyMessage(receiverId: 3
                                    action: value args:
                                    [NearRefImpl(hash: 790206055,
                                    receiver: 42)])<br>
                                    <b>6770 [second-vat] DEBUG
                                      cc.ganymede.pauwau.presentation.Pau=
wauTerminal=A0
                                      - sending message:
                                      DeliverOnlyMessage(receiverId: 4
                                      action: value args:
                                      [NearRefImpl(hash: 878991039,
                                      receiver: 42)])</b><b><br>
                                    </b><b>6771 [second-vat] DEBUG
                                      cc.ganymede.pauwau.presentation.Pau=
wauTerminal=A0
                                      - sending message:
                                      DeliverOnlyMessage(receiverId: 5
                                      action: value args:
                                      [NearRefImpl(hash: 790206055,
                                      receiver: 42)])</b><b><br>
                                    </b>6805 [first-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    DeliverOnlyMessage(receiverId: 2
                                    action: value args:
                                    [FarRefImpl(hash: 1332394016)])<br>
                                    6805 [first-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    DeliverOnlyMessage(receiverId: 3
                                    action: value args: [42])<br>
                                    <b>6805 [first-vat] DEBUG
                                      cc.ganymede.pauwau.presentation.Pau=
wauTerminal=A0
                                      - receiving message:
                                      DeliverOnlyMessage(receiverId: 4
                                      action: value args: [42])</b><b><br=
>
                                    </b><b>6805 [first-vat] DEBUG
                                      cc.ganymede.pauwau.presentation.Pau=
wauTerminal=A0
                                      - receiving message:
                                      DeliverOnlyMessage(receiverId: 5
                                      action: value args: [42])</b><b><br=
>
                                    </b>6806 [first-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    DeliverOnlyMessage(receiverId: 3
                                    action: value args: [42])<br>
                                    19932 [first-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    GCAnswerMessage(answerId: -1)<br>
                                    19934 [first-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    GCAnswerMessage(answerId: -2)<br>
                                    19934 [first-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    GCAnswerMessage(answerId: -3)<br>
                                    19984 [second-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    GCAnswerMessage(answerId: -1)<br>
                                    19984 [second-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    GCAnswerMessage(answerId: -2)<br>
                                    19985 [second-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    GCAnswerMessage(answerId: -3)<br>
                                    29679 [third-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    GCAnswerMessage(answerId: -1)<br>
                                    29680 [third-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    DeliverOnlyMessage(receiverId: 1
                                    action: value args:
                                    [FarRefImpl(hash: 734824022)])<br>
                                    29680 [third-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    DeliverOnlyMessage(receiverId: 2
                                    action: value args:
                                    [FarRefImpl(hash: 1223086084)])<br>
                                    29680 [third-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    DeliverOnlyMessage(receiverId: 3
                                    action: value args: [42])<br>
                                    29681 [third-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    GCAnswerMessage(answerId: -1)<br>
                                    29681 [third-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    GCAnswerMessage(answerId: -2)<br>
                                    29682 [third-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - sending message:
                                    GCAnswerMessage(answerId: -2)<br>
                                    29722 [second-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    GCAnswerMessage(answerId: -1)<br>
                                    29722 [second-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    GCAnswerMessage(answerId: -2)<br>
                                    29726 [first-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    GCAnswerMessage(answerId: -1)<br>
                                    29726 [first-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    GCAnswerMessage(answerId: -2)<br>
                                    <br>
                                    <br>
                                    <br>
                                    <b>// DelayedRedirector code:</b><br>
                                    =A0=A0=A0 public void value(Object ob=
j)
                                    throws NotResolvedException {<br>
                                    =A0=A0=A0 =A0=A0=A0 if(resolver =3D=3D=
 null)<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 return;=
<br>
                                    <br>
                                    =A0=A0=A0 =A0=A0=A0 if(resolver.isFre=
sh()) {<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 resolve=
r.resolve(obj);<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 resolve=
r =3D null;<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 return;=
<br>
                                    =A0=A0=A0 =A0=A0=A0 }<br>
                                    <br>
                                    =A0=A0=A0 =A0=A0=A0 if(RefUtil.isLoca=
l(obj)) {<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 resolve=
r.resolve(obj);<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 resolve=
r =3D null;<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 return;=
<br>
                                    =A0=A0=A0 =A0=A0=A0 }<br>
                                    <br>
                                    =A0=A0=A0 =A0=A0=A0 Ref ref =3D
                                    (Ref)RefUtil.wrap(obj,
                                    resolver.handler.getVat());<br>
                                    =A0=A0=A0 =A0=A0=A0 boolean
                                    isLocalToResolverScope =3D false;<br>
                                    =A0=A0=A0 =A0=A0=A0 try {<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 isLocal=
ToResolverScope =3D
                                    RefUtil.isLocalToScope(resolver.handl=
er.scope,

                                    ref);<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0
                                    if(isLocalToResolverScope) {<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0
                                    resolver.resolve(obj);<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0=
 resolver =3D null;<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0=
 return;<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 }<br>
                                    =A0=A0=A0 =A0=A0=A0 } catch (Exceptio=
n e) {<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 reactTo=
LostClient(e);<br>
                                    =A0=A0=A0 =A0=A0=A0 }<br>
                                    <br>
                                    =A0=A0=A0 =A0=A0=A0 Pair&lt;PromiseRe=
fImpl,
                                    Resolver&gt; pair =3D
                                    RefUtil.promise(ref.getVat());<br>
                                    =A0=A0=A0 =A0=A0=A0 Redirector redire=
ctor =3D new
                                    Redirector((ProxyResolver)
                                    pair.second());<br>
                                    =A0=A0=A0 =A0=A0=A0
                                    resolver.getProxy().whenResolved(redi=
rector);<br>
                                    =A0=A0=A0 =A0=A0=A0
                                    resolver.resolve(pair.first());<br>
                                    =A0=A0=A0 =A0=A0=A0 resolver =3D null=
;<br>
                                    =A0=A0=A0 }<br>
                                    <br>
                                    <br>
                                    <b>// ProxyResolver code:</b><br>
                                    =A0=A0=A0 public void resolve(final O=
bject
                                    result) throws NotResolvedException
                                    {<br>
                                    =A0=A0=A0 =A0=A0=A0
                                    handler.scope.getVat().sendRunnable(n=
ew
                                    Runnable() {<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 public =
void run() {<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0=
 if(ref =3D=3D null)<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0=
 =A0=A0=A0 return;<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0=
 if(ref.get() =3D=3D
                                    null)<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0=
 =A0=A0=A0 return;<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0
                                    if(Exception.class.isAssignableFrom(r=
esult.getClass()))
                                    {<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0=
 }<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0=
 Ref newRef =3D
                                    RefUtil.wrap(result,
                                    handler.scope.getVat());<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0=
 try {<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0=
 =A0=A0=A0 if (newRef =3D=3D
                                    null)<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0=
 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0
                                    ref.get().getRefImpl().becomeContext(=
null);<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0=
 =A0=A0=A0 else<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0=
 =A0=A0=A0 =A0=A0=A0
                                    ref.get().getRefImpl().becomeContext(=
newRef.getRefImpl());<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0=
 =A0=A0=A0
                                    if(RefUtil.isResolved(newRef.getRefIm=
pl()))
                                    {<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0=
 =A0=A0=A0 =A0=A0=A0 handler =3D
                                    null;<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0=
 =A0=A0=A0 =A0=A0=A0 ref =3D null;<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0=
 =A0=A0=A0 }<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0=
 } catch
                                    (NotResolvedException e) {<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0=
 =A0=A0=A0 // TODO
                                    Auto-generated catch block<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0=
 =A0=A0=A0
                                    e.printStackTrace();<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0=
 }<br>
                                    =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 }});<br=
>
                                    =A0=A0=A0 }<br>
                                    <br>
                                  </blockquote>
                                  <br>
                                </div>
                              </div>
                            </div>
                            <br>
_______________________________________________<br>
                            e-lang mailing list<br>
                            <a moz-do-not-send=3D"true"
                              href=3D"mailto:[email protected]"
                              target=3D"_blank">[email protected]</=
a><br>
                            <a moz-do-not-send=3D"true"
                              href=3D"http://www.eros-os.org/mailman/list=
info/e-lang"
                              target=3D"_blank">http://www.eros-os.org/ma=
ilman/listinfo/e-lang</a><br>
                            <br>
                          </blockquote>
                        </div>
                        <br>
                        <br clear=3D"all">
                        <div><br>
                        </div>
                        -- <br>
                        <div>=A0 =A0 Cheers,<br>
                          =A0 =A0 --MarkM</div>
                      </div>
                      <br>
                      <fieldset></fieldset>
                      <br>
                      <pre>______________________________________________=
_
e-lang mailing list
<a moz-do-not-send=3D"true" href=3D"mailto:[email protected]" targe=
t=3D"_blank">[email protected]</a>
<a moz-do-not-send=3D"true" href=3D"http://www.eros-os.org/mailman/listin=
fo/e-lang" target=3D"_blank">http://www.eros-os.org/mailman/listinfo/e-la=
ng</a>
</pre>
                    </blockquote>
                    <br>
                  </div>
                </div>
                <br>
                _______________________________________________<br>
                e-lang mailing list<br>
                <a moz-do-not-send=3D"true"
                  href=3D"mailto:[email protected]">[email protected]=
s-os.org</a><br>
                <a moz-do-not-send=3D"true"
                  href=3D"http://www.eros-os.org/mailman/listinfo/e-lang"
                  target=3D"_blank">http://www.eros-os.org/mailman/listin=
fo/e-lang</a><br>
                <br>
              </blockquote>
            </div>
            <br>
            <br clear=3D"all">
            <div><br>
            </div>
            -- <br>
            <div class=3D"gmail_signature">=A0 =A0 Cheers,<br>
              =A0 =A0 --MarkM</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>
    </blockquote>
    <br>
  </body>
</html>

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

--===============2344462795294067077==--