Re: Using Vine in 3-way interactions (was Re: Question on redirectors/whenMoreResolved in the 3-way case, in the middle vat)
Robert Withers <[email protected]> Wed, 18 Nov 2015 15:13:43 -0500
| Newsgroups | gmane.comp.lang.e.general |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format. --===============5947696094361716303== Content-Type: multipart/alternative; boundary="------------010905080509030902070204" This is a multi-part message in MIME format. --------------010905080509030902070204 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Oh Jesus, 8 months ago seems so long. I think I said it wrong because I don't mean to do so, burn my bridges. I have looked back at what you built, Mark, and the diagram showing this and it's really fine. I like that it shows that temporal flow as I think it is a unique aspect of Elib. Thank you. Robert On 11/18/2015 02:40 PM, Mark S. Miller wrote: > Note that this is an old message that may be redundant with other > messages from around the same time. I do not know why this one was > stuck in the moderator queue or why I had not noticed it till now. I > did just notice it and release it. Sorry for the temporal confusion. > > > > > On Sat, Mar 7, 2015 at 7:28 PM, Rob Withers > <[email protected] <mailto:[email protected]>> wrote: > > I truly hope not, Mark. I have this tendency to explicitly burn > bridges when I perceive they are burned, to clarify and out of > frustration that I keep bouncing. My apologies for that as it > helps no one, as well as my lack of patience for a response. I > had not realized I had posted such a challenging question. > > In consideration, if I may suggest the following. > > 1. Carol sends to Alice with a ref to Bob and Alice redirects a > call to Bob, returning a RemotePromise both in Carol and in Alice. > 2. 3-way: Carol sends a provideFor to Bob and Alice sends an > AcceptFrom to Bob. > 3. Carol sends a followOn to Alice's first resolution, which is a > RemotePromise to Bob, so this flows to Bob. > 4. 3-way: In Alice, the followOn should become a 3-way to the > followOn Resolver in Carol. So Alice would send a provideFor > to Carol and Bob would send an AcceptFrom to Carol and send > the result of the followOn to the gift resolver in Carol. > > I think I am saying this the way I am thinking it. > > Thank you. > > > On 3/7/2015 5:07 PM, Mark S. Miller wrote: >> Wait wait apologies! You did nothing at all to offend! Really! >> >> I was just saying to a current houseguest last night, as close as >> I can remember: >> >> "Have you seen the question Rob Withers has asked lately on >> e-lang about captp? It relates to race conditions and GC, but I >> haven't yet been able to reload enough context to think about it. >> Could you have a look?" We then went off on a long discussion on >> race conditions in captp-like systems x gc x partition x malice, >> how difficult it is to do a full case analysis of the cross >> product by hand, and how much automated tools could help. Sadly, >> we did not get back to the subject of your question. >> >> True story. I am posting this without first checking with the >> houseguest, which is why I'm omitting their name. >> >> I should have said something to explain my lack of response. The >> rudeness really is mine. >> >> >> >> >> On Sat, Mar 7, 2015 at 3:28 PM, Rob Withers >> <[email protected] <mailto:[email protected]>> >> wrote: >> >> Thanks for all the reticent help over the years, everyone. >> It's been fun. Such a pity that that help seems permanently >> revoked, like an untrusted capability. I must not have >> participated well in the social context, but that is par for >> the course for folks with Aspergers, I am learning. I just >> can't ever seem to say the right thing and more often than >> not, I piss people off. The issue is I truly just don't get it. >> >> Best regards, >> Robert >> >> On 3/4/2015 9:27 AM, Rob Withers wrote: >>> Might someone be able to comment on this, please? It would >>> help me a great deal. I do not think it is the >>> unimplemented far3Desc situation. >>> >>> Thanks, >>> Robert >>> >>> On 3/1/2015 3:12 PM, Rob Withers wrote: >>>> I see. Could you comment on how a Vine (and >>>> promise3Desc/far3Desc) get introduced into the machinery >>>> when a followOn msg gets forwarded to a third vat? In my >>>> example, redirectForTheAnswer sends getTheAnswer to Bob and >>>> returns a RemotePromise, which receives a hashCode followOn >>>> msg, forwarded to Bob. >>>> >>>> - Robert >>>> >>>> On 3/1/2015 2:56 PM, Mark S. Miller wrote: >>>>> 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] >>>>> <mailto:[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] >>>>> <mailto:[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] >>>>>> <mailto:[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] >>>>>> <mailto:[email protected]> >>>>>> http://www.eros-os.org/mailman/listinfo/e-lang >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Cheers, >>>>>> --MarkM >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> e-lang mailing list >>>>>> [email protected] <mailto:[email protected]> >>>>>> http://www.eros-os.org/mailman/listinfo/e-lang >>>>> >>>>> >>>>> _______________________________________________ >>>>> e-lang mailing list >>>>> [email protected] <mailto:[email protected]> >>>>> http://www.eros-os.org/mailman/listinfo/e-lang >>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> Cheers, >>>>> --MarkM >>>>> >>>>> >>>>> _______________________________________________ >>>>> e-lang mailing list >>>>> [email protected] <mailto:[email protected]> >>>>> http://www.eros-os.org/mailman/listinfo/e-lang >>>> >>> >> >> >> _______________________________________________ >> e-lang mailing list >> [email protected] <mailto:[email protected]> >> http://www.eros-os.org/mailman/listinfo/e-lang >> >> >> >> >> -- >> Cheers, >> --MarkM >> >> >> _______________________________________________ >> e-lang mailing list >> [email protected] <mailto:[email protected]> >> http://www.eros-os.org/mailman/listinfo/e-lang > > > _______________________________________________ > e-lang mailing list > [email protected] <mailto:[email protected]> > http://www.eros-os.org/mailman/listinfo/e-lang > > > > > -- > Cheers, > --MarkM --------------010905080509030902070204 Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable <html> <head> <meta content=3D"text/html; charset=3Dutf-8" http-equiv=3D"Content-Ty= pe"> </head> <body bgcolor=3D"#FFFFFF" text=3D"#000000"> Oh Jesus, 8 months ago seems so long. I think I said it wrong because I don't mean to do so, burn my bridges.<br> <br> I have looked back at what you built, Mark, and the diagram showing this and it's really fine. I like that it shows that temporal flow as I think it is a unique aspect of Elib. Thank you.<br> <br> Robert <br> <br> <br> <div class=3D"moz-cite-prefix">On 11/18/2015 02:40 PM, Mark S. Miller wrote:<br> </div> <blockquote cite=3D"mid:CABHxS9gg5RXPSxmC8xKd2ce+XcFBUm5VZyRqy1qVGyLoe7=3DOwg-Rq2MYuBUFGs@public.gmane.org= ail.com" type=3D"cite"> <div dir=3D"ltr">Note that this is an old message that may be redundant with other messages from around the same time. I do not know why this one was stuck in the moderator queue or why I had not noticed it till now. I did just notice it and release it. Sorry for the temporal confusion. <div><br> </div> <div><br> <div><br> </div> </div> </div> <div class=3D"gmail_extra"><br> <div class=3D"gmail_quote">On Sat, Mar 7, 2015 at 7:28 PM, Rob Withers <span dir=3D"ltr"><<a moz-do-not-send=3D"true" href=3D"mailto:[email protected]" 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"> <div bgcolor=3D"#FFFFFF" text=3D"#000000"> I truly hope not, Mark.=C2=A0 I have this tendency to explicitly burn bridges when I perceive they are burned, to clarify and out of frustration that I keep bouncing.=C2=A0 My apologies for th= at as it helps no one, as well as my lack of patience for a response.=C2=A0 I had not realized I had posted such a challenging question.<br> <br> In consideration, if I may suggest the following.<br> <br> <ol> <li>Carol sends to Alice with a ref to Bob and Alice redirects a call to Bob, returning a RemotePromise both in Carol and in Alice.</li> <li>3-way: Carol sends a provideFor to Bob and Alice sends an AcceptFrom to Bob.</li> <li>Carol sends a followOn to Alice's first resolution, which is a RemotePromise to Bob, so this flows to Bob.<= /li> <li>3-way: In Alice, the followOn should become a 3-way to the followOn Resolver in Carol.=C2=A0 So Alice would send a provideFor to Carol and Bob would send an AcceptFrom to Carol and send the result of the followOn to the gift resolver in Carol. </li> </ol> I think I am saying this the way I am thinking it.<br> <br> Thank you. <div> <div class=3D"h5"><br> <br> <div>On 3/7/2015 5:07 PM, Mark S. Miller wrote:<br> </div> <blockquote type=3D"cite"> <div dir=3D"ltr">Wait wait apologies! You did nothing at all to offend!=C2=A0Really! <div><br> </div> <div>I was just saying to a current houseguest last night, as close as I can remember:</div> <div><br> </div> <div>"Have you seen the question Rob Withers has asked lately on e-lang about captp? It relates to race conditions and GC, but I haven't yet been able to reload enough context to think about it. Could you have a look?" We then went off on a long discussion on race conditions in captp-like systems x gc x partition x malice, how difficult it is to do a full case analysis of the cross product by hand, and how much automated tools could help. Sadly, we did not get back to the subject of your question.</div> <div><br> </div> <div>True story. I am posting this without first checking with the houseguest, which is why I'm omitting their name.</div> <div><br> </div> <div>I should have said something to explain my lack of response. The rudeness really is mine.</d= iv> <div><br> </div> <div><br> </div> <div><br> </div> </div> <div class=3D"gmail_extra"><br> <div class=3D"gmail_quote">On Sat, Mar 7, 2015 at 3:28 PM, Rob Withers <span dir=3D"ltr"><<a moz-do-not-send=3D"true" href=3D"mailto:[email protected]" target=3D"_blank"><a class=3D"moz-txt-link-ab= breviated" href=3D"mailto:[email protected]">robert.w.withers@gm= ail.com</a></a>></span> wrote:<br> <blockquote class=3D"gmail_quote" style=3D"margin= :0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> <div bgcolor=3D"#FFFFFF" text=3D"#000000"> Than= ks for all the reticent help over the years, everyone.=C2=A0 It's been fun.=C2=A0 Such a p= ity that that help seems permanently revoked, like an untrusted capability.=C2=A0 I must not have participated well in the social context, but that is par for the course for folks with Aspergers, I am learning.=C2=A0 I just can't = ever seem to say the right thing and more often than not, I piss people off.=C2=A0 The issue = is I truly just don't get it.=C2=A0 <br> <br> Best regards, <br> <div>Robert</div> <div> <div> <br> <div>On 3/4/2015 9:27 AM, Rob Withers wrote:<br> </div> <blockquote type=3D"cite"> Might someone be able to comment on this, please?=C2=A0 It would help me a great deal.=C2=A0 I = do not think it is the unimplemented far3Desc situation.<br> <br> Thanks,<br> Robert<br> <br> <div>On 3/1/2015 3:12 PM, Rob Withers wrote:<br> </div> <blockquote type=3D"cite"> I see.=C2=A0= Could you comment on how a Vine (and promise3Desc/far3Desc) get introduced into the machinery when a followOn msg gets forwarded to a third vat?=C2=A0 In my example, redirectForTheAnswer sends getTheAnswer to Bob and returns a RemotePromise, which receives a hashCode followOn msg, forwarded to Bob.<br> <br> - Robert<br> <br> <div>On 3/1/2015 2:56 PM, Mark S. Miller wrote:<br> </div> <blockquote type=3D"cite"> <div dir=3D"ltr">No, the 2-vat interactions never use, or engage in any way with, vines, promise3Desc or far3Desc. <div><br> </div> </div> <div class=3D"gmail_extra"><br> <div class=3D"gmail_quote">On Sun= , Mar 1, 2015 at 9:37 AM, Robert Withers <span dir=3D"ltr"><<= a moz-do-not-send=3D"true" href=3D"mailto:robert.w.wit= [email protected]" target=3D"_blank"><a class=3D= "moz-txt-link-abbreviated" href=3D"mailto:[email protected]">rob= [email protected]</a></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> <div><br> <br> Rob Withers <<a moz-do-not-send=3D"true= " href=3D"mailto:[email protected]" target=3D"_blank"><a class=3D"= moz-txt-link-abbreviated" href=3D"mailto:[email protected]">robe= [email protected]</a></a>> wrote:<br> <br> Mark, your instincts were right on, it seems.=C2=A0 I have an is= sue 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.=C2=A0 In analyzing = ELib code, you have 9 references to the Vine's constructor, while I only have 7 (minus an extra unused constructor I have).=C2=A0 It is goin= g 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, t= his is not where the reference is maintained.=C2=A0 I suspe= ct it may be a lack of an IdentityManager.<br> <br> I republished my code to: <a moz-do-not-send=3D"true= " href=3D"https://github.com/tooantuh/pauwau" target=3D"_blank"><a class=3D= "moz-txt-link-freetext" href=3D"https://github.com/tooantuh/pauwau">https= ://github.com/tooantuh/pauwau</a></a>.=C2=A0 The tests pass, though there is an issue with the RefTests and TestPauwau2VatException, as well as this issue affecting TestPauwau3VatFollowOnSen= d.=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" at=C2=A0<a moz-do-not-send=3D"= true" href=3D"http://erights.org/elib/distrib/captp/index.html" target=3D"_blan= k"><a class=3D"moz-txt-link-freetext" href=3D"http://erights.org/elib/dis= trib/captp/index.html">http://erights.org/elib/distrib/captp/index.html</= a></a> <div>and in the source code of=C2=A0= <a moz-do-not-send=3D"true" href=3D"https://code.google.com/p/caja-captp/" target=3D"_blank"= ><a class=3D"moz-txt-link-freetext" href=3D"https://code.google.com/p/caj= a-captp/">https://code.google.com/p/caja-captp/</a></a></div> <div><br> </div> <div>I don't quite understand your question, so I'm not sure if this is even relevant to the answer. Is it?</div> <div><br> </div> <div><br> </div> </div> <div class=3D"gmail_extra"= ><br> <div class=3D"gmail_quot= e">On Sun, Feb 22, 2015 at 5:51 PM, Rob Withers <span dir=3D"ltr"><<= a moz-do-not-send=3D"true" href=3D"mailto:[email protected]" target=3D"_blan= k"><a class=3D"moz-txt-link-abbreviated" href=3D"mailto:robert.w.withers@= gmail.com">[email protected]</a></a>></span> wrote:<br> <blockquote class=3D"gmail_qu= ote" style=3D"margin:0 0 0 .8ex;border-left:= 1px #ccc solid;padding-lef= t:1ex"> <div bgcolor=3D"#FFF= FFF" 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><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 wa= s 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 whenMoreResolve= d directly follows the message that generates is by adding to the front of the msg queue.=C2=A0 <b= r> <br> In the 3-way case, Carol is sending a message to Alice, passing Bob.=C2=A0 Alic= e receives the message and executes, which sends a message to Bob, then returns the result to Carol.=C2=A0 In Alice's vat, the DelayedRedirect= or is resolved to the RemotePromise of the call to Bob, the return of Alice's computation and I think it sends whenMoreResolve= d 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 DelayedRedirect= or 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 forward to the redirector back in Alice.<= br> <br> 0 [main] INFO cc.ganymede.pau= wau.presentation.AbstractPauwauTest=C2=A0 - 3 Introducers starting<br> 549 [main] INFO cc.ganymede.pau= wau.presentation.AbstractPauwauTest=C2=A0 - 3 Introducers on the air<br> 4553 [main] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: DeliverMessage(= receiverId: 0 answerId: -1 resolverId: -1 action: lookupSwiss args: [49727307468178= 8564315291637588644948944089734358])<br> 4952 [first-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: DeliverMessage(= receiverId: 0 answerId: -1 resolverId: null action: lookupSwiss args: [49727307468178= 8564315291637588644948944089734358])<br> 4958 [first-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: DeliverOnlyMess= age(receiverId: 1 action: value args: [NearRefImpl(ha= sh: 109537538, receiver: TestObject)])<b= r> 4998 [third-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: DeliverOnlyMess= age(receiverId: 1 action: value args: [FarRefImpl(has= h: 68783569)])<br> 5353 [main] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: DeliverMessage(= receiverId: 0 answerId: -1 resolverId: -1 action: lookupSwiss args: [-6862548317028= 55955980329529540587585277617841038])<br> 5593 [second-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: DeliverMessage(= receiverId: 0 answerId: -1 resolverId: null action: lookupSwiss args: [-6862548317028= 55955980329529540587585277617841038])<br> 5593 [second-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: DeliverOnlyMess= age(receiverId: 1 action: value args: [NearRefImpl(ha= sh: 1530099003, receiver: TestObject)])<b= r> 6201 [main] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: DeliverMessage(= receiverId: -1 answerId: -2 resolverId: -2 action: redirectForTheA= nswer args: [RemotePromiseR= efImpl(hash: 1034568234)])<b= r> 6203 [main] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: DeliverMessage(= receiverId: 0 answerId: -2 resolverId: -2 action: provideFor args: [-5686872851960= 04884954480990488973591228663758441, RemotePromiseRe= fImpl(hash: 1034568234), -676914875674370369045480105305401075435688776666])<br> 6239 [main] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: DeliverMessage(= receiverId: -2 answerId: -3 resolverId: -3 action: hashCode args: [])<br> 6255 [second-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: DeliverMessage(= receiverId: 0 answerId: -2 resolverId: null action: provideFor args: [-5686872851960= 04884954480990488973591228663758441, NearRefImpl(has= h: 1530099003, receiver: TestObject), -67691487567437= 0369045480105305401075435688776666])<br> 6259 [second-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: DeliverOnlyMess= age(receiverId: 2 action: value args: [NearRefImpl(ha= sh: 1323165787, receiver: cc.ganymede.pauwau.presentation.lib.vat.Vine@4842def1)])<br> 6403 [first-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: DeliverMessage(= receiverId: 0 answerId: -1 resolverId: -1 action: acceptFrom args: [HouseAtreides:= 10003/-687934017861573292334955567350102524989066643525, -676914875674370369045480105305401075435688776666, cc.ganymede.pauwau.presentation.lib.vat.Vine@6a8400ff])<br> 6410 [first-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: DeliverMessage(= receiverId: -1 answerId: -2 resolverId: null action: redirectForTheA= nswer args: [RemotePromiseR= efImpl(hash: 598908224)])<br= > 6411 [first-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: DeliverMessage(= receiverId: -2 answerId: -3 resolverId: null action: hashCode args: [])<br> 6411 [first-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: DeliverMessage(= receiverId: -1 answerId: -2 resolverId: -2 action: getTheAnswer args: [])<br> 6412 [first-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: DeliverMessage(= receiverId: -2 answerId: -3 resolverId: -3 action: hashCode args: [])<br> 6412 [first-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: DeliverOnlyMess= age(receiverId: -2 action: whenMoreResolve= d args: [RedirectorProx= y: FarRefImpl(hash= : 177595052)])<br= > 6766 [second-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: DeliverMessage(= receiverId: 0 answerId: -1 resolverId: null action: acceptFrom args: [HouseAtreides:= 10003/-687934017861573292334955567350102524989066643525, -67691487567437= 0369045480105305401075435688776666, FarRefImpl(hash= : 690984748)])<br= > 6767 [second-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: DeliverMessage(= receiverId: -1 answerId: -2 resolverId: null action: getTheAnswer args: [])<br> 6767 [second-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: DeliverMessage(= receiverId: -2 answerId: -3 resolverId: null action: hashCode args: [])<br> 6767 [second-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: DeliverOnlyMess= age(receiverId: -2 action: whenMoreResolve= d args: [NearRefImpl(ha= sh: 363771261, receiver: RedirectorProxy= : FarRefImpl(hash= : 196981675))])<b= r> 6768 [second-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: DeliverOnlyMess= age(receiverId: 2 action: value args: [NearRefImpl(ha= sh: 1530099003, receiver: TestObject)])<b= r> 6769 [second-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: DeliverOnlyMess= age(receiverId: 3 action: value args: [NearRefImpl(ha= sh: 790206055, receiver: 42)])<br> <b>6770 [second-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: DeliverOnlyMess= age(receiverId: 4 action: value args: [NearRefImpl(ha= sh: 878991039, receiver: 42)])</b><b><br= > </b><b>6771 [second-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: DeliverOnlyMess= age(receiverId: 5 action: value args: [NearRefImpl(ha= sh: 790206055, receiver: 42)])</b><b><br= > </b>6805 [first-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: DeliverOnlyMess= age(receiverId: 2 action: value args: [FarRefImpl(has= h: 1332394016)])<b= r> 6805 [first-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: DeliverOnlyMess= age(receiverId: 3 action: value args: [42])<br> <b>6805 [first-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: DeliverOnlyMess= age(receiverId: 4 action: value args: [42])</b><b><br= > </b><b>6805 [first-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: DeliverOnlyMess= age(receiverId: 5 action: value args: [42])</b><b><br= > </b>6806 [first-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: DeliverOnlyMess= age(receiverId: 3 action: value args: [42])<br> 19932 [first-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: GCAnswerMessage= (answerId: -1)<br> 19934 [first-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: GCAnswerMessage= (answerId: -2)<br> 19934 [first-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: GCAnswerMessage= (answerId: -3)<br> 19984 [second-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: GCAnswerMessage= (answerId: -1)<br> 19984 [second-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: GCAnswerMessage= (answerId: -2)<br> 19985 [second-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: GCAnswerMessage= (answerId: -3)<br> 29679 [third-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: GCAnswerMessage= (answerId: -1)<br> 29680 [third-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: DeliverOnlyMess= age(receiverId: 1 action: value args: [FarRefImpl(has= h: 734824022)])<br= > 29680 [third-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: DeliverOnlyMess= age(receiverId: 2 action: value args: [FarRefImpl(has= h: 1223086084)])<b= r> 29680 [third-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: DeliverOnlyMess= age(receiverId: 3 action: value args: [42])<br> 29681 [third-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: GCAnswerMessage= (answerId: -1)<br> 29681 [third-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: GCAnswerMessage= (answerId: -2)<br> 29682 [third-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - sending message: GCAnswerMessage= (answerId: -2)<br> 29722 [second-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: GCAnswerMessage= (answerId: -1)<br> 29722 [second-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: GCAnswerMessage= (answerId: -2)<br> 29726 [first-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: GCAnswerMessage= (answerId: -1)<br> 29726 [first-vat] DEBUG cc.ganymede.pau= wau.presentation.PauwauTerminal=C2=A0 - receiving message: GCAnswerMessage= (answerId: -2)<br> <br> <br> <br> <b>// DelayedRedirect= or code:</b><br> =C2=A0=C2=A0=C2= =A0 public void value(Object obj) throws NotResolvedExce= ption {<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.isF= resh()) {<br> =C2=A0=C2=A0=C2= =A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 resolver.resolv= e(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.isLo= cal(obj)) {<br> =C2=A0=C2=A0=C2= =A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 resolver.resolv= e(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.wr= ap(obj, resolver.handler.getVat());<br> =C2=A0=C2=A0=C2= =A0 =C2=A0=C2=A0=C2=A0 boolean isLocalToResolv= erScope =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 isLocalToResolv= erScope =3D RefUtil.isLocal= ToScope(resolver.handler.scope, ref);<br> =C2=A0=C2=A0=C2= =A0 =C2=A0=C2=A0=C2=A0 =C2=A0=C2=A0=C2=A0 if(isLocalToRes= olverScope) {<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.resolv= e(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 reactToLostClie= nt(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<Promise= RefImpl, Resolver> pair =3D RefUtil.promise= (ref.getVat());<br> =C2=A0=C2=A0=C2= =A0 =C2=A0=C2=A0=C2=A0 Redirector redirector =3D new Redirector((Pro= xyResolver) pair.second());<br> =C2=A0=C2=A0=C2= =A0 =C2=A0=C2=A0=C2=A0 resolver.getPro= xy().whenResolved(redirector);<br> =C2=A0=C2=A0=C2= =A0 =C2=A0=C2=A0=C2=A0 resolver.resolv= e(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 NotResolvedExce= ption {<br> =C2=A0=C2=A0=C2= =A0 =C2=A0=C2=A0=C2=A0 handler.scope.g= etVat().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.cl= ass.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(re= sult, 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().getRe= fImpl().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().getRe= fImpl().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.isRe= solved(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;<b= r> =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 (NotResolvedExc= eption 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.printStackTra= ce();<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 moz-do-not-send= =3D"true" href=3D"mailto:[email protected]" target=3D"_blank"><a class=3D"moz= -txt-link-abbreviated" href=3D"mailto:[email protected]">e-lang@mai= l.eros-os.org</a></a><br> <a moz-do-not-send= =3D"true" href=3D"http://www.eros-os.org/mailman/listinfo/e-lang" target=3D"_blank"= ><a class=3D"moz-txt-link-freetext" href=3D"http://www.eros-os.org/mailma= n/listinfo/e-lang">http://www.eros-os.org/mailman/listinfo/e-lang</a></a>= <br> <br> </blockquote> </div> <br> <br clear=3D"all"> <div><br> </div> -- <br> <div>=C2=A0 =C2=A0 Ch= eers,<br> =C2=A0 =C2=A0 --Mar= kM</div> </div> <br> <fieldset></fieldset> <br> <pre>__________________= _____________________________ e-lang mailing list <a moz-do-not-send=3D"true" href=3D"mailto:[email protected]" targe= t=3D"_blank">[email protected]</a> <a moz-do-not-send=3D"true" href=3D"http://www.eros-os.org/mailman/listin= fo/e-lang" target=3D"_blank">http://www.eros-os.org/mailman/listinfo/e-la= ng</a> </pre> </blockquote> <br> </div> </div> <br> _______________________________________________<br> e-lang mailing list<br> <a moz-do-not-send=3D"true" href=3D"mailto:e-lang@mail.= eros-os.org" target=3D"_blank">e-lang@ma= il.eros-os.org</a><br> <a moz-do-not-send=3D"true" href=3D"http://www.eros-os.= org/mailman/listinfo/e-lang" target=3D"_blank">http://ww= w.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 moz-do-not-send=3D"true" href=3D"mailto:[email protected]" targe= t=3D"_blank">[email protected]</a> <a moz-do-not-send=3D"true" href=3D"http://www.eros-os.org/mailman/listin= fo/e-lang" target=3D"_blank">http://www.eros-os.org/mailman/listinfo/e-la= ng</a> </pre> </blockquote> <br> </blockquote> <br> </blockquote> <br> </div> </div> </div> <br> _______________________________________________<br> e-lang mailing list<br> <a moz-do-not-send=3D"true" href=3D"mailto:[email protected]" target=3D"_blank">[email protected]</a>= <br> <a moz-do-not-send=3D"true" href=3D"http://www.eros-os.org/mailman/listin= fo/e-lang" target=3D"_blank">http://www.eros-os.org/mail= man/listinfo/e-lang</a><br> <br> </blockquote> </div> <br> <br clear=3D"all"> <div><br> </div> -- <br> <div>=C2=A0 =C2=A0 Cheers,<br> =C2=A0 =C2=A0 --MarkM</div> </div> <br> <fieldset></fieldset> <br> <pre>_______________________________________________ e-lang mailing list <a moz-do-not-send=3D"true" href=3D"mailto:[email protected]" targe= t=3D"_blank">[email protected]</a> <a moz-do-not-send=3D"true" href=3D"http://www.eros-os.org/mailman/listin= fo/e-lang" target=3D"_blank">http://www.eros-os.org/mailman/listinfo/e-la= ng</a> </pre> </blockquote> <br> </div> </div> </div> <br> _______________________________________________<br> e-lang mailing list<br> <a moz-do-not-send=3D"true" href=3D"mailto:[email protected]">[email protected]= .org</a><br> <a moz-do-not-send=3D"true" href=3D"http://www.eros-os.org/mailman/listinfo/e-lang" rel=3D"noreferrer" target=3D"_blank">http://www.eros-os.org= /mailman/listinfo/e-lang</a><br> <br> </blockquote> </div> <br> <br clear=3D"all"> <div><br> </div> -- <br> <div class=3D"gmail_signature">=C2=A0 =C2=A0 Cheers,<br> =C2=A0 =C2=A0 --MarkM</div> </div> </blockquote> <br> </body> </html> --------------010905080509030902070204-- --===============5947696094361716303== 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 --===============5947696094361716303==--