Re: Question on redirectors/whenMoreResolved in the 3-way case, in the middle vat

"Mark S. Miller" <[email protected]> Sun, 22 Feb 2015 19:02:07 -0800
Newsgroups gmane.comp.lang.e.general
Message-ID <CABHxS9hp0ay46GV3A7xy2dw1uj+FYzxeTVz=un5UO=KEZsfPvA@mail.gmail.com>
--===============0139803776934535893==
Content-Type: multipart/alternative; boundary=485b397dd0cdab90b0050fb8a0cc

--485b397dd0cdab90b0050fb8a0cc
Content-Type: text/plain; charset=UTF-8

Have you looked at the Vine? Search for "Vine" at
http://erights.org/elib/distrib/captp/index.html
and in the source code of https://code.google.com/p/caja-captp/

I don't quite understand your question, so I'm not sure if this is even
relevant to the answer. Is it?



On Sun, Feb 22, 2015 at 5:51 PM, Rob Withers <[email protected]>
wrote:

>  I found some more info: it looks as if the Ref in Alice's ProxyResolver
> is being GCed, before resolution from Bob.  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?
>
> Thank you,
> - Robert
>
>
> On 2/22/2015 6:19 PM, Rob Withers wrote:
>
> I am stuck, both conceptually, as well as understanding code I wrote a
> long while ago.  I was hoping to gain a little insight from the list of the
> insides of resolution redirection in the 3-way case.  The recent change I
> have made results from my thinking I finally understand the ordering that
> MirandaMethods ensure.  I made changes such that a whenMoreResolved
> directly follows the message that generates is by adding to the front of
> the msg queue.
>
> In the 3-way case, Carol is sending a message to Alice, passing Bob.
> Alice receives the message and executes, which sends a message to Bob, then
> returns the result to Carol.  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.  What little tracing I have I am
> posting below, as well as the DelayedRedirector value() and the
> ProxyResolver resolve() code, at the bottom.  However, this is my question,
> what should the redirector do in Alice's Vat to propagate the resolution
> from Bob, back to Carol?
>
> Thank you,
> - Robert
>
>
> // There are 3 messages sent to Bob, from Alice:
> //     1) getTheAnswer, which returns 42,
> //     2) *hashCode, again 42* and
> //     3) *whenMoreResolved*, to forward to the redirector back in Alice.
>
> 0 [main] INFO cc.ganymede.pauwau.presentation.AbstractPauwauTest  - 3
> Introducers starting
> 549 [main] INFO cc.ganymede.pauwau.presentation.AbstractPauwauTest  - 3
> Introducers on the air
> 4553 [main] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: DeliverMessage(receiverId: 0 answerId: -1 resolverId: -1
> action: lookupSwiss args:
> [497273074681788564315291637588644948944089734358])
> 4952 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: DeliverMessage(receiverId: 0 answerId: -1 resolverId:
> null action: lookupSwiss args:
> [497273074681788564315291637588644948944089734358])
> 4958 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: DeliverOnlyMessage(receiverId: 1 action: value args:
> [NearRefImpl(hash: 109537538, receiver: TestObject)])
> 4998 [third-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: DeliverOnlyMessage(receiverId: 1 action: value args:
> [FarRefImpl(hash: 68783569)])
> 5353 [main] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: DeliverMessage(receiverId: 0 answerId: -1 resolverId: -1
> action: lookupSwiss args:
> [-686254831702855955980329529540587585277617841038])
> 5593 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: DeliverMessage(receiverId: 0 answerId: -1 resolverId:
> null action: lookupSwiss args:
> [-686254831702855955980329529540587585277617841038])
> 5593 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: DeliverOnlyMessage(receiverId: 1 action: value args:
> [NearRefImpl(hash: 1530099003, receiver: TestObject)])
> 6201 [main] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: DeliverMessage(receiverId: -1 answerId: -2 resolverId: -2
> action: redirectForTheAnswer args: [RemotePromiseRefImpl(hash: 1034568234)])
> 6203 [main] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: DeliverMessage(receiverId: 0 answerId: -2 resolverId: -2
> action: provideFor args:
> [-568687285196004884954480990488973591228663758441,
> RemotePromiseRefImpl(hash: 1034568234),
> -676914875674370369045480105305401075435688776666])
> 6239 [main] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: DeliverMessage(receiverId: -2 answerId: -3 resolverId: -3
> action: hashCode args: [])
> 6255 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: DeliverMessage(receiverId: 0 answerId: -2 resolverId:
> null action: provideFor args:
> [-568687285196004884954480990488973591228663758441, NearRefImpl(hash:
> 1530099003, receiver: TestObject),
> -676914875674370369045480105305401075435688776666])
> 6259 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: DeliverOnlyMessage(receiverId: 2 action: value args:
> [NearRefImpl(hash: 1323165787, receiver:
> cc.ganymede.pauwau.presentation.lib.vat.Vine@4842def1)])
> 6403 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: DeliverMessage(receiverId: 0 answerId: -1 resolverId: -1
> action: acceptFrom args:
> [HouseAtreides:10003/-687934017861573292334955567350102524989066643525,
> -676914875674370369045480105305401075435688776666,
> cc.ganymede.pauwau.presentation.lib.vat.Vine@6a8400ff])
> 6410 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: DeliverMessage(receiverId: -1 answerId: -2 resolverId:
> null action: redirectForTheAnswer args: [RemotePromiseRefImpl(hash:
> 598908224)])
> 6411 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: DeliverMessage(receiverId: -2 answerId: -3 resolverId:
> null action: hashCode args: [])
> 6411 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: DeliverMessage(receiverId: -1 answerId: -2 resolverId: -2
> action: getTheAnswer args: [])
> 6412 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: DeliverMessage(receiverId: -2 answerId: -3 resolverId: -3
> action: hashCode args: [])
> 6412 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: DeliverOnlyMessage(receiverId: -2 action: whenMoreResolved
> args: [RedirectorProxy: FarRefImpl(hash: 177595052)])
> 6766 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: DeliverMessage(receiverId: 0 answerId: -1 resolverId:
> null action: acceptFrom args:
> [HouseAtreides:10003/-687934017861573292334955567350102524989066643525,
> -676914875674370369045480105305401075435688776666, FarRefImpl(hash:
> 690984748)])
> 6767 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: DeliverMessage(receiverId: -1 answerId: -2 resolverId:
> null action: getTheAnswer args: [])
> 6767 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: DeliverMessage(receiverId: -2 answerId: -3 resolverId:
> null action: hashCode args: [])
> 6767 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: DeliverOnlyMessage(receiverId: -2 action:
> whenMoreResolved args: [NearRefImpl(hash: 363771261, receiver:
> RedirectorProxy: FarRefImpl(hash: 196981675))])
> 6768 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: DeliverOnlyMessage(receiverId: 2 action: value args:
> [NearRefImpl(hash: 1530099003, receiver: TestObject)])
> 6769 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: DeliverOnlyMessage(receiverId: 3 action: value args:
> [NearRefImpl(hash: 790206055, receiver: 42)])
> *6770 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: DeliverOnlyMessage(receiverId: 4 action: value args:
> [NearRefImpl(hash: 878991039, receiver: 42)])*
> *6771 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: DeliverOnlyMessage(receiverId: 5 action: value args:
> [NearRefImpl(hash: 790206055, receiver: 42)])*
> 6805 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: DeliverOnlyMessage(receiverId: 2 action: value args:
> [FarRefImpl(hash: 1332394016)])
> 6805 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: DeliverOnlyMessage(receiverId: 3 action: value args:
> [42])
> *6805 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: DeliverOnlyMessage(receiverId: 4 action: value args:
> [42])*
> *6805 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: DeliverOnlyMessage(receiverId: 5 action: value args:
> [42])*
> 6806 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: DeliverOnlyMessage(receiverId: 3 action: value args: [42])
> 19932 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: GCAnswerMessage(answerId: -1)
> 19934 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: GCAnswerMessage(answerId: -2)
> 19934 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: GCAnswerMessage(answerId: -3)
> 19984 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: GCAnswerMessage(answerId: -1)
> 19984 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: GCAnswerMessage(answerId: -2)
> 19985 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: GCAnswerMessage(answerId: -3)
> 29679 [third-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: GCAnswerMessage(answerId: -1)
> 29680 [third-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: DeliverOnlyMessage(receiverId: 1 action: value args:
> [FarRefImpl(hash: 734824022)])
> 29680 [third-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: DeliverOnlyMessage(receiverId: 2 action: value args:
> [FarRefImpl(hash: 1223086084)])
> 29680 [third-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: DeliverOnlyMessage(receiverId: 3 action: value args:
> [42])
> 29681 [third-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: GCAnswerMessage(answerId: -1)
> 29681 [third-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: GCAnswerMessage(answerId: -2)
> 29682 [third-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> sending message: GCAnswerMessage(answerId: -2)
> 29722 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: GCAnswerMessage(answerId: -1)
> 29722 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: GCAnswerMessage(answerId: -2)
> 29726 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: GCAnswerMessage(answerId: -1)
> 29726 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal  -
> receiving message: GCAnswerMessage(answerId: -2)
>
>
>
> *// DelayedRedirector code:*
>     public void value(Object obj) throws NotResolvedException {
>         if(resolver == null)
>             return;
>
>         if(resolver.isFresh()) {
>             resolver.resolve(obj);
>             resolver = null;
>             return;
>         }
>
>         if(RefUtil.isLocal(obj)) {
>             resolver.resolve(obj);
>             resolver = null;
>             return;
>         }
>
>         Ref ref = (Ref)RefUtil.wrap(obj, resolver.handler.getVat());
>         boolean isLocalToResolverScope = false;
>         try {
>             isLocalToResolverScope =
> RefUtil.isLocalToScope(resolver.handler.scope, ref);
>             if(isLocalToResolverScope) {
>                 resolver.resolve(obj);
>                 resolver = null;
>                 return;
>             }
>         } catch (Exception e) {
>             reactToLostClient(e);
>         }
>
>         Pair<PromiseRefImpl, Resolver> pair =
> RefUtil.promise(ref.getVat());
>         Redirector redirector = new Redirector((ProxyResolver)
> pair.second());
>         resolver.getProxy().whenResolved(redirector);
>         resolver.resolve(pair.first());
>         resolver = null;
>     }
>
>
> *// ProxyResolver code:*
>     public void resolve(final Object result) throws NotResolvedException {
>         handler.scope.getVat().sendRunnable(new Runnable() {
>             public void run() {
>                 if(ref == null)
>                     return;
>                 if(ref.get() == null)
>                     return;
>                 if(Exception.class.isAssignableFrom(result.getClass())) {
>                 }
>                 Ref newRef = RefUtil.wrap(result, handler.scope.getVat());
>                 try {
>                     if (newRef == null)
>                             ref.get().getRefImpl().becomeContext(null);
>                     else
>
> ref.get().getRefImpl().becomeContext(newRef.getRefImpl());
>                     if(RefUtil.isResolved(newRef.getRefImpl())) {
>                         handler = null;
>                         ref = null;
>                     }
>                 } catch (NotResolvedException e) {
>                     // TODO Auto-generated catch block
>                     e.printStackTrace();
>                 }
>             }});
>     }
>
>
>
> _______________________________________________
> e-lang mailing list
> [email protected]
> http://www.eros-os.org/mailman/listinfo/e-lang
>
>


-- 
    Cheers,
    --MarkM

--485b397dd0cdab90b0050fb8a0cc
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Have you looked at the Vine? Search for &quot;Vine&quot; a=
t=C2=A0<a href=3D"http://erights.org/elib/distrib/captp/index.html">http://=
erights.org/elib/distrib/captp/index.html</a><div>and in the source code of=
=C2=A0<a href=3D"https://code.google.com/p/caja-captp/">https://code.google=
.com/p/caja-captp/</a></div><div><br></div><div>I don&#39;t quite understan=
d your question, so I&#39;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 Withe=
rs <span dir=3D"ltr">&lt;<a href=3D"mailto:[email protected]" targ=
et=3D"_blank">[email protected]</a>&gt;</span> wrote:<br><blockquo=
te class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc so=
lid;padding-left:1ex">
 =20
   =20
 =20
  <div bgcolor=3D"#FFFFFF" text=3D"#000000">
    I found some more info: it looks as if the Ref in Alice&#39;s
    ProxyResolver is being GCed, before resolution from Bob.=C2=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 class=3D"h5"><br>
    <br>
    <div>On 2/22/2015 6:19 PM, Rob Withers
      wrote:<br>
    </div>
    <blockquote type=3D"cite">
     =20
      I am stuck, both conceptually, as well as understanding code I
      wrote a long while ago.=C2=A0 I was hoping to gain a little insight
      from the list of the insides of resolution redirection in the
      3-way case.=C2=A0 The recent change I have made results from my
      thinking I finally understand the ordering that MirandaMethods
      ensure.=C2=A0 I made changes such that a whenMoreResolved directly
      follows the message that generates is by adding to the front of
      the msg queue.=C2=A0 <br>
      <br>
      In the 3-way case, Carol is sending a message to Alice, passing
      Bob.=C2=A0 Alice receives the message and executes, which sends a
      message to Bob, then returns the result to Carol.=C2=A0 In Alice&#39;=
s vat,
      the DelayedRedirector is resolved to the RemotePromise of the call
      to Bob, the return of Alice&#39;s computation and I think it sends
      whenMoreResolved to the proxy of the new promise resolver of the
      send to Bob.=C2=A0 What little tracing I have I am posting below, as
      well as the DelayedRedirector value() and the ProxyResolver
      resolve() code, at the bottom.=C2=A0 However, this is my question, wh=
at
      should the redirector do in Alice&#39;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>
      // =C2=A0=C2=A0=C2=A0 1) getTheAnswer, which returns 42, <br>
      // =C2=A0=C2=A0=C2=A0 2) <b>hashCode, again 42</b> and <br>
      //=C2=A0=C2=A0 =C2=A0 3) <b>whenMoreResolved</b>, to forward to the r=
edirector
      back in Alice.<br>
      <br>
      0 [main] INFO cc.ganymede.pauwau.presentation.AbstractPauwauTest=C2=
=A0
      - 3 Introducers starting<br>
      549 [main] INFO
      cc.ganymede.pauwau.presentation.AbstractPauwauTest=C2=A0 - 3
      Introducers on the air<br>
      4553 [main] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal=C2=
=A0
      - sending message: DeliverMessage(receiverId: 0 answerId: -1
      resolverId: -1 action: lookupSwiss args:
      [497273074681788564315291637588644948944089734358])<br>
      4952 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: DeliverMessage(receiverId: 0 answerId: -1 resolverId:
      null action: lookupSwiss args:
      [497273074681788564315291637588644948944089734358])<br>
      4958 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
      DeliverOnlyMessage(receiverId: 1 action: value args:
      [NearRefImpl(hash: 109537538, receiver: TestObject)])<br>
      4998 [third-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: DeliverOnlyMessage(receiverId: 1 action: value args:
      [FarRefImpl(hash: 68783569)])<br>
      5353 [main] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal=C2=
=A0
      - sending message: DeliverMessage(receiverId: 0 answerId: -1
      resolverId: -1 action: lookupSwiss args:
      [-686254831702855955980329529540587585277617841038])<br>
      5593 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: DeliverMessage(receiverId: 0 answerId: -1 resolverId:
      null action: lookupSwiss args:
      [-686254831702855955980329529540587585277617841038])<br>
      5593 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
      DeliverOnlyMessage(receiverId: 1 action: value args:
      [NearRefImpl(hash: 1530099003, receiver: TestObject)])<br>
      6201 [main] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal=C2=
=A0
      - sending message: DeliverMessage(receiverId: -1 answerId: -2
      resolverId: -2 action: redirectForTheAnswer args:
      [RemotePromiseRefImpl(hash: 1034568234)])<br>
      6203 [main] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal=C2=
=A0
      - sending message: DeliverMessage(receiverId: 0 answerId: -2
      resolverId: -2 action: provideFor args:
      [-568687285196004884954480990488973591228663758441,
      RemotePromiseRefImpl(hash: 1034568234),
      -676914875674370369045480105305401075435688776666])<br>
      6239 [main] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal=C2=
=A0
      - sending message: DeliverMessage(receiverId: -2 answerId: -3
      resolverId: -3 action: hashCode args: [])<br>
      6255 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: DeliverMessage(receiverId: 0 answerId: -2 resolverId:
      null action: provideFor args:
      [-568687285196004884954480990488973591228663758441,
      NearRefImpl(hash: 1530099003, receiver: TestObject),
      -676914875674370369045480105305401075435688776666])<br>
      6259 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
      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.PauwauTerminal=C2=A0 - sending messag=
e:
      DeliverMessage(receiverId: 0 answerId: -1 resolverId: -1 action:
      acceptFrom args:
      [HouseAtreides:10003/-68793401786157329233495556735010252498906664352=
5,
      -676914875674370369045480105305401075435688776666,
      cc.ganymede.pauwau.presentation.lib.vat.Vine@6a8400ff])<br>
      6410 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=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.PauwauTerminal=C2=A0 - receiving
      message: DeliverMessage(receiverId: -2 answerId: -3 resolverId:
      null action: hashCode args: [])<br>
      6411 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
      DeliverMessage(receiverId: -1 answerId: -2 resolverId: -2 action:
      getTheAnswer args: [])<br>
      6412 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
      DeliverMessage(receiverId: -2 answerId: -3 resolverId: -3 action:
      hashCode args: [])<br>
      6412 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
      DeliverOnlyMessage(receiverId: -2 action: whenMoreResolved args:
      [RedirectorProxy: FarRefImpl(hash: 177595052)])<br>
      6766 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: DeliverMessage(receiverId: 0 answerId: -1 resolverId:
      null action: acceptFrom args:
      [HouseAtreides:10003/-68793401786157329233495556735010252498906664352=
5,
      -676914875674370369045480105305401075435688776666,
      FarRefImpl(hash: 690984748)])<br>
      6767 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: DeliverMessage(receiverId: -1 answerId: -2 resolverId:
      null action: getTheAnswer args: [])<br>
      6767 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: DeliverMessage(receiverId: -2 answerId: -3 resolverId:
      null action: hashCode args: [])<br>
      6767 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=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.PauwauTerminal=C2=A0 - sending messag=
e:
      DeliverOnlyMessage(receiverId: 2 action: value args:
      [NearRefImpl(hash: 1530099003, receiver: TestObject)])<br>
      6769 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
      DeliverOnlyMessage(receiverId: 3 action: value args:
      [NearRefImpl(hash: 790206055, receiver: 42)])<br>
      <b>6770 [second-vat] DEBUG
        cc.ganymede.pauwau.presentation.PauwauTerminal=C2=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.PauwauTerminal=C2=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.PauwauTerminal=C2=A0 - receiving
      message: DeliverOnlyMessage(receiverId: 2 action: value args:
      [FarRefImpl(hash: 1332394016)])<br>
      6805 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: DeliverOnlyMessage(receiverId: 3 action: value args:
      [42])<br>
      <b>6805 [first-vat] DEBUG
        cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
        message: DeliverOnlyMessage(receiverId: 4 action: value args:
        [42])</b><b><br>
      </b><b>6805 [first-vat] DEBUG
        cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
        message: DeliverOnlyMessage(receiverId: 5 action: value args:
        [42])</b><b><br>
      </b>6806 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
      DeliverOnlyMessage(receiverId: 3 action: value args: [42])<br>
      19932 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
      GCAnswerMessage(answerId: -1)<br>
      19934 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
      GCAnswerMessage(answerId: -2)<br>
      19934 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
      GCAnswerMessage(answerId: -3)<br>
      19984 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: GCAnswerMessage(answerId: -1)<br>
      19984 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: GCAnswerMessage(answerId: -2)<br>
      19985 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: GCAnswerMessage(answerId: -3)<br>
      29679 [third-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
      GCAnswerMessage(answerId: -1)<br>
      29680 [third-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: DeliverOnlyMessage(receiverId: 1 action: value args:
      [FarRefImpl(hash: 734824022)])<br>
      29680 [third-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: DeliverOnlyMessage(receiverId: 2 action: value args:
      [FarRefImpl(hash: 1223086084)])<br>
      29680 [third-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: DeliverOnlyMessage(receiverId: 3 action: value args:
      [42])<br>
      29681 [third-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
      GCAnswerMessage(answerId: -1)<br>
      29681 [third-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
      GCAnswerMessage(answerId: -2)<br>
      29682 [third-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending messag=
e:
      GCAnswerMessage(answerId: -2)<br>
      29722 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: GCAnswerMessage(answerId: -1)<br>
      29722 [second-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: GCAnswerMessage(answerId: -2)<br>
      29726 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: GCAnswerMessage(answerId: -1)<br>
      29726 [first-vat] DEBUG
      cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - receiving
      message: GCAnswerMessage(answerId: -2)<br>
      <br>
      <br>
      <br>
      <b>// DelayedRedirector code:</b><br>
      =C2=A0=C2=A0=C2=A0 public void value(Object obj) throws NotResolvedEx=
ception {<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 if(resolver =3D=3D null)<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 return;<br>
      <br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 if(resolver.isFresh()) {<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 resolver.res=
olve(obj);<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 resolver =3D=
 null;<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 return;<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 }<br>
      <br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 if(RefUtil.isLocal(obj)) {<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 resolver.res=
olve(obj);<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 resolver =3D=
 null;<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 return;<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 }<br>
      <br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Ref ref =3D (Ref)RefUtil.wrap(o=
bj,
      resolver.handler.getVat());<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 boolean isLocalToResolverScope =
=3D false;<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 try {<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 isLocalToRes=
olverScope =3D
      RefUtil.isLocalToScope(resolver.handler.scope, ref);<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 if(isLocalTo=
ResolverScope) {<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 resolver.resolve(obj);<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 resolver =3D null;<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 return;<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 }<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 } catch (Exception e) {<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 reactToLostC=
lient(e);<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 }<br>
      <br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Pair&lt;PromiseRefImpl, Resolve=
r&gt; pair =3D
      RefUtil.promise(ref.getVat());<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Redirector redirector =3D new R=
edirector((ProxyResolver)
      pair.second());<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 resolver.getProxy().whenResolve=
d(redirector);<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 resolver.resolve(pair.first());=
<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 resolver =3D null;<br>
      =C2=A0=C2=A0=C2=A0 }<br>
      <br>
      <br>
      <b>// ProxyResolver code:</b><br>
      =C2=A0=C2=A0=C2=A0 public void resolve(final Object result) throws
      NotResolvedException {<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 handler.scope.getVat().sendRunn=
able(new Runnable() {<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 public void =
run() {<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 if(ref =3D=3D null)<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 return;<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 if(ref.get() =3D=3D null)<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 return;<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0
      if(Exception.class.isAssignableFrom(result.getClass())) {<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 }<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 Ref newRef =3D RefUtil.wrap(result,
      handler.scope.getVat());<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 try {<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 if (newRef =3D=3D null)<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0
      ref.get().getRefImpl().becomeContext(null);<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 else<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0
      ref.get().getRefImpl().becomeContext(newRef.getRefImpl());<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 if(RefUtil.isResolved(newRef.getRefImpl())) {<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 handler =3D null;<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 ref =3D null;<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 }<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 } catch (NotResolvedException e) {<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 // TODO Auto-generated catch block<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 =C2=A0=C2=A0=C2=A0 e.printStackTrace();<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=
=C2=A0 }<br>
      =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 }});<br>
      =C2=A0=C2=A0=C2=A0 }<br>
      <br>
    </blockquote>
    <br>
  </div></div></div>

<br>_______________________________________________<br>
e-lang mailing list<br>
<a href=3D"mailto:[email protected]">[email protected]</a><br>
<a 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 cla=
ss=3D"gmail_signature">=C2=A0 =C2=A0 Cheers,<br>=C2=A0 =C2=A0 --MarkM</div>
</div>

--485b397dd0cdab90b0050fb8a0cc--

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

--===============0139803776934535893==--