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]> Wed, 04 Mar 2015 09:27:49 -0700
Newsgroups gmane.comp.lang.e.general
Message-ID <[email protected]>
--===============6914787648059168774==
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">
    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. 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"_bla=
nk">[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
                  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 ELib code, you have 9
                  references to the Vine's constructor, while I only
                  have 7 (minus an extra unused constructor I have).=A0 I=
t
                  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
                      for "Vine" at=A0<a moz-do-not-send=3D"true"
                        href=3D"http://erights.org/elib/distrib/captp/ind=
ex.html"
                        target=3D"_blank">http://erights.org/elib/distrib=
/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/caj=
a-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 fo=
und
                            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 m=
y
                            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 change=
s
                                  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?<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 ret=
urns
                                  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.Abstrac=
tPauwauTest=A0
                                  - 3 Introducers starting<br>
                                  549 [main] INFO
                                  cc.ganymede.pauwau.presentation.Abstrac=
tPauwauTest=A0
                                  - 3 Introducers on the air<br>
                                  4553 [main] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - sending message:
                                  DeliverMessage(receiverId: 0 answerId:
                                  -1 resolverId: -1 action: lookupSwiss
                                  args:
                                  [49727307468178856431529163758864494894=
4089734358])<br>
                                  4952 [first-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - receiving message:
                                  DeliverMessage(receiverId: 0 answerId:
                                  -1 resolverId: null action:
                                  lookupSwiss args:
                                  [49727307468178856431529163758864494894=
4089734358])<br>
                                  4958 [first-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - sending message:
                                  DeliverOnlyMessage(receiverId: 1
                                  action: value args: [NearRefImpl(hash:
                                  109537538, receiver: TestObject)])<br>
                                  4998 [third-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - receiving message:
                                  DeliverOnlyMessage(receiverId: 1
                                  action: value args: [FarRefImpl(hash:
                                  68783569)])<br>
                                  5353 [main] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - sending message:
                                  DeliverMessage(receiverId: 0 answerId:
                                  -1 resolverId: -1 action: lookupSwiss
                                  args:
                                  [-6862548317028559559803295295405875852=
77617841038])<br>
                                  5593 [second-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - receiving message:
                                  DeliverMessage(receiverId: 0 answerId:
                                  -1 resolverId: null action:
                                  lookupSwiss args:
                                  [-6862548317028559559803295295405875852=
77617841038])<br>
                                  5593 [second-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - sending message:
                                  DeliverOnlyMessage(receiverId: 1
                                  action: value args: [NearRefImpl(hash:
                                  1530099003, receiver: TestObject)])<br>
                                  6201 [main] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - sending message:
                                  DeliverMessage(receiverId: -1
                                  answerId: -2 resolverId: -2 action:
                                  redirectForTheAnswer args:
                                  [RemotePromiseRefImpl(hash:
                                  1034568234)])<br>
                                  6203 [main] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - sending message:
                                  DeliverMessage(receiverId: 0 answerId:
                                  -2 resolverId: -2 action: provideFor
                                  args:
                                  [-5686872851960048849544809904889735912=
28663758441,
                                  RemotePromiseRefImpl(hash:
                                  1034568234),
-676914875674370369045480105305401075435688776666])<br>
                                  6239 [main] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - sending message:
                                  DeliverMessage(receiverId: -2
                                  answerId: -3 resolverId: -3 action:
                                  hashCode args: [])<br>
                                  6255 [second-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - receiving message:
                                  DeliverMessage(receiverId: 0 answerId:
                                  -2 resolverId: null action: provideFor
                                  args:
                                  [-5686872851960048849544809904889735912=
28663758441,
                                  NearRefImpl(hash: 1530099003,
                                  receiver: TestObject),
                                  -67691487567437036904548010530540107543=
5688776666])<br>
                                  6259 [second-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - sending message:
                                  DeliverOnlyMessage(receiverId: 2
                                  action: value args: [NearRefImpl(hash:
                                  1323165787, receiver:
                                  cc.ganymede.pauwau.presentation.lib.vat=
.Vine@4842def1)])<br>
                                  6403 [first-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - sending message:
                                  DeliverMessage(receiverId: 0 answerId:
                                  -1 resolverId: -1 action: acceptFrom
                                  args:
                                  [HouseAtreides:10003/-68793401786157329=
2334955567350102524989066643525,
-676914875674370369045480105305401075435688776666,
cc.ganymede.pauwau.presentation.lib.vat.Vine@6a8400ff])<br>
                                  6410 [first-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=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.PauwauT=
erminal=A0
                                  - receiving message:
                                  DeliverMessage(receiverId: -2
                                  answerId: -3 resolverId: null action:
                                  hashCode args: [])<br>
                                  6411 [first-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - sending message:
                                  DeliverMessage(receiverId: -1
                                  answerId: -2 resolverId: -2 action:
                                  getTheAnswer args: [])<br>
                                  6412 [first-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - sending message:
                                  DeliverMessage(receiverId: -2
                                  answerId: -3 resolverId: -3 action:
                                  hashCode args: [])<br>
                                  6412 [first-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - sending message:
                                  DeliverOnlyMessage(receiverId: -2
                                  action: whenMoreResolved args:
                                  [RedirectorProxy: FarRefImpl(hash:
                                  177595052)])<br>
                                  6766 [second-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - receiving message:
                                  DeliverMessage(receiverId: 0 answerId:
                                  -1 resolverId: null action: acceptFrom
                                  args:
                                  [HouseAtreides:10003/-68793401786157329=
2334955567350102524989066643525,
                                  -67691487567437036904548010530540107543=
5688776666,


                                  FarRefImpl(hash: 690984748)])<br>
                                  6767 [second-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - receiving message:
                                  DeliverMessage(receiverId: -1
                                  answerId: -2 resolverId: null action:
                                  getTheAnswer args: [])<br>
                                  6767 [second-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - receiving message:
                                  DeliverMessage(receiverId: -2
                                  answerId: -3 resolverId: null action:
                                  hashCode args: [])<br>
                                  6767 [second-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=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.PauwauT=
erminal=A0
                                  - sending message:
                                  DeliverOnlyMessage(receiverId: 2
                                  action: value args: [NearRefImpl(hash:
                                  1530099003, receiver: TestObject)])<br>
                                  6769 [second-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - sending message:
                                  DeliverOnlyMessage(receiverId: 3
                                  action: value args: [NearRefImpl(hash:
                                  790206055, receiver: 42)])<br>
                                  <b>6770 [second-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=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.Pauwa=
uTerminal=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.PauwauT=
erminal=A0
                                  - receiving message:
                                  DeliverOnlyMessage(receiverId: 2
                                  action: value args: [FarRefImpl(hash:
                                  1332394016)])<br>
                                  6805 [first-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - receiving message:
                                  DeliverOnlyMessage(receiverId: 3
                                  action: value args: [42])<br>
                                  <b>6805 [first-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    DeliverOnlyMessage(receiverId: 4
                                    action: value args: [42])</b><b><br>
                                  </b><b>6805 [first-vat] DEBUG
                                    cc.ganymede.pauwau.presentation.Pauwa=
uTerminal=A0
                                    - receiving message:
                                    DeliverOnlyMessage(receiverId: 5
                                    action: value args: [42])</b><b><br>
                                  </b>6806 [first-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - sending message:
                                  DeliverOnlyMessage(receiverId: 3
                                  action: value args: [42])<br>
                                  19932 [first-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - sending message:
                                  GCAnswerMessage(answerId: -1)<br>
                                  19934 [first-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - sending message:
                                  GCAnswerMessage(answerId: -2)<br>
                                  19934 [first-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - sending message:
                                  GCAnswerMessage(answerId: -3)<br>
                                  19984 [second-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - receiving message:
                                  GCAnswerMessage(answerId: -1)<br>
                                  19984 [second-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - receiving message:
                                  GCAnswerMessage(answerId: -2)<br>
                                  19985 [second-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - receiving message:
                                  GCAnswerMessage(answerId: -3)<br>
                                  29679 [third-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - sending message:
                                  GCAnswerMessage(answerId: -1)<br>
                                  29680 [third-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - receiving message:
                                  DeliverOnlyMessage(receiverId: 1
                                  action: value args: [FarRefImpl(hash:
                                  734824022)])<br>
                                  29680 [third-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - receiving message:
                                  DeliverOnlyMessage(receiverId: 2
                                  action: value args: [FarRefImpl(hash:
                                  1223086084)])<br>
                                  29680 [third-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - receiving message:
                                  DeliverOnlyMessage(receiverId: 3
                                  action: value args: [42])<br>
                                  29681 [third-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - sending message:
                                  GCAnswerMessage(answerId: -1)<br>
                                  29681 [third-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - sending message:
                                  GCAnswerMessage(answerId: -2)<br>
                                  29682 [third-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - sending message:
                                  GCAnswerMessage(answerId: -2)<br>
                                  29722 [second-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - receiving message:
                                  GCAnswerMessage(answerId: -1)<br>
                                  29722 [second-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - receiving message:
                                  GCAnswerMessage(answerId: -2)<br>
                                  29726 [first-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - receiving message:
                                  GCAnswerMessage(answerId: -1)<br>
                                  29726 [first-vat] DEBUG
                                  cc.ganymede.pauwau.presentation.PauwauT=
erminal=A0
                                  - receiving message:
                                  GCAnswerMessage(answerId: -2)<br>
                                  <br>
                                  <br>
                                  <br>
                                  <b>// DelayedRedirector code:</b><br>
                                  =A0=A0=A0 public void value(Object obj)
                                  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;<b=
r>
                                  <br>
                                  =A0=A0=A0 =A0=A0=A0 if(resolver.isFresh=
()) {<br>
                                  =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 resolver.=
resolve(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;<b=
r>
                                  =A0=A0=A0 =A0=A0=A0 }<br>
                                  <br>
                                  =A0=A0=A0 =A0=A0=A0 if(RefUtil.isLocal(=
obj)) {<br>
                                  =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 resolver.=
resolve(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;<b=
r>
                                  =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 isLocalToRe=
solverScope
                                  =3D false;<br>
                                  =A0=A0=A0 =A0=A0=A0 try {<br>
                                  =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 isLocalTo=
ResolverScope =3D
                                  RefUtil.isLocalToScope(resolver.handler=
.scope,
                                  ref);<br>
                                  =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 if(isLoca=
lToResolverScope)
                                  {<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 (Exception =
e) {<br>
                                  =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 reactToLo=
stClient(e);<br>
                                  =A0=A0=A0 =A0=A0=A0 }<br>
                                  <br>
                                  =A0=A0=A0 =A0=A0=A0 Pair&lt;PromiseRefI=
mpl,
                                  Resolver&gt; pair =3D
                                  RefUtil.promise(ref.getVat());<br>
                                  =A0=A0=A0 =A0=A0=A0 Redirector redirect=
or =3D new
                                  Redirector((ProxyResolver)
                                  pair.second());<br>
                                  =A0=A0=A0 =A0=A0=A0
                                  resolver.getProxy().whenResolved(redire=
ctor);<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 Obj=
ect
                                  result) throws NotResolvedException {<b=
r>
                                  =A0=A0=A0 =A0=A0=A0
                                  handler.scope.getVat().sendRunnable(new
                                  Runnable() {<br>
                                  =A0=A0=A0 =A0=A0=A0 =A0=A0=A0 public vo=
id 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(res=
ult.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(nu=
ll);<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(ne=
wRef.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>
_______________________________________________<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/listin=
fo/e-lang"
                            target=3D"_blank">http://www.eros-os.org/mail=
man/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]=
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/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 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>

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

--===============6914787648059168774==--