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 17:28:09 -0700
Newsgroups gmane.comp.lang.e.general
Message-ID <[email protected]>
--===============1288846968835120382==
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 truly hope not, Mark.=A0 I have this tendency to explicitly burn
    bridges when I perceive they are burned, to clarify and out of
    frustration that I keep bouncing.=A0 My apologies for that as it help=
s
    no one, as well as my lack of patience for a response.=A0 I had not
    realized I had posted such a challenging question.<br>
    <br>
    In consideration, if I may suggest the following.<br>
    <br>
    <ol>
      <li>Carol sends to Alice with a ref to Bob and Alice redirects a
        call to Bob, returning a RemotePromise both in Carol and in
        Alice.</li>
      <li>3-way: Carol sends a provideFor to Bob and Alice sends an
        AcceptFrom to Bob.</li>
      <li>Carol sends a followOn to Alice's first resolution, which is a
        RemotePromise to Bob, so this flows to Bob.</li>
      <li>3-way: In Alice, the followOn should become a 3-way to the
        followOn Resolver in Carol.=A0 So Alice would send a provideFor t=
o
        Carol and Bob would send an AcceptFrom to Carol and send the
        result of the followOn to the gift resolver in Carol. </li>
    </ol>
    I think I am saying this the way I am thinking it.<br>
    <br>
    Thank you.<br>
    <br>
    <div class=3D"moz-cite-prefix">On 3/7/2015 5:07 PM, Mark S. Miller
      wrote:<br>
    </div>
    <blockquote
cite=3D"mid:CABHxS9ix4ULB7-Fg5L320LuoAhjnLTjmWmtVHJd1Y5G_9vu3DQ-JsoAwUIsXov1KXRcyAk9cg@public.gmane.org=
l.com"
      type=3D"cite">
      <div dir=3D"ltr">Wait wait apologies! You did nothing at all to
        offend!=A0Really!
        <div><br>
        </div>
        <div>I was just saying to a current houseguest last night, as
          close as I can remember:</div>
        <div><br>
        </div>
        <div>"Have you seen the question Rob Withers has asked lately on
          e-lang about captp? It relates to race conditions and GC, but
          I haven't yet been able to reload enough context to think
          about it. Could you have a look?" We then went off on a long
          discussion on race conditions in captp-like systems x gc x
          partition x malice, how difficult it is to do a full case
          analysis of the cross product by hand, and how much automated
          tools could help. Sadly, we did not get back to the subject of
          your question.</div>
        <div><br>
        </div>
        <div>True story. I am posting this without first checking with
          the houseguest, which is why I'm omitting their name.</div>
        <div><br>
        </div>
        <div>I should have said something to explain my lack of
          response. The rudeness really is mine.</div>
        <div><br>
        </div>
        <div><br>
        </div>
        <div><br>
        </div>
      </div>
      <div class=3D"gmail_extra"><br>
        <div class=3D"gmail_quote">On Sat, Mar 7, 2015 at 3:28 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"> 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>Robert</div>
              <div>
                <div class=3D"h5"> <br>
                  <div>On 3/4/2015 9:27 AM, Rob Withers wrote:<br>
                  </div>
                  <blockquote type=3D"cite"> 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>On 3/1/2015 3:12 PM, Rob Withers wrote:<br>
                    </div>
                    <blockquote type=3D"cite"> I see.=A0 Could you commen=
t
                      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>On 3/1/2015 2:56 PM, Mark S. Miller wrote:<br>
                      </div>
                      <blockquote 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">robert.w.withers@gmail.=
com</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>
                                <div><br>
                                  <br>
                                  Rob Withers &lt;<a
                                    moz-do-not-send=3D"true"
                                    href=3D"mailto:robert.w.withers@gmail=
.com"
                                    target=3D"_blank">robert.w.withers@gm=
ail.com</a>&gt;

                                  wrote:<br>
                                  <br>
                                  Mark, your instincts were right on, it
                                  seems.=A0 I have an issue with my use o=
f
                                  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 plac=
e
                                  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 i=
t
                                  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/p=
auwau"
                                    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/d=
istrib/captp/index.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/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:robert.w.withe=
[email protected]"
                                            target=3D"_blank">robert.w.wi=
[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 found som=
e
                                            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 Wha=
t
                                                  little tracing I have
                                                  I am posting below, as
                                                  well as the
                                                  DelayedRedirector
                                                  value() and the
                                                  ProxyResolver
                                                  resolve() code, at the
                                                  bottom.=A0 However, thi=
s
                                                  is my question, what
                                                  should the redirector
                                                  do in Alice's Vat to
                                                  propagate the
                                                  resolution from Bob,
                                                  back to Carol?<br>
                                                  <br>
                                                  Thank you,<br>
                                                  - Robert<br>
                                                  <br>
                                                  <br>
                                                  // There are 3
                                                  messages sent to Bob,
                                                  from Alice:<br>
                                                  // =A0=A0=A0 1)
                                                  getTheAnswer, which
                                                  returns 42, <br>
                                                  // =A0=A0=A0 2) <b>hash=
Code,
                                                    again 42</b> and <br>
                                                  //=A0=A0 =A0 3) <b>when=
MoreResolved</b>,
                                                  to forward to the
                                                  redirector back in
                                                  Alice.<br>
                                                  <br>
                                                  0 [main] INFO
                                                  cc.ganymede.pauwau.pres=
entation.AbstractPauwauTest=A0
                                                  - 3 Introducers
                                                  starting<br>
                                                  549 [main] INFO
                                                  cc.ganymede.pauwau.pres=
entation.AbstractPauwauTest=A0
                                                  - 3 Introducers on the
                                                  air<br>
                                                  4553 [main] DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - sending message:
                                                  DeliverMessage(receiver=
Id:
                                                  0 answerId: -1
                                                  resolverId: -1 action:
                                                  lookupSwiss args:
                                                  [4972730746817885643152=
91637588644948944089734358])<br>
                                                  4952 [first-vat] DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0

                                                  - receiving message:
                                                  DeliverMessage(receiver=
Id:
                                                  0 answerId: -1
                                                  resolverId: null
                                                  action: lookupSwiss
                                                  args:
                                                  [4972730746817885643152=
91637588644948944089734358])<br>
                                                  4958 [first-vat] DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0

                                                  - sending message:
                                                  DeliverOnlyMessage(rece=
iverId:
                                                  1 action: value args:
                                                  [NearRefImpl(hash:
                                                  109537538, receiver:
                                                  TestObject)])<br>
                                                  4998 [third-vat] DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0

                                                  - receiving message:
                                                  DeliverOnlyMessage(rece=
iverId:
                                                  1 action: value args:
                                                  [FarRefImpl(hash:
                                                  68783569)])<br>
                                                  5353 [main] DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - sending message:
                                                  DeliverMessage(receiver=
Id:
                                                  0 answerId: -1
                                                  resolverId: -1 action:
                                                  lookupSwiss args:
                                                  [-686254831702855955980=
329529540587585277617841038])<br>
                                                  5593 [second-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - receiving message:
                                                  DeliverMessage(receiver=
Id:
                                                  0 answerId: -1
                                                  resolverId: null
                                                  action: lookupSwiss
                                                  args:
                                                  [-686254831702855955980=
329529540587585277617841038])<br>
                                                  5593 [second-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - sending message:
                                                  DeliverOnlyMessage(rece=
iverId:
                                                  1 action: value args:
                                                  [NearRefImpl(hash:
                                                  1530099003, receiver:
                                                  TestObject)])<br>
                                                  6201 [main] DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - sending message:
                                                  DeliverMessage(receiver=
Id:
                                                  -1 answerId: -2
                                                  resolverId: -2 action:
                                                  redirectForTheAnswer
                                                  args:
                                                  [RemotePromiseRefImpl(h=
ash:
                                                  1034568234)])<br>
                                                  6203 [main] DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - sending message:
                                                  DeliverMessage(receiver=
Id:
                                                  0 answerId: -2
                                                  resolverId: -2 action:
                                                  provideFor args:
                                                  [-568687285196004884954=
480990488973591228663758441,
                                                  RemotePromiseRefImpl(ha=
sh:

                                                  1034568234),
-676914875674370369045480105305401075435688776666])<br>
                                                  6239 [main] DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - sending message:
                                                  DeliverMessage(receiver=
Id:
                                                  -2 answerId: -3
                                                  resolverId: -3 action:
                                                  hashCode args: [])<br>
                                                  6255 [second-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - receiving message:
                                                  DeliverMessage(receiver=
Id:
                                                  0 answerId: -2
                                                  resolverId: null
                                                  action: provideFor
                                                  args:
                                                  [-568687285196004884954=
480990488973591228663758441,
                                                  NearRefImpl(hash:
                                                  1530099003, receiver:
                                                  TestObject),
                                                  -6769148756743703690454=
80105305401075435688776666])<br>
                                                  6259 [second-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - sending message:
                                                  DeliverOnlyMessage(rece=
iverId:
                                                  2 action: value args:
                                                  [NearRefImpl(hash:
                                                  1323165787, receiver:
cc.ganymede.pauwau.presentation.lib.vat.Vine@4842def1)])<br>
                                                  6403 [first-vat] DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0

                                                  - sending message:
                                                  DeliverMessage(receiver=
Id:
                                                  0 answerId: -1
                                                  resolverId: -1 action:
                                                  acceptFrom args:
                                                  [HouseAtreides:10003/-6=
87934017861573292334955567350102524989066643525,
-676914875674370369045480105305401075435688776666,
cc.ganymede.pauwau.presentation.lib.vat.Vine@6a8400ff])<br>
                                                  6410 [first-vat] DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0

                                                  - receiving message:
                                                  DeliverMessage(receiver=
Id:
                                                  -1 answerId: -2
                                                  resolverId: null
                                                  action:
                                                  redirectForTheAnswer
                                                  args:
                                                  [RemotePromiseRefImpl(h=
ash:
                                                  598908224)])<br>
                                                  6411 [first-vat] DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0

                                                  - receiving message:
                                                  DeliverMessage(receiver=
Id:
                                                  -2 answerId: -3
                                                  resolverId: null
                                                  action: hashCode args:
                                                  [])<br>
                                                  6411 [first-vat] DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0

                                                  - sending message:
                                                  DeliverMessage(receiver=
Id:
                                                  -1 answerId: -2
                                                  resolverId: -2 action:
                                                  getTheAnswer args: [])<=
br>
                                                  6412 [first-vat] DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0

                                                  - sending message:
                                                  DeliverMessage(receiver=
Id:
                                                  -2 answerId: -3
                                                  resolverId: -3 action:
                                                  hashCode args: [])<br>
                                                  6412 [first-vat] DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0

                                                  - sending message:
                                                  DeliverOnlyMessage(rece=
iverId:
                                                  -2 action:
                                                  whenMoreResolved args:
                                                  [RedirectorProxy:
                                                  FarRefImpl(hash:
                                                  177595052)])<br>
                                                  6766 [second-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - receiving message:
                                                  DeliverMessage(receiver=
Id:
                                                  0 answerId: -1
                                                  resolverId: null
                                                  action: acceptFrom
                                                  args:
                                                  [HouseAtreides:10003/-6=
87934017861573292334955567350102524989066643525,
                                                  -6769148756743703690454=
80105305401075435688776666,




                                                  FarRefImpl(hash:
                                                  690984748)])<br>
                                                  6767 [second-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - receiving message:
                                                  DeliverMessage(receiver=
Id:
                                                  -1 answerId: -2
                                                  resolverId: null
                                                  action: getTheAnswer
                                                  args: [])<br>
                                                  6767 [second-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - receiving message:
                                                  DeliverMessage(receiver=
Id:
                                                  -2 answerId: -3
                                                  resolverId: null
                                                  action: hashCode args:
                                                  [])<br>
                                                  6767 [second-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - receiving message:
                                                  DeliverOnlyMessage(rece=
iverId:
                                                  -2 action:
                                                  whenMoreResolved args:
                                                  [NearRefImpl(hash:
                                                  363771261, receiver:
                                                  RedirectorProxy:
                                                  FarRefImpl(hash:
                                                  196981675))])<br>
                                                  6768 [second-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - sending message:
                                                  DeliverOnlyMessage(rece=
iverId:
                                                  2 action: value args:
                                                  [NearRefImpl(hash:
                                                  1530099003, receiver:
                                                  TestObject)])<br>
                                                  6769 [second-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - sending message:
                                                  DeliverOnlyMessage(rece=
iverId:
                                                  3 action: value args:
                                                  [NearRefImpl(hash:
                                                  790206055, receiver:
                                                  42)])<br>
                                                  <b>6770 [second-vat]
                                                    DEBUG
                                                    cc.ganymede.pauwau.pr=
esentation.PauwauTerminal=A0
                                                    - sending message:
                                                    DeliverOnlyMessage(re=
ceiverId:
                                                    4 action: value
                                                    args:
                                                    [NearRefImpl(hash:
                                                    878991039, receiver:
                                                    42)])</b><b><br>
                                                  </b><b>6771
                                                    [second-vat] DEBUG
                                                    cc.ganymede.pauwau.pr=
esentation.PauwauTerminal=A0
                                                    - sending message:
                                                    DeliverOnlyMessage(re=
ceiverId:
                                                    5 action: value
                                                    args:
                                                    [NearRefImpl(hash:
                                                    790206055, receiver:
                                                    42)])</b><b><br>
                                                  </b>6805 [first-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - receiving message:
                                                  DeliverOnlyMessage(rece=
iverId:
                                                  2 action: value args:
                                                  [FarRefImpl(hash:
                                                  1332394016)])<br>
                                                  6805 [first-vat] DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0

                                                  - receiving message:
                                                  DeliverOnlyMessage(rece=
iverId:
                                                  3 action: value args:
                                                  [42])<br>
                                                  <b>6805 [first-vat]
                                                    DEBUG
                                                    cc.ganymede.pauwau.pr=
esentation.PauwauTerminal=A0
                                                    - receiving message:
                                                    DeliverOnlyMessage(re=
ceiverId:
                                                    4 action: value
                                                    args: [42])</b><b><br=
>
                                                  </b><b>6805
                                                    [first-vat] DEBUG
                                                    cc.ganymede.pauwau.pr=
esentation.PauwauTerminal=A0
                                                    - receiving message:
                                                    DeliverOnlyMessage(re=
ceiverId:
                                                    5 action: value
                                                    args: [42])</b><b><br=
>
                                                  </b>6806 [first-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - sending message:
                                                  DeliverOnlyMessage(rece=
iverId:
                                                  3 action: value args:
                                                  [42])<br>
                                                  19932 [first-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - sending message:
                                                  GCAnswerMessage(answerI=
d:
                                                  -1)<br>
                                                  19934 [first-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - sending message:
                                                  GCAnswerMessage(answerI=
d:
                                                  -2)<br>
                                                  19934 [first-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - sending message:
                                                  GCAnswerMessage(answerI=
d:
                                                  -3)<br>
                                                  19984 [second-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - receiving message:
                                                  GCAnswerMessage(answerI=
d:
                                                  -1)<br>
                                                  19984 [second-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - receiving message:
                                                  GCAnswerMessage(answerI=
d:
                                                  -2)<br>
                                                  19985 [second-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - receiving message:
                                                  GCAnswerMessage(answerI=
d:
                                                  -3)<br>
                                                  29679 [third-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - sending message:
                                                  GCAnswerMessage(answerI=
d:
                                                  -1)<br>
                                                  29680 [third-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - receiving message:
                                                  DeliverOnlyMessage(rece=
iverId:
                                                  1 action: value args:
                                                  [FarRefImpl(hash:
                                                  734824022)])<br>
                                                  29680 [third-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - receiving message:
                                                  DeliverOnlyMessage(rece=
iverId:
                                                  2 action: value args:
                                                  [FarRefImpl(hash:
                                                  1223086084)])<br>
                                                  29680 [third-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - receiving message:
                                                  DeliverOnlyMessage(rece=
iverId:
                                                  3 action: value args:
                                                  [42])<br>
                                                  29681 [third-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - sending message:
                                                  GCAnswerMessage(answerI=
d:
                                                  -1)<br>
                                                  29681 [third-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - sending message:
                                                  GCAnswerMessage(answerI=
d:
                                                  -2)<br>
                                                  29682 [third-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - sending message:
                                                  GCAnswerMessage(answerI=
d:
                                                  -2)<br>
                                                  29722 [second-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - receiving message:
                                                  GCAnswerMessage(answerI=
d:
                                                  -1)<br>
                                                  29722 [second-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - receiving message:
                                                  GCAnswerMessage(answerI=
d:
                                                  -2)<br>
                                                  29726 [first-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - receiving message:
                                                  GCAnswerMessage(answerI=
d:
                                                  -1)<br>
                                                  29726 [first-vat]
                                                  DEBUG
                                                  cc.ganymede.pauwau.pres=
entation.PauwauTerminal=A0
                                                  - receiving message:
                                                  GCAnswerMessage(answerI=
d:
                                                  -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;<br>
                                                  <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;<br>
                                                  =A0=A0=A0 =A0=A0=A0 }<b=
r>
                                                  <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;<br>
                                                  =A0=A0=A0 =A0=A0=A0 }<b=
r>
                                                  <br>
                                                  =A0=A0=A0 =A0=A0=A0 Ref=
 ref =3D
                                                  (Ref)RefUtil.wrap(obj,
resolver.handler.getVat());<br>
                                                  =A0=A0=A0 =A0=A0=A0 boo=
lean
                                                  isLocalToResolverScope
                                                  =3D false;<br>
                                                  =A0=A0=A0 =A0=A0=A0 try=
 {<br>
                                                  =A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0
                                                  isLocalToResolverScope
                                                  =3D
                                                  RefUtil.isLocalToScope(=
resolver.handler.scope,
                                                  ref);<br>
                                                  =A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0
                                                  if(isLocalToResolverSco=
pe)
                                                  {<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 } c=
atch
                                                  (Exception e) {<br>
                                                  =A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0
                                                  reactToLostClient(e);<b=
r>
                                                  =A0=A0=A0 =A0=A0=A0 }<b=
r>
                                                  <br>
                                                  =A0=A0=A0 =A0=A0=A0
                                                  Pair&lt;PromiseRefImpl,
                                                  Resolver&gt; pair =3D
                                                  RefUtil.promise(ref.get=
Vat());<br>
                                                  =A0=A0=A0 =A0=A0=A0 Red=
irector
                                                  redirector =3D new
                                                  Redirector((ProxyResolv=
er)
                                                  pair.second());<br>
                                                  =A0=A0=A0 =A0=A0=A0
                                                  resolver.getProxy().whe=
nResolved(redirector);<br>
                                                  =A0=A0=A0 =A0=A0=A0
                                                  resolver.resolve(pair.f=
irst());<br>
                                                  =A0=A0=A0 =A0=A0=A0 res=
olver =3D
                                                  null;<br>
                                                  =A0=A0=A0 }<br>
                                                  <br>
                                                  <br>
                                                  <b>// ProxyResolver
                                                    code:</b><br>
                                                  =A0=A0=A0 public void
                                                  resolve(final Object
                                                  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 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 nul=
l)<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.isAs=
signableFrom(result.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(n=
ewRef.getRefImpl()))
                                                  {<br>
                                                  =A0=A0=A0 =A0=A0=A0 =A0=
=A0=A0 =A0=A0=A0 =A0=A0=A0
                                                  =A0=A0=A0 handler =3D n=
ull;<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]=
os-os.org"
                                            target=3D"_blank">e-lang@mail=
.eros-os.org</a><br>
                                          <a moz-do-not-send=3D"true"
                                            href=3D"http://www.eros-os.or=
g/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>=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]"
                                target=3D"_blank">[email protected]=
</a><br>
                              <a moz-do-not-send=3D"true"
                                href=3D"http://www.eros-os.org/mailman/li=
stinfo/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>=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>
                    </blockquote>
                    <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]">[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>

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

--===============1288846968835120382==--