Re: Using Vine in 3-way interactions (was Re: Question on redirectors/whenMoreResolved in the 3-way case, in the middle vat)
"Mark S. Miller" <[email protected]> Sun, 1 Mar 2015 13:56:17 -0800
| Newsgroups | gmane.comp.lang.e.general |
|---|---|
| Message-ID | <CABHxS9gPLwxyOXGLciZENBVuWHQs5F7Q+xwJ4TqRAheCpBa44w@mail.gmail.com> |
--===============0436489619222666480== Content-Type: multipart/alternative; boundary=001a1134c7bccc2aed0510412b1e --001a1134c7bccc2aed0510412b1e Content-Type: text/plain; charset=UTF-8 No, the 2-vat interactions never use, or engage in any way with, vines, promise3Desc or far3Desc. On Sun, Mar 1, 2015 at 9:37 AM, Robert Withers <[email protected]> wrote: > 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? > > - Robert > > > Rob Withers <[email protected]> wrote: > > Mark, your instincts were right on, it seems. I have an issue with my use > of the Vine and on reflection it makes perfect sense. I am bending the send > from Carol to Alice over to Bob, so as it is a 3-way interaction, I need a > Vine. 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). It is going to require some digging to unearth what I am missing, > but the direction is clear. The place it blows up is in my > ProxyResolver.resolve() method, as the WeakReference has lost the ref. > However, this is not where the reference is maintained. I suspect it may > be a lack of an IdentityManager. > > I republished my code to: https://github.com/tooantuh/pauwau. The tests > pass, though there is an issue with the RefTests and > TestPauwau2VatException, as well as this issue affecting > TestPauwau3VatFollowOnSend. Additionally, the presentation tests need to > be run one at a time as stopping and starting the Introducers can step on > each other. > > thank you, > Robert > > On 2/22/2015 8:02 PM, Mark S. Miller wrote: > > 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 > > > _______________________________________________ > e-lang mailing [email protected]://www.eros-os.org/mailman/listinfo/e-lang > > > > _______________________________________________ > e-lang mailing list > [email protected] > http://www.eros-os.org/mailman/listinfo/e-lang > > -- Cheers, --MarkM --001a1134c7bccc2aed0510412b1e Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable <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"g= mail_extra"><br><div class=3D"gmail_quote">On Sun, Mar 1, 2015 at 9:37 AM, = Robert Withers <span dir=3D"ltr"><<a href=3D"mailto:robert.w.withers@gma= il.com" target=3D"_blank">[email protected]</a>></span> wrote:<= br><blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left= :1px #ccc solid;padding-left:1ex">I have a question about elib. Do you use = promise3Desc and far3Desc for 2-vat interactions such that a vine is always= in play in any interaction?<br><br>- Robert<div class=3D"HOEnZb"><div clas= s=3D"h5"><br><br>Rob Withers <<a href=3D"mailto:[email protected]= om" target=3D"_blank">[email protected]</a>> wrote:<br><br> Mark, your instincts were right on, it seems.=C2=A0 I have an issue wit= h my use of the Vine and on reflection it makes perfect sense. I am bending the send from Carol to Alice over to Bob, so as it is a 3-way interaction, I need a Vine.=C2=A0 In analyzing ELib code, you hav= e 9 references to the Vine's constructor, while I only have 7 (minus an extra unused constructor I have).=C2=A0 It is going to require some digging to unearth what I am missing, but the direction is clear.=C2=A0 The place it blows up is in my ProxyResolver.resolve() method, as the WeakReference has lost the ref.=C2=A0 However, this is not where th= e reference is maintained.=C2=A0 I suspect it may be a lack of an IdentityManager.<br> <br> I republished my code to: <a href=3D"https://github.com/tooantuh/pauwau= " target=3D"_blank">https://github.com/tooantuh/pauwau</a>.=C2=A0 The tests pass, though there is an issue with the RefTests and TestPauwau2VatException, as well as this issue affecting TestPauwau3VatFollowOnSend.=C2=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&q= uot; at=C2=A0<a href=3D"http://erights.org/elib/distrib/captp/index.html" t= arget=3D"_blank">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/" 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 sur= e 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"><<a href=3D"mailto:robert.w.withers@= gmail.com" target=3D"_blank">[email protected]</a>></span> wrote:<br> <blockquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;bord= er-left:1px #ccc solid;padding-left:1ex"> <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 specifi= c 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.=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 an= d 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 belo= w, as well as the DelayedRedirector value() and the ProxyResolver resolve() code, at the bottom.=C2=A0 However, this is my question, what should the redirector do in Alice's Vat to propagate the resolution from Bob, back to Carol?<br> <br> Thank you,<br> - Robert<br> <br> <br> // There are 3 messages sent to Bob, from Alice:<br> // =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 fo= rward to the redirector 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 message: 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 message: 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 message: DeliverOnlyMessage(receiverId: 2 action: value args: [NearRefImpl(hash: 1323165787, receiver: cc.ganymede.pauwau.presentation.lib.vat.Vine@4842def1)]= )<br> 6403 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending message: DeliverMessage(receiverId: 0 answerId: -1 resolverId: -1 action: acceptFrom args: [HouseAtreides:10003/-687934017861573292334955567350102= 524989066643525, -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 message: DeliverMessage(receiverId: -1 answerId: -2 resolverId: -2 action: getTheAnswer args: [])<br> 6412 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending message: DeliverMessage(receiverId: -2 answerId: -3 resolverId: -3 action: hashCode args: [])<br> 6412 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending message: 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/-687934017861573292334955567350102= 524989066643525, -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 message: DeliverOnlyMessage(receiverId: 2 action: value args: [NearRefImpl(hash: 1530099003, receiver: TestObject)])<br> 6769 [second-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending message: 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 message: DeliverOnlyMessage(receiverId: 3 action: value args: [42])<br> 19932 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending message: GCAnswerMessage(answerId: -1)<br> 19934 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending message: GCAnswerMessage(answerId: -2)<br> 19934 [first-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending message: 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 message: 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 message: GCAnswerMessage(answerId: -1)<br> 29681 [third-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending message: GCAnswerMessage(answerId: -2)<br> 29682 [third-vat] DEBUG cc.ganymede.pauwau.presentation.PauwauTerminal=C2=A0 - sending message: 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 NotResolvedException {<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.isFre= sh()) {<br> =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 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.isLoca= l(obj)) {<br> =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 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(obj, resolver.handler.getVat());<br> =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 boolean isLocalTo= ResolverScope =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 isLocalToResolverScope =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(isLocalToResolverScope) {<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 (Exceptio= n e) {<br> =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2= =A0 reactToLostClient(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<PromiseRe= fImpl, Resolver> pair =3D RefUtil.promise(ref.getVat());<br> =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 Redirector redire= ctor =3D new Redirector((ProxyResolver) pair.second());<br> =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 resolver.getProxy().whenResolved(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 res= ult) throws NotResolvedException {<br> =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 handler.scope.get= Vat().sendRunnable(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 nu= ll;<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]" target=3D"_blank">e-= [email protected]</a><br> <a href=3D"http://www.eros-os.org/mailman/listinfo/e-lang" targ= et=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>=C2=A0 =C2=A0 Cheers,<br> =C2=A0 =C2=A0 --MarkM</div> </div> <br> <fieldset></fieldset> <br> <pre>_______________________________________________ e-lang mailing list <a href=3D"mailto:[email protected]" target=3D"_blank">[email protected]= os-os.org</a> <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> </pre> </blockquote> <br> </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> --001a1134c7bccc2aed0510412b1e-- --===============0436489619222666480== 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 --===============0436489619222666480==--