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 "Vine" 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't quite understan= d 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 Withe= rs <span dir=3D"ltr"><<a href=3D"mailto:[email protected]" targ= et=3D"_blank">[email protected]</a>></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'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'= 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.=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'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<PromiseRefImpl, Resolve= r> 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==--