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, 01 Mar 2015 15:12:05 -0700
Newsgroups gmane.comp.lang.e.general
Message-ID <[email protected]>
--===============6254520397845621714==
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">
    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. Miller
      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 engage 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;</span>
          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 a=
n
                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 ELib 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 lack 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/pauwau</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? Search fo=
r
                    "Vine" at=A0<a moz-do-not-send=3D"true"
                      href=3D"http://erights.org/elib/distrib/captp/index=
.html"
                      target=3D"_blank">http://erights.org/elib/distrib/c=
aptp/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/caja-=
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 at
                      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]</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 foun=
d
                          some more info: it looks as if the Ref in
                          Alice's ProxyResolver is being GCed, before
                          resolution from Bob.=A0 This is 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 hav=
e
                                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 retur=
ns
                                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.AbstractP=
auwauTest=A0
                                - 3 Introducers starting<br>
                                549 [main] INFO
                                cc.ganymede.pauwau.presentation.AbstractP=
auwauTest=A0
                                - 3 Introducers on the air<br>
                                4553 [main] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - sending message:
                                DeliverMessage(receiverId: 0 answerId:
                                -1 resolverId: -1 action: lookupSwiss
                                args:
                                [4972730746817885643152916375886449489440=
89734358])<br>
                                4952 [first-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - receiving message:
                                DeliverMessage(receiverId: 0 answerId:
                                -1 resolverId: null action: lookupSwiss
                                args:
                                [4972730746817885643152916375886449489440=
89734358])<br>
                                4958 [first-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - sending message:
                                DeliverOnlyMessage(receiverId: 1 action:
                                value args: [NearRefImpl(hash:
                                109537538, receiver: TestObject)])<br>
                                4998 [third-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - receiving message:
                                DeliverOnlyMessage(receiverId: 1 action:
                                value args: [FarRefImpl(hash:
                                68783569)])<br>
                                5353 [main] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - sending message:
                                DeliverMessage(receiverId: 0 answerId:
                                -1 resolverId: -1 action: lookupSwiss
                                args:
                                [-686254831702855955980329529540587585277=
617841038])<br>
                                5593 [second-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - receiving message:
                                DeliverMessage(receiverId: 0 answerId:
                                -1 resolverId: null action: lookupSwiss
                                args:
                                [-686254831702855955980329529540587585277=
617841038])<br>
                                5593 [second-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - sending message:
                                DeliverOnlyMessage(receiverId: 1 action:
                                value args: [NearRefImpl(hash:
                                1530099003, receiver: TestObject)])<br>
                                6201 [main] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - sending message:
                                DeliverMessage(receiverId: -1 answerId:
                                -2 resolverId: -2 action:
                                redirectForTheAnswer args:
                                [RemotePromiseRefImpl(hash:
                                1034568234)])<br>
                                6203 [main] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - sending message:
                                DeliverMessage(receiverId: 0 answerId:
                                -2 resolverId: -2 action: provideFor
                                args:
                                [-568687285196004884954480990488973591228=
663758441,
                                RemotePromiseRefImpl(hash: 1034568234),
-676914875674370369045480105305401075435688776666])<br>
                                6239 [main] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - sending message:
                                DeliverMessage(receiverId: -2 answerId:
                                -3 resolverId: -3 action: hashCode args:
                                [])<br>
                                6255 [second-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - receiving message:
                                DeliverMessage(receiverId: 0 answerId:
                                -2 resolverId: null action: provideFor
                                args:
                                [-568687285196004884954480990488973591228=
663758441,
                                NearRefImpl(hash: 1530099003, receiver:
                                TestObject),
                                -6769148756743703690454801053054010754356=
88776666])<br>
                                6259 [second-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - sending message:
                                DeliverOnlyMessage(receiverId: 2 action:
                                value args: [NearRefImpl(hash:
                                1323165787, receiver:
                                cc.ganymede.pauwau.presentation.lib.vat.V=
ine@4842def1)])<br>
                                6403 [first-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - sending message:
                                DeliverMessage(receiverId: 0 answerId:
                                -1 resolverId: -1 action: acceptFrom
                                args:
                                [HouseAtreides:10003/-6879340178615732923=
34955567350102524989066643525,
                                -6769148756743703690454801053054010754356=
88776666,

cc.ganymede.pauwau.presentation.lib.vat.Vine@6a8400ff])<br>
                                6410 [first-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=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.PauwauTer=
minal=A0
                                - receiving message:
                                DeliverMessage(receiverId: -2 answerId:
                                -3 resolverId: null action: hashCode
                                args: [])<br>
                                6411 [first-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - sending message:
                                DeliverMessage(receiverId: -1 answerId:
                                -2 resolverId: -2 action: getTheAnswer
                                args: [])<br>
                                6412 [first-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - sending message:
                                DeliverMessage(receiverId: -2 answerId:
                                -3 resolverId: -3 action: hashCode args:
                                [])<br>
                                6412 [first-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - sending message:
                                DeliverOnlyMessage(receiverId: -2
                                action: whenMoreResolved args:
                                [RedirectorProxy: FarRefImpl(hash:
                                177595052)])<br>
                                6766 [second-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - receiving message:
                                DeliverMessage(receiverId: 0 answerId:
                                -1 resolverId: null action: acceptFrom
                                args:
                                [HouseAtreides:10003/-6879340178615732923=
34955567350102524989066643525,
                                -6769148756743703690454801053054010754356=
88776666,

                                FarRefImpl(hash: 690984748)])<br>
                                6767 [second-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - receiving message:
                                DeliverMessage(receiverId: -1 answerId:
                                -2 resolverId: null action: getTheAnswer
                                args: [])<br>
                                6767 [second-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - receiving message:
                                DeliverMessage(receiverId: -2 answerId:
                                -3 resolverId: null action: hashCode
                                args: [])<br>
                                6767 [second-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=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.PauwauTer=
minal=A0
                                - sending message:
                                DeliverOnlyMessage(receiverId: 2 action:
                                value args: [NearRefImpl(hash:
                                1530099003, receiver: TestObject)])<br>
                                6769 [second-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - sending message:
                                DeliverOnlyMessage(receiverId: 3 action:
                                value args: [NearRefImpl(hash:
                                790206055, receiver: 42)])<br>
                                <b>6770 [second-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=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.PauwauT=
erminal=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.PauwauTer=
minal=A0
                                - receiving message:
                                DeliverOnlyMessage(receiverId: 2 action:
                                value args: [FarRefImpl(hash:
                                1332394016)])<br>
                                6805 [first-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - receiving message:
                                DeliverOnlyMessage(receiverId: 3 action:
                                value args: [42])<br>
                                <b>6805 [first-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - receiving message:
                                  DeliverOnlyMessage(receiverId: 4
                                  action: value args: [42])</b><b><br>
                                </b><b>6805 [first-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - receiving message:
                                  DeliverOnlyMessage(receiverId: 5
                                  action: value args: [42])</b><b><br>
                                </b>6806 [first-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - sending message:
                                DeliverOnlyMessage(receiverId: 3 action:
                                value args: [42])<br>
                                19932 [first-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - sending message:
                                GCAnswerMessage(answerId: -1)<br>
                                19934 [first-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - sending message:
                                GCAnswerMessage(answerId: -2)<br>
                                19934 [first-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - sending message:
                                GCAnswerMessage(answerId: -3)<br>
                                19984 [second-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - receiving message:
                                GCAnswerMessage(answerId: -1)<br>
                                19984 [second-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - receiving message:
                                GCAnswerMessage(answerId: -2)<br>
                                19985 [second-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - receiving message:
                                GCAnswerMessage(answerId: -3)<br>
                                29679 [third-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - sending message:
                                GCAnswerMessage(answerId: -1)<br>
                                29680 [third-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - receiving message:
                                DeliverOnlyMessage(receiverId: 1 action:
                                value args: [FarRefImpl(hash:
                                734824022)])<br>
                                29680 [third-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - receiving message:
                                DeliverOnlyMessage(receiverId: 2 action:
                                value args: [FarRefImpl(hash:
                                1223086084)])<br>
                                29680 [third-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - receiving message:
                                DeliverOnlyMessage(receiverId: 3 action:
                                value args: [42])<br>
                                29681 [third-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - sending message:
                                GCAnswerMessage(answerId: -1)<br>
                                29681 [third-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - sending message:
                                GCAnswerMessage(answerId: -2)<br>
                                29682 [third-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - sending message:
                                GCAnswerMessage(answerId: -2)<br>
                                29722 [second-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - receiving message:
                                GCAnswerMessage(answerId: -1)<br>
                                29722 [second-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - receiving message:
                                GCAnswerMessage(answerId: -2)<br>
                                29726 [first-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - receiving message:
                                GCAnswerMessage(answerId: -1)<br>
                                29726 [first-vat] DEBUG
                                cc.ganymede.pauwau.presentation.PauwauTer=
minal=A0
                                - receiving message:
                                GCAnswerMessage(answerId: -2)<br>
                                <br>
                                <br>
                                <br>
                                <b>// DelayedRedirector code:</b><br>
                                =A0=A0=A0 public void value(Object obj) t=
hrows
                                NotResolvedException {<br>
                                =A0=A0=A0 =A0=A0=A0 if(resolver =3D=3D nu=
ll)<br>
                                =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 return;<br>
                                <br>
                                =A0=A0=A0 =A0=A0=A0 if(resolver.isFresh()=
) {<br>
                                =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 resolver.re=
solve(obj);<br>
                                =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 resolver =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.isLocal(ob=
j)) {<br>
                                =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 resolver.re=
solve(obj);<br>
                                =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 resolver =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)RefU=
til.wrap(obj,
                                resolver.handler.getVat());<br>
                                =A0=A0=A0 =A0=A0=A0 boolean isLocalToReso=
lverScope =3D
                                false;<br>
                                =A0=A0=A0 =A0=A0=A0 try {<br>
                                =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 isLocalToRe=
solverScope =3D
                                RefUtil.isLocalToScope(resolver.handler.s=
cope,
                                ref);<br>
                                =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 if(isLocalT=
oResolverScope) {<br>
                                =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 r=
esolver.resolve(obj);<br>
                                =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 r=
esolver =3D null;<br>
                                =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 r=
eturn;<br>
                                =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 }<br>
                                =A0=A0=A0 =A0=A0=A0 } catch (Exception e)=
 {<br>
                                =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 reactToLost=
Client(e);<br>
                                =A0=A0=A0 =A0=A0=A0 }<br>
                                <br>
                                =A0=A0=A0 =A0=A0=A0 Pair&lt;PromiseRefImp=
l,
                                Resolver&gt; pair =3D
                                RefUtil.promise(ref.getVat());<br>
                                =A0=A0=A0 =A0=A0=A0 Redirector redirector=
 =3D new
                                Redirector((ProxyResolver)
                                pair.second());<br>
                                =A0=A0=A0 =A0=A0=A0
                                resolver.getProxy().whenResolved(redirect=
or);<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 Objec=
t
                                result) throws NotResolvedException {<br>
                                =A0=A0=A0 =A0=A0=A0
                                handler.scope.getVat().sendRunnable(new
                                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 i=
f(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 i=
f(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(resul=
t.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 R=
ef newRef =3D
                                RefUtil.wrap(result,
                                handler.scope.getVat());<br>
                                =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 t=
ry {<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(newR=
ef.getRefImpl());<br>
                                =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0
                                if(RefUtil.isResolved(newRef.getRefImpl()=
))
                                {<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>
                        _______________________________________________<b=
r>
                        e-lang mailing list<br>
                        <a moz-do-not-send=3D"true"
                          href=3D"mailto:[email protected]"
                          target=3D"_blank">[email protected]</a><b=
r>
                        <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/mailma=
n/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]=
.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/listinfo/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 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>

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

--===============6254520397845621714==--